From f11588a842999a0f456569017efd865980816e0d Mon Sep 17 00:00:00 2001 From: Adam Wardell Date: Wed, 29 Nov 2023 21:34:23 -0800 Subject: [PATCH 001/263] add note for windows users to add vs toolchain --- .../development/configuring_an_ide/clion.rst | 13 +++++++++++++ .../img/clion_visual_studio_toolchain.webp | Bin 0 -> 32844 bytes 2 files changed, 13 insertions(+) create mode 100644 contributing/development/configuring_an_ide/img/clion_visual_studio_toolchain.webp diff --git a/contributing/development/configuring_an_ide/clion.rst b/contributing/development/configuring_an_ide/clion.rst index 2a715f2db..5510de865 100644 --- a/contributing/development/configuring_an_ide/clion.rst +++ b/contributing/development/configuring_an_ide/clion.rst @@ -17,6 +17,19 @@ CLion can import a project's `compilation database file Build, Execution, Deployment > Toolchains** + - Click the **+** button and select ``Visual Studio`` + - CLion will attempt to detect your Visual Studio installation. If it is unsuccessful, use the file icon to the right of ``Toolset:`` to select the directory with your Visual Studio installation. + + You may exit and reload CLion and it will reload ``compile_commands.json`` + +.. figure:: img/clion_visual_studio_toolchain.webp + :align: center + Compiling and debugging the project ----------------------------------- diff --git a/contributing/development/configuring_an_ide/img/clion_visual_studio_toolchain.webp b/contributing/development/configuring_an_ide/img/clion_visual_studio_toolchain.webp new file mode 100644 index 0000000000000000000000000000000000000000..33a2f03dfc4bcae30874f2ff62f6de1d920f3cd1 GIT binary patch literal 32844 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 literal 0 HcmV?d00001 From da6c03ba796ec72ecca19d620aa3bf1350ae6a8a Mon Sep 17 00:00:00 2001 From: Bernat Arlandis Date: Tue, 4 Feb 2025 16:42:08 +0100 Subject: [PATCH 002/263] Add information about video seeks --- tutorials/animation/playing_videos.rst | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tutorials/animation/playing_videos.rst b/tutorials/animation/playing_videos.rst index c556e87ef..c5c8864cb 100644 --- a/tutorials/animation/playing_videos.rst +++ b/tutorials/animation/playing_videos.rst @@ -152,11 +152,11 @@ Playback limitations There are several limitations with the current implementation of video playback in Godot: -- Seeking a video to a certain point is not supported. - Changing playback speed is not supported. VideoStreamPlayer also won't follow :ref:`Engine.time_scale`. - Streaming a video from a URL is not supported. -- Only mono and stereo audio output is supported. +- Only mono and stereo audio output is supported. Videos with 4, 5.1 and 7.1 + audio channels are supported but down-mixed to stereo. .. _doc_playing_videos_recommended_theora_encoding_settings: @@ -238,6 +238,13 @@ increases. The default size (``12``) is too low for most types of content, it's therefore recommended to test higher GOP sizes before reducing video quality. Values between ``64`` and ``512`` usually give the best compression. +.. note:: + + Higher GOP sizes will increase max seek times with a sudden increase when + going beyond powers of two starting at ``64``. Max seek times with GOP size + ``65`` can be almost twice as long as with GOP size ``64``, depending on + decoding speed. + FFmpeg: Convert while preserving original video resolution ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From da33f97e63274ca66b8e7add10616fafddaf9a97 Mon Sep 17 00:00:00 2001 From: Thaddeus Crews Date: Mon, 10 Mar 2025 09:28:29 -0500 Subject: [PATCH 003/263] Style: Integrate new `#pragma once` syntax --- .../development/code_style_guidelines.rst | 7 +----- .../binding_to_external_libraries.rst | 5 +---- .../core_and_modules/custom_godot_servers.rst | 5 +---- .../custom_modules_in_cpp.rst | 10 ++------- .../custom_resource_format_loaders.rst | 12 +++------- .../core_and_modules/unit_testing.rst | 5 +---- .../development/cpp_usage_guidelines.rst | 9 ++++---- .../performance/using_multiple_threads.rst | 15 +++---------- .../gdextension/gdextension_c_example.rst | 22 ++++--------------- .../gdextension/gdextension_cpp_example.rst | 13 +++-------- 10 files changed, 24 insertions(+), 79 deletions(-) diff --git a/contributing/development/code_style_guidelines.rst b/contributing/development/code_style_guidelines.rst index 80b69e5bd..da7611e46 100644 --- a/contributing/development/code_style_guidelines.rst +++ b/contributing/development/code_style_guidelines.rst @@ -203,8 +203,7 @@ Example: /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /**************************************************************************/ - #ifndef MY_NEW_FILE_H - #define MY_NEW_FILE_H + #pragma once #include "core/hash_map.h" #include "core/list.h" @@ -212,10 +211,6 @@ Example: #include - ... - - #endif // MY_NEW_FILE_H - .. code-block:: cpp :caption: my_new_file.cpp diff --git a/contributing/development/core_and_modules/binding_to_external_libraries.rst b/contributing/development/core_and_modules/binding_to_external_libraries.rst index 930865b86..b92ce9b2c 100644 --- a/contributing/development/core_and_modules/binding_to_external_libraries.rst +++ b/contributing/development/core_and_modules/binding_to_external_libraries.rst @@ -22,8 +22,7 @@ Next, you will create a header file with a TTS class: .. code-block:: cpp :caption: godot/modules/tts/tts.h - #ifndef GODOT_TTS_H - #define GODOT_TTS_H + #pragma once #include "core/object/ref_counted.h" @@ -39,8 +38,6 @@ Next, you will create a header file with a TTS class: TTS(); }; - #endif // GODOT_TTS_H - And then you'll add the cpp file. .. code-block:: cpp diff --git a/contributing/development/core_and_modules/custom_godot_servers.rst b/contributing/development/core_and_modules/custom_godot_servers.rst index f88cfbffe..7ace36705 100644 --- a/contributing/development/core_and_modules/custom_godot_servers.rst +++ b/contributing/development/core_and_modules/custom_godot_servers.rst @@ -41,8 +41,7 @@ an initialization state and a cleanup procedure. .. code-block:: cpp :caption: hilbert_hotel.h - #ifndef HILBERT_HOTEL_H - #define HILBERT_HOTEL_H + #pragma once #include "core/object/object.h" #include "core/os/thread.h" @@ -91,8 +90,6 @@ an initialization state and a cleanup procedure. HilbertHotel(); }; - #endif - .. code-block:: cpp :caption: hilbert_hotel.cpp diff --git a/contributing/development/core_and_modules/custom_modules_in_cpp.rst b/contributing/development/core_and_modules/custom_modules_in_cpp.rst index 14afdf5fa..e01e826df 100644 --- a/contributing/development/core_and_modules/custom_modules_in_cpp.rst +++ b/contributing/development/core_and_modules/custom_modules_in_cpp.rst @@ -47,8 +47,7 @@ Inside we will create a summator class: .. code-block:: cpp :caption: godot/modules/summator/summator.h - #ifndef SUMMATOR_H - #define SUMMATOR_H + #pragma once #include "core/object/ref_counted.h" @@ -68,8 +67,6 @@ Inside we will create a summator class: Summator(); }; - #endif // SUMMATOR_H - And then the cpp file. .. code-block:: cpp @@ -621,8 +618,7 @@ The procedure is the following: .. code-block:: cpp :caption: godot/modules/summator/tests/test_summator.h - #ifndef TEST_SUMMATOR_H - #define TEST_SUMMATOR_H + #pragma once #include "tests/test_macros.h" @@ -649,8 +645,6 @@ The procedure is the following: } // namespace TestSummator - #endif // TEST_SUMMATOR_H - 4. Compile the engine with ``scons tests=yes``, and run the tests with the following command: diff --git a/contributing/development/core_and_modules/custom_resource_format_loaders.rst b/contributing/development/core_and_modules/custom_resource_format_loaders.rst index 4a40cf056..98fb1cb29 100644 --- a/contributing/development/core_and_modules/custom_resource_format_loaders.rst +++ b/contributing/development/core_and_modules/custom_resource_format_loaders.rst @@ -58,8 +58,7 @@ read and handle data serialization. .. code-block:: cpp :caption: resource_loader_json.h - #ifndef RESOURCE_LOADER_JSON_H - #define RESOURCE_LOADER_JSON_H + #pragma once #include "core/io/resource_loader.h" @@ -71,7 +70,6 @@ read and handle data serialization. virtual bool handles_type(const String &p_type) const; virtual String get_resource_type(const String &p_path) const; }; - #endif // RESOURCE_LOADER_JSON_H .. code-block:: cpp :caption: resource_loader_json.cpp @@ -112,8 +110,7 @@ If you'd like to be able to edit and save a resource, you can implement a .. code-block:: cpp :caption: resource_saver_json.h - #ifndef RESOURCE_SAVER_JSON_H - #define RESOURCE_SAVER_JSON_H + #pragma once #include "core/io/resource_saver.h" @@ -124,7 +121,6 @@ If you'd like to be able to edit and save a resource, you can implement a virtual bool recognize(const RES &p_resource) const; virtual void get_recognized_extensions(const RES &p_resource, List *r_extensions) const; }; - #endif // RESOURCE_SAVER_JSON_H .. code-block:: cpp :caption: resource_saver_json.cpp @@ -162,8 +158,7 @@ Here is an example of creating a custom datatype: .. code-block:: cpp :caption: resource_json.h - #ifndef RESOURCE_JSON_H - #define RESOURCE_JSON_H + #pragma once #include "core/io/json.h" #include "core/variant_parser.h" @@ -189,7 +184,6 @@ Here is an example of creating a custom datatype: void set_dict(const Dictionary &p_dict); Dictionary get_dict(); }; - #endif // RESOURCE_JSON_H .. code-block:: cpp :caption: resource_json.cpp diff --git a/contributing/development/core_and_modules/unit_testing.rst b/contributing/development/core_and_modules/unit_testing.rst index e9d94db7b..c44f9ba1c 100644 --- a/contributing/development/core_and_modules/unit_testing.rst +++ b/contributing/development/core_and_modules/unit_testing.rst @@ -113,8 +113,7 @@ Here's a minimal working test suite with a single test case written: .. code-block:: cpp - #ifndef TEST_STRING_H - #define TEST_STRING_H + #pragma once #include "tests/test_macros.h" @@ -127,8 +126,6 @@ Here's a minimal working test suite with a single test case written: } // namespace TestString - #endif // TEST_STRING_H - .. note:: You can quickly generate new tests using the ``create_test.py`` script found in the ``tests/`` directory. This script automatically creates a new test file with the required boilerplate code in the appropriate location. diff --git a/contributing/development/cpp_usage_guidelines.rst b/contributing/development/cpp_usage_guidelines.rst index 9f0032a26..f6ccb5b92 100644 --- a/contributing/development/cpp_usage_guidelines.rst +++ b/contributing/development/cpp_usage_guidelines.rst @@ -94,11 +94,12 @@ Lambdas should be used conservatively when they make code effectively faster or simpler, and do not impede readability. Please ask before using lambdas in a pull request. -``#pragma once`` directive -~~~~~~~~~~~~~~~~~~~~~~~~~~ +``#ifdef``-based include guards +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -To follow the existing style, please use standard ``#ifdef``-based include -guards instead of ``#pragma once`` in new files. +Starting with 4.5, all files now use the ``#pragma once`` directive, as they +improve readability and declutter macros. Use of ``#ifdef``-based include +guards are now actively discouraged. ``try``-``catch`` blocks ~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/tutorials/performance/using_multiple_threads.rst b/tutorials/performance/using_multiple_threads.rst index 1943162e7..e06cc3379 100644 --- a/tutorials/performance/using_multiple_threads.rst +++ b/tutorials/performance/using_multiple_threads.rst @@ -49,8 +49,7 @@ To create a thread, use the following code: .. code-tab:: cpp C++ .H File - #ifndef MULTITHREADING_DEMO_H - #define MULTITHREADING_DEMO_H + #pragma once #include #include @@ -74,8 +73,6 @@ To create a thread, use the following code: }; } // namespace godot - #endif // MULTITHREADING_DEMO_H - .. code-tab:: cpp C++ .CPP File #include "multithreading_demo.h" @@ -209,8 +206,7 @@ Here is an example of using a Mutex: .. code-tab:: cpp C++ .H File - #ifndef MUTEX_DEMO_H - #define MUTEX_DEMO_H + #pragma once #include #include @@ -237,8 +233,6 @@ Here is an example of using a Mutex: }; } // namespace godot - #endif // MUTEX_DEMO_H - .. code-tab:: cpp C++ .CPP File #include "mutex_demo.h" @@ -379,8 +373,7 @@ ready to be processed: .. code-tab:: cpp C++ .H File - #ifndef SEMAPHORE_DEMO_H - #define SEMAPHORE_DEMO_H + #pragma once #include #include @@ -412,8 +405,6 @@ ready to be processed: }; } // namespace godot - #endif // SEMAPHORE_DEMO_H - .. code-tab:: cpp C++ .CPP File #include "semaphore_demo.h" diff --git a/tutorials/scripting/gdextension/gdextension_c_example.rst b/tutorials/scripting/gdextension/gdextension_c_example.rst index 1f1ef7f17..50760aca7 100644 --- a/tutorials/scripting/gdextension/gdextension_c_example.rst +++ b/tutorials/scripting/gdextension/gdextension_c_example.rst @@ -133,8 +133,7 @@ Create the file ``init.h`` in the ``src`` folder, with the following contents: .. code-block:: c - #ifndef INIT_H - #define INIT_H + #pragma once #include "defs.h" @@ -144,8 +143,6 @@ Create the file ``init.h`` in the ``src`` folder, with the following contents: void deinitialize_gdexample_module(void *p_userdata, GDExtensionInitializationLevel p_level); GDExtensionBool GDE_EXPORT gdexample_library_init(GDExtensionInterfaceGetProcAddress p_get_proc_address, GDExtensionClassLibraryPtr p_library, GDExtensionInitialization *r_initialization); - #endif // INIT_H - The functions declared here have the signatures expected by the GDExtension API. Note the inclusion of the ``defs.h`` file. This is one of our helpers to @@ -158,8 +155,7 @@ Create the ``defs.h`` file in the ``src`` folder with the following contents: .. code-block:: c - #ifndef DEFS_H - #define DEFS_H + #pragma once #include #include @@ -175,8 +171,6 @@ Create the ``defs.h`` file in the ``src`` folder with the following contents: #endif #endif // ! GDE_EXPORT - #endif // DEFS_H - We also include some standard headers to make things easier. Now we only have to include ``defs.h`` and those will come as a bonus. @@ -224,8 +218,7 @@ contents: .. code-block:: c - #ifndef GDEXAMPLE_H - #define GDEXAMPLE_H + #pragma once #include "gdextension_interface.h" @@ -247,8 +240,6 @@ contents: // Bindings. void gdexample_class_bind_methods(); - #endif // GDEXAMPLE_H - Noteworthy here is the ``object`` field, which holds a pointer to the Godot object, and the ``gdexample_class_bind_methods()`` function, which will register the metadata of our custom class (properties, methods, and signals). @@ -299,8 +290,7 @@ We'll start by creating an ``api.h`` file in the ``src`` folder: .. code-block:: c - #ifndef API_H - #define API_H + #pragma once /* This file works as a collection of helpers to call the GDExtension API @@ -333,10 +323,6 @@ We'll start by creating an ``api.h`` file in the ``src`` folder: void load_api(GDExtensionInterfaceGetProcAddress p_get_proc_address); - - - #endif // API_H - This file will include many other helpers as we fill our extension with something useful. For now it only has a pointer to a function that creates a StringName from a C string (in Latin-1 encoding) and another to destruct a diff --git a/tutorials/scripting/gdextension/gdextension_cpp_example.rst b/tutorials/scripting/gdextension/gdextension_cpp_example.rst index 844693d01..21cdd6f81 100644 --- a/tutorials/scripting/gdextension/gdextension_cpp_example.rst +++ b/tutorials/scripting/gdextension/gdextension_cpp_example.rst @@ -164,8 +164,7 @@ GDExtension node we'll be creating. We will name it ``gdexample.h``: .. code-block:: cpp :caption: gdextension_cpp_example/src/gdexample.h - #ifndef GDEXAMPLE_H - #define GDEXAMPLE_H + #pragma once #include @@ -187,9 +186,7 @@ GDExtension node we'll be creating. We will name it ``gdexample.h``: void _process(double delta) override; }; - } - - #endif + } // namespace godot There are a few things of note to the above. We include ``sprite2d.hpp`` which contains bindings to the Sprite2D class. We'll be extending this class in our @@ -313,8 +310,7 @@ At last, we need the header file for the ``register_types.cpp`` named .. code-block:: cpp :caption: gdextension_cpp_example/src/register_types.h - #ifndef GDEXAMPLE_REGISTER_TYPES_H - #define GDEXAMPLE_REGISTER_TYPES_H + #pragma once #include @@ -323,9 +319,6 @@ At last, we need the header file for the ``register_types.cpp`` named void initialize_example_module(ModuleInitializationLevel p_level); void uninitialize_example_module(ModuleInitializationLevel p_level); - #endif // GDEXAMPLE_REGISTER_TYPES_H - - Compiling the plugin -------------------- From 87435b46c660c5b59002f170e8f3604b63a54073 Mon Sep 17 00:00:00 2001 From: WSQS Date: Tue, 11 Mar 2025 17:32:56 +0800 Subject: [PATCH 004/263] Update android_library.rst Add an example for using getCommandLine(). Showing the format for loading pck file in android. --- tutorials/platform/android/android_library.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tutorials/platform/android/android_library.rst b/tutorials/platform/android/android_library.rst index 63e18b846..52beb5a47 100644 --- a/tutorials/platform/android/android_library.rst +++ b/tutorials/platform/android/android_library.rst @@ -179,6 +179,8 @@ Below we break-down the steps used to create the GLTF Viewer app. to the Android app's ``assets`` directory. Using this approach requires passing the ``--main-pack `` argument to the hosted Godot Engine instance using `GodotHost#getCommandLine() `_. + Example:``return List.of("--main-pac","ref://foo.pck");`` + The instructions below and the sample app follow the first approach of creating the Godot project in the Android app's ``assets`` directory. From 7314111d55eb0c28fe3953358c7f6e39a120f567 Mon Sep 17 00:00:00 2001 From: WSQS Date: Wed, 12 Mar 2025 10:47:47 +0800 Subject: [PATCH 005/263] Update tutorials/platform/android/android_library.rst add mising k Co-authored-by: David Snopek --- tutorials/platform/android/android_library.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/platform/android/android_library.rst b/tutorials/platform/android/android_library.rst index 52beb5a47..073b55c0b 100644 --- a/tutorials/platform/android/android_library.rst +++ b/tutorials/platform/android/android_library.rst @@ -179,7 +179,7 @@ Below we break-down the steps used to create the GLTF Viewer app. to the Android app's ``assets`` directory. Using this approach requires passing the ``--main-pack `` argument to the hosted Godot Engine instance using `GodotHost#getCommandLine() `_. - Example:``return List.of("--main-pac","ref://foo.pck");`` + Example:``return List.of("--main-pack","ref://foo.pck");`` The instructions below and the sample app follow the first approach of creating the Godot project in the Android app's ``assets`` directory. From d43055095c4100fd19cd8c79e7a6240d37e8ba04 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Fri, 28 Mar 2025 19:38:03 +0100 Subject: [PATCH 006/263] Document file logging in Data paths --- .../introduction_to_the_buildsystem.rst | 2 + .../exporting_for_dedicated_servers.rst | 5 ++- tutorials/io/data_paths.rst | 42 +++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/contributing/development/compiling/introduction_to_the_buildsystem.rst b/contributing/development/compiling/introduction_to_the_buildsystem.rst index 557db6a1d..ed41955fa 100644 --- a/contributing/development/compiling/introduction_to_the_buildsystem.rst +++ b/contributing/development/compiling/introduction_to_the_buildsystem.rst @@ -197,6 +197,8 @@ binary name. you can enable at compile-time to better debug certain engine issues. See :ref:`doc_using_sanitizers` for more information. +.. _doc_introduction_to_the_buildsystem_debugging_symbols: + Debugging symbols ----------------- diff --git a/tutorials/export/exporting_for_dedicated_servers.rst b/tutorials/export/exporting_for_dedicated_servers.rst index 55f1699a6..d91d04d03 100644 --- a/tutorials/export/exporting_for_dedicated_servers.rst +++ b/tutorials/export/exporting_for_dedicated_servers.rst @@ -281,7 +281,10 @@ On Linux, to make your dedicated server restart after a crash or system reboot, you can `create a systemd service `__. This also lets you view server logs in a more convenient fashion, with automatic -log rotation provided by systemd. +log rotation provided by systemd. When making your project hostable as a systemd service, +you should also enable the ``application/run/flush_stdout_on_print`` +project setting. This way, journald (the systemd logging service) can collect +logs while the process is running. If you have experience with containers, you could also look into wrapping your dedicated server in a `Docker `__ container. This way, diff --git a/tutorials/io/data_paths.rst b/tutorials/io/data_paths.rst index 3f5dcc3ea..515614681 100644 --- a/tutorials/io/data_paths.rst +++ b/tutorials/io/data_paths.rst @@ -111,6 +111,48 @@ On HTML5 exports, ``user://`` will refer to a virtual filesystem stored on the device via IndexedDB. (Interaction with the main filesystem can still be performed through the :ref:`JavaScriptBridge ` singleton.) +File logging +------------ + +By default, Godot writes log files in ``user://logs/godot.log`` on desktop +platforms. You can change this location by modifying the +``debug/file_logging/log_path`` project setting. Logs are rotated to keep older +files available for inspection. Each session creates a new log file, with the +old file renamed to contain the date at which it was rotated. Up to 5 log files +are kept by default, which can be adjusted using the +``debug/file_logging/max_log_files`` project setting. + +File logging can also be disabled completely using the +``debug/file_logging/enable_file_logging`` project setting. + +When the project crashes, crash logs are written to the same file as the log +file. The crash log will only contain an usable backtrace if the binary that was +run contains debugging symbols, or if it can find a debug symbols file that +matches the binary. Official binaries don't provide debugging symbols, so this +requires a custom build to work. See +:ref:`Debugging symbols `. +for guidance on compiling binaries with debugging symbols enabled. + +.. note:: + + Log files for :ref:`print` + statements are updated when standard output is *flushed* by the engine. + Standard output is flushed on every print in debug builds only. In projects that + are exported in release mode, standard output is only flushed when the project exits + or crashes to improve performance, especially if the project is often printing + text to standard output. + + On the other hand, the standard error stream + (used by :ref:`printerr`, + :ref:`push_error` and + :ref:`push_warning`) is always + flushed on every print, even in projects exported in release mode. + + For some use cases like dedicated servers, it can be preferred to have release + builds always flush stdout on print, so that logging services like journald can + collect logs while the process is running. This can be done by enabling + ``application/run/flush_stdout_on_print`` in the Project Settings. + Converting paths to absolute paths or "local" paths --------------------------------------------------- From 0c64741bba40a228241a898fdef63a4d6aee28fa Mon Sep 17 00:00:00 2001 From: Robert Yevdokimov <105675984+ryevdokimov@users.noreply.github.com> Date: Sun, 30 Mar 2025 23:57:23 +0400 Subject: [PATCH 007/263] Autoload nodes can be accessed in the editor if they're using tool scripts --- tutorials/plugins/running_code_in_the_editor.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tutorials/plugins/running_code_in_the_editor.rst b/tutorials/plugins/running_code_in_the_editor.rst index e9b8825aa..b2eb4c528 100644 --- a/tutorials/plugins/running_code_in_the_editor.rst +++ b/tutorials/plugins/running_code_in_the_editor.rst @@ -246,8 +246,7 @@ angle add a setter ``set(new_speed)`` which is executed with the input from the Code from other nodes doesn't run in the editor. Your access to other nodes is limited. You can access the tree and nodes, and their default properties, but you can't access user variables. If you want to do so, other nodes have - to run in the editor too. Autoload nodes cannot be accessed in the editor at - all. + to run in the editor too. Getting notified when resources change -------------------------------------- From f556dd78756291126127c82673c571433a89cb4d Mon Sep 17 00:00:00 2001 From: Douglas Lassance Date: Sun, 30 Mar 2025 22:39:39 -0700 Subject: [PATCH 008/263] Update Visual Studio Code configuration for macOS systems --- .../configuring_an_ide/visual_studio_code.rst | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/contributing/development/configuring_an_ide/visual_studio_code.rst b/contributing/development/configuring_an_ide/visual_studio_code.rst index e74dfbed9..7861c34e3 100644 --- a/contributing/development/configuring_an_ide/visual_studio_code.rst +++ b/contributing/development/configuring_an_ide/visual_studio_code.rst @@ -146,20 +146,32 @@ To run and debug the project you need to create a new configuration in the ``lau "preLaunchTask": "build" } - .. code-tab:: js Mac + .. code-tab:: js macOS_x86_64 { "name": "Launch Project", "type": "lldb", - "request": "custom", - "targetCreateCommands": [ - "target create ${workspaceFolder}/bin/godot.macos.editor.dev.x86_64" - ], + "request": "launch", + "program": "${workspaceFolder}/bin/godot.macos.editor.x86_64", // Change the arguments below for the project you want to test with. // To run the project instead of editing it, remove the "--editor" argument. - "processCreateCommands": [ - "process launch -- --editor --path path-to-your-godot-project-folder" - ] + "args": ["--editor", "--path", "path-to-your-godot-project-folder"], + "cwd": "${workspaceFolder}", + "preLaunchTask": "build" + } + + .. code-tab:: js macOS_arm64 + + { + "name": "Launch Project", + "type": "lldb", + "request": "launch", + "program": "${workspaceFolder}/bin/godot.macos.editor.arm64", + // Change the arguments below for the project you want to test with. + // To run the project instead of editing it, remove the "--editor" argument. + "args": ["--editor", "--path", "path-to-your-godot-project-folder"], + "cwd": "${workspaceFolder}", + "preLaunchTask": "build" } .. figure:: img/vscode_2_launch.json.png @@ -173,7 +185,7 @@ To run and debug the project you need to create a new configuration in the ``lau Due to sporadic performance issues, it is recommended to use LLDB over GDB on Unix-based systems. Make sure that the `CodeLLDB extension `_ - is installed. + is installed for configurations using `lldb`. If you encounter issues with lldb, you may consider using gdb (see the LinuxBSD_gdb configuration). From 9aecfc75450d189b53fda58f83788648f7609071 Mon Sep 17 00:00:00 2001 From: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com> Date: Mon, 31 Mar 2025 11:53:43 +0200 Subject: [PATCH 009/263] [Navigation] Update contributing docs to reflect 2D navigation changes --- .../compiling/optimizing_for_size.rst | 9 ++----- .../core_and_modules/unit_testing.rst | 24 ++++++++++--------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/contributing/development/compiling/optimizing_for_size.rst b/contributing/development/compiling/optimizing_for_size.rst index 2cabcac11..f77e9576e 100644 --- a/contributing/development/compiling/optimizing_for_size.rst +++ b/contributing/development/compiling/optimizing_for_size.rst @@ -144,11 +144,6 @@ Tools must be disabled in order to use this flag, as the editor is not designed to operate without 3D support. Without it, the binary size can be reduced by about 15%. -.. note:: - - Disabling 3D support also disables all navigation. This includes 2D navigation, - as it uses the 3D navigation system internally. - Disabling advanced GUI objects ------------------------------ @@ -214,7 +209,7 @@ a lot of them: :: - scons target=template_release module_basis_universal_enabled=no module_bmp_enabled=no module_camera_enabled=no module_csg_enabled=no module_dds_enabled=no module_enet_enabled=no module_gridmap_enabled=no module_hdr_enabled=no module_jsonrpc_enabled=no module_ktx_enabled=no module_mbedtls_enabled=no module_meshoptimizer_enabled=no module_minimp3_enabled=no module_mobile_vr_enabled=no module_msdfgen_enabled=no module_multiplayer_enabled=no module_noise_enabled=no module_navigation_enabled=no module_ogg_enabled=no module_openxr_enabled=no module_raycast_enabled=no module_regex_enabled=no module_squish_enabled=no module_svg_enabled=no module_tga_enabled=no module_theora_enabled=no module_tinyexr_enabled=no module_upnp_enabled=no module_vhacd_enabled=no module_vorbis_enabled=no module_webrtc_enabled=no module_websocket_enabled=no module_webxr_enabled=no module_zip_enabled=no + scons target=template_release module_basis_universal_enabled=no module_bmp_enabled=no module_camera_enabled=no module_csg_enabled=no module_dds_enabled=no module_enet_enabled=no module_gridmap_enabled=no module_hdr_enabled=no module_jsonrpc_enabled=no module_ktx_enabled=no module_mbedtls_enabled=no module_meshoptimizer_enabled=no module_minimp3_enabled=no module_mobile_vr_enabled=no module_msdfgen_enabled=no module_multiplayer_enabled=no module_noise_enabled=no module_navigation_3d_enabled=no module_ogg_enabled=no module_openxr_enabled=no module_raycast_enabled=no module_regex_enabled=no module_squish_enabled=no module_svg_enabled=no module_tga_enabled=no module_theora_enabled=no module_tinyexr_enabled=no module_upnp_enabled=no module_vhacd_enabled=no module_vorbis_enabled=no module_webrtc_enabled=no module_websocket_enabled=no module_webxr_enabled=no module_zip_enabled=no If this proves not to work for your use case, you should review the list of modules and see which ones you actually still need for your game (e.g. you might @@ -245,7 +240,7 @@ following: module_msdfgen_enabled= "no" module_multiplayer_enabled = "no" module_noise_enabled = "no" - module_navigation_enabled = "no" + module_navigation_3d_enabled = "no" module_ogg_enabled = "no" module_openxr_enabled = "no" module_raycast_enabled = "no" diff --git a/contributing/development/core_and_modules/unit_testing.rst b/contributing/development/core_and_modules/unit_testing.rst index 1b298a54b..0842faffa 100644 --- a/contributing/development/core_and_modules/unit_testing.rst +++ b/contributing/development/core_and_modules/unit_testing.rst @@ -271,17 +271,19 @@ Special tags in test case names These tags can be added to the test case name to modify or extend the test environment: -+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| **Tag** | **Description** | -+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``[SceneTree]`` | Required for test cases that rely on a scene tree with MessageQueue to be available. It also enables a mock rendering server and :ref:`ThemeDB`. | -+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``[Editor]`` | Like ``[SceneTree]``, but with additional editor-related infrastructure available, such as :ref:`EditorSettings`. | -+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``[Audio]`` | Initializes the :ref:`AudioServer` using a mock audio driver. | -+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ -| ``[Navigation]`` | Creates the default 2D/3D navigation servers and makes them available for testing. | -+-------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| **Tag** | **Description** | ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``[SceneTree]`` | Required for test cases that rely on a scene tree with MessageQueue to be available. It also enables a mock rendering server and :ref:`ThemeDB`. | ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``[Editor]`` | Like ``[SceneTree]``, but with additional editor-related infrastructure available, such as :ref:`EditorSettings`. | ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``[Audio]`` | Initializes the :ref:`AudioServer` using a mock audio driver. | ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``[Navigation2D]`` | Creates the default 2D navigation server and makes it available for testing. | ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +| ``[Navigation3D]`` | Creates the default 3D navigation server and makes it available for testing. | ++--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ You can use them together to combine multiple test environment extensions. From 949cf045f00c62e189e5c01c61e42193da02ec92 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 1 Apr 2025 00:24:19 +0200 Subject: [PATCH 010/263] Document `@export_tool_button` icon parameter in GDScript exports --- .../scripting/gdscript/gdscript_exports.rst | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/tutorials/scripting/gdscript/gdscript_exports.rst b/tutorials/scripting/gdscript/gdscript_exports.rst index 7a378f2ab..c3470f29e 100644 --- a/tutorials/scripting/gdscript/gdscript_exports.rst +++ b/tutorials/scripting/gdscript/gdscript_exports.rst @@ -494,7 +494,21 @@ for a list of parameters and their allowed values. If you need to create a clickable inspector button, you can use ``@export_tool_button``. This exports a ``Callable`` property as a clickable button. When the button is pressed, the callable is called. -Export a button with label ``"Hello"`` and icon ``"Callable"``. When you press it, it will print ``"Hello world!"``. +You can specify a custom icon name, which must match one of the icon +file names from the +`editor/icons `__ +folder of the Godot source repository (case-sensitive). +You can also browse the editor icons using the +`Godot editor icons `__ website. + +For example, if you wish to use ``Node2D.svg`` from that folder, you must +specify ``"Node2D"`` as the second parameter of ``@export_tool_button``. It is +not currently possible to use custom icons from the project folder; only +built-in editor icons can be used. + +This exports a button with label ``"Hello"`` and icon ``"Callable"`` (which is the +default if no icon is specified). When you press it, it will print ``"Hello +world!"``. :: From c721f1c624e297b3ca9c5e0088c7d9b9041f0233 Mon Sep 17 00:00:00 2001 From: Aaron Franke Date: Fri, 4 Apr 2025 02:16:21 -0700 Subject: [PATCH 011/263] Document how to opt out of name suffix customization in 3D import --- .../node_type_customization.rst | 43 +++++++++++++++++-- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.rst b/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.rst index a5a9f4999..22c64d8c1 100644 --- a/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.rst +++ b/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.rst @@ -20,11 +20,33 @@ will detect suffixes in object names and will perform actions automatically. All the suffixes described below can be used with ``-``, ``$``, and ``_`` and are **case-insensitive**. -Remove nodes (-noimp) ---------------------- +Opting out +---------- -Objects that have the ``-noimp`` suffix will be removed at import-time no matter -what their type is. They will not appear in the imported scene. +If you do not want Godot to perform any of the actions described below, you +can set the ``nodes/use_node_type_suffixes`` import option to ``false``. +This will disable all node type suffixes, which keeps nodes the same type +as the original file indicated. However, the ``-noimp`` suffix will still +be respected, as well as non-node suffixes like ``-vcol`` or ``-loop``. + +Alternatively, you can completely opt out of all name suffixes by setting +the ``nodes/use_name_suffixes`` import option to ``false``. This will +completely stop the general scene import code from looking at name suffixes. +However, the format-specific import code may still look at name suffixes, +such as the glTF importer checking for the ``-loop`` suffix. + +Disabling these options makes editor-imported files more similar to the +original files, and more similar to importing files at runtime. +For an import workflow that works at runtime, gives more predictable +results, and only has explicitly defined behavior, consider setting these +options to ``false`` and using :ref:`class_GLTFDocumentExtension` instead. + +Remove nodes and animations (-noimp) +------------------------------------ + +Nodes and animations that have the ``-noimp`` suffix will be removed at +import time no matter what their type is. They will not appear in the +imported scene. This is equivalent to enabling **Skip Import** for a node in the Advanced Import Settings dialog. @@ -132,3 +154,16 @@ will be imported as a Godot :ref:`class_Animation` with the loop flag set. In Blender, this requires using the NLA Editor and naming the Action with the ``loop`` or ``cycle`` prefix or suffix. + +Material alpha (-alpha) +----------------------------------------------- + +A material with the ``-alpha`` suffix will be imported with the +:ref:`TRANSPARENCY_ALPHA` transparency mode. + +Material vertex color (-vcol) +----------------------------------------------- + +A material with the ``-vcol`` suffix will be imported with the +:ref:`FLAG_ALBEDO_FROM_VERTEX_COLOR` and +:ref:`FLAG_SRGB_VERTEX_COLOR` flags set. From fe150bdac18c253f9460a0ed0af2caa2e561952e Mon Sep 17 00:00:00 2001 From: WSQS Date: Sat, 5 Apr 2025 11:19:02 +0800 Subject: [PATCH 012/263] expand the example to whole function --- tutorials/platform/android/android_library.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tutorials/platform/android/android_library.rst b/tutorials/platform/android/android_library.rst index 073b55c0b..51ef7532a 100644 --- a/tutorials/platform/android/android_library.rst +++ b/tutorials/platform/android/android_library.rst @@ -179,7 +179,14 @@ Below we break-down the steps used to create the GLTF Viewer app. to the Android app's ``assets`` directory. Using this approach requires passing the ``--main-pack `` argument to the hosted Godot Engine instance using `GodotHost#getCommandLine() `_. - Example:``return List.of("--main-pack","ref://foo.pck");`` + Example:```` + +.. code-block:: java + +@Overrude +public List getCommandLine(){ + return List.of("--main-pack","res://foo.pck"); +} The instructions below and the sample app follow the first approach of creating the Godot project in the Android app's ``assets`` directory. From faf7ca4214a6d0faaf09a2fe5cf0ae06040f48d0 Mon Sep 17 00:00:00 2001 From: WSQS Date: Sat, 5 Apr 2025 11:21:25 +0800 Subject: [PATCH 013/263] remove redandent sign --- tutorials/platform/android/android_library.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/platform/android/android_library.rst b/tutorials/platform/android/android_library.rst index 51ef7532a..080e6aad1 100644 --- a/tutorials/platform/android/android_library.rst +++ b/tutorials/platform/android/android_library.rst @@ -179,7 +179,7 @@ Below we break-down the steps used to create the GLTF Viewer app. to the Android app's ``assets`` directory. Using this approach requires passing the ``--main-pack `` argument to the hosted Godot Engine instance using `GodotHost#getCommandLine() `_. - Example:```` + Example: .. code-block:: java From 2624ee538868b5bcad4b978218b327c52ccc8f94 Mon Sep 17 00:00:00 2001 From: WSQS Date: Sat, 5 Apr 2025 11:22:25 +0800 Subject: [PATCH 014/263] Fix miss spell --- tutorials/platform/android/android_library.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/platform/android/android_library.rst b/tutorials/platform/android/android_library.rst index 080e6aad1..4794bf074 100644 --- a/tutorials/platform/android/android_library.rst +++ b/tutorials/platform/android/android_library.rst @@ -183,7 +183,7 @@ Below we break-down the steps used to create the GLTF Viewer app. .. code-block:: java -@Overrude +@Override public List getCommandLine(){ return List.of("--main-pack","res://foo.pck"); } From 566e24e04babff35d0488495ac4cd5d0d89ff7c2 Mon Sep 17 00:00:00 2001 From: Ivan Shakhov Date: Sat, 8 Mar 2025 22:35:00 +0100 Subject: [PATCH 015/263] Reflect the changes to Rider setup after the fix of the project generation logic to support any OS without MSVC toolchain --- contributing/development/compiling/index.rst | 2 + .../development/configuring_an_ide/rider.rst | 57 ++++++++++++------- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/contributing/development/compiling/index.rst b/contributing/development/compiling/index.rst index ecc938540..58a89b427 100644 --- a/contributing/development/compiling/index.rst +++ b/contributing/development/compiling/index.rst @@ -1,5 +1,7 @@ :allow_comments: False +.. _doc_compiling_index: + Building from source ==================== diff --git a/contributing/development/configuring_an_ide/rider.rst b/contributing/development/configuring_an_ide/rider.rst index a5e758ef3..095498393 100644 --- a/contributing/development/configuring_an_ide/rider.rst +++ b/contributing/development/configuring_an_ide/rider.rst @@ -4,51 +4,41 @@ JetBrains Rider =============== `JetBrains Rider `_ is a commercial -`JetBrains `_ IDE for C# and C++ that uses the same solution system as Visual Studio. +`JetBrains `_ IDE for C++, C# and GDScript that uses the same solution system as Visual Studio. .. note:: - This documentation is for contributions to the game engine, and not using + This documentation is for contributing to the game engine, not for using JetBrains Rider as a C# or GDScript editor. To code C# or GDScript in an external editor, see :ref:`the C# guide to configure an external editor `. Importing the project --------------------- -You will need to install `Python `_ in your development environment -along with `MinGW `_. You will also need the Visual Studio C++ Build Tools, which -you can install using the Visual Studio Installer. Ensure all dependencies are installed -before you continue to the next steps. - .. tip:: If you already use Visual Studio as your main IDE, you can use the same solution file in Rider. Rider and Visual Studio use the same solution format, so you can switch between the two IDEs without rebuilding the solution file. Debug configurations need to be changed when going from one IDE to another. -Rider requires a solution file to work on a C++ project. While Godot does not come -with a solution file, it can be generated using SCons. +If you are starting from the scratch, please follow :ref:`instructions`, specifically: -- Navigate to the Godot root folder and open a Command Prompt or PowerShell window. -- Copy, paste and run the next command to generate the solution. +- Install all the dependencies. +- Figure out the scons command for compiling to target a specific platform. -:: +Provide scons with additional arguments to request a solution file generation: - scons platform=windows vsproj=yes dev_build=yes +- Add `vsproj=yes dev_build=yes` to the scons command The ``vsproj`` parameter signals that you want Visual Studio solution generated. -The ``dev_build`` parameter makes sure the debug symbols are included, allowing to e.g. step through code using breakpoints. +The ``dev_build`` parameter ensures the debug symbols are included, allowing to e.g. step through code using breakpoints. -- If you have Rider setup as your main IDE for .sln, you can now open the project by double-clicking on the ``godot.sln`` in the project root - or by using the **Open** option inside of Rider. +- Open the generated ``godot.sln`` in Rider. -.. note:: Rider could fail to build the solution. - If that is the case, try running `git clean -xdf` to remove all traces of the previous build artifacts - and regenerate the build files using the `scons` command again. Restarting the terminal and your - development environment may help. +.. note:: Ensure that the appropriate Solution configuration is selected on the Rider toolbar. It affects resolve of the SDKs, code analysis, build, run, etc. Compiling and debugging the project ----------------------------------- Rider comes with a built-in debugger that can be used to debug the Godot project. You can launch the debugger -by pressing the **Debug** icon at the top of the screen, this only works for the Project manager, +by pressing the **Debug** icon at the top of the screen, this only works for the Project Manager, if you want to debug the editor, you need to configure the debugger first. .. figure:: img/rider_run_debug.webp @@ -66,7 +56,7 @@ if you want to debug the editor, you need to configure the debugger first. - Working Directory: ``$(LocalDebuggerWorkingDirectory)`` - Before Launch has a value of "Build Project" -This will tell the executable to debug the specified project without using the project manager. +This will tell the executable to debug the specified project without opening the Project Manager. Use the root path to the project folder, not ``project.godot`` file path. .. figure:: img/rider_configurations_changed.webp @@ -86,4 +76,27 @@ Alternatively you can use **Run > Attach to Process** to attach the debugger to .. figure:: img/rider_attach_to_process_dialog.webp :align: center +| + +Debug visualizers +----------------- +Debug visualizers customize how complex data structures are displayed during debugging. +For Windows "natvis" (short for "Native Visualization") built-in with Godot are automatically used. +For other operating systems, similar functionality can be setup manually. + +Please follow `RIDER-123535 `_. + +Unit testing +------------ +Leverage Rider :ref:`doctest` support. +Please follow `RIDER-122019 `_. + +Profiling +--------- +Please refer to `the profiling instructions `_. + Please consult the `JetBrains Rider documentation `_ for any specific information about the JetBrains IDE. + +Known issues +------------ +Debugging Windows MinGV build - symbols are not loaded. Reported `RIDER-106816 `_. From f2110357a27c20e5ef745093a08c4f178edaae7b Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 10 Apr 2025 01:08:00 +0200 Subject: [PATCH 016/263] Apply suggestions from code review --- .../importing_3d_scenes/node_type_customization.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.rst b/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.rst index 22c64d8c1..bd8ce6a83 100644 --- a/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.rst +++ b/tutorials/assets_pipeline/importing_3d_scenes/node_type_customization.rst @@ -156,13 +156,13 @@ In Blender, this requires using the NLA Editor and naming the Action with the `` ``cycle`` prefix or suffix. Material alpha (-alpha) ------------------------------------------------ +----------------------- A material with the ``-alpha`` suffix will be imported with the :ref:`TRANSPARENCY_ALPHA` transparency mode. Material vertex color (-vcol) ------------------------------------------------ +----------------------------- A material with the ``-vcol`` suffix will be imported with the :ref:`FLAG_ALBEDO_FROM_VERTEX_COLOR` and From 56e5456be194716cac079a5a6c9bf7fe1dd0e952 Mon Sep 17 00:00:00 2001 From: Matthew Date: Fri, 11 Apr 2025 11:20:03 -0400 Subject: [PATCH 017/263] Update contributing/development/configuring_an_ide/rider.rst --- contributing/development/configuring_an_ide/rider.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contributing/development/configuring_an_ide/rider.rst b/contributing/development/configuring_an_ide/rider.rst index 095498393..7066bb4bd 100644 --- a/contributing/development/configuring_an_ide/rider.rst +++ b/contributing/development/configuring_an_ide/rider.rst @@ -33,7 +33,9 @@ The ``dev_build`` parameter ensures the debug symbols are included, allowing to - Open the generated ``godot.sln`` in Rider. -.. note:: Ensure that the appropriate Solution configuration is selected on the Rider toolbar. It affects resolve of the SDKs, code analysis, build, run, etc. +.. note:: Ensure that the appropriate Solution configuration is selected on the + Rider toolbar. It affects resolve of the SDKs, code analysis, build, run, + etc. Compiling and debugging the project ----------------------------------- From fd1c63103fbd051b74ed758635049621283bb2b2 Mon Sep 17 00:00:00 2001 From: Godot Organization Date: Sat, 12 Apr 2025 03:23:36 +0000 Subject: [PATCH 018/263] classref: Sync with current master branch (215acd5) --- classes/class_@gdscript.rst | 4 +- classes/class_@globalscope.rst | 2 +- classes/class_acceptdialog.rst | 10 +- classes/class_animatedsprite2d.rst | 2 +- classes/class_animatedsprite3d.rst | 2 +- classes/class_animationmixer.rst | 2 +- classes/class_animationplayer.rst | 4 +- classes/class_array.rst | 6 +- classes/class_audioeffectphaser.rst | 2 +- classes/class_audiostreamplayer3d.rst | 6 +- classes/class_basematerial3d.rst | 2 +- classes/class_boneattachment3d.rst | 2 +- classes/class_button.rst | 19 + classes/class_camera2d.rst | 19 + classes/class_cameraserver.rst | 36 + classes/class_canvasitem.rst | 98 +- classes/class_canvaslayer.rst | 2 +- classes/class_characterbody2d.rst | 4 +- classes/class_characterbody3d.rst | 4 +- classes/class_checkbox.rst | 66 +- classes/class_checkbutton.rst | 66 +- classes/class_codeedit.rst | 6 +- classes/class_color.rst | 8 + classes/class_colorpicker.rst | 142 +- classes/class_container.rst | 2 +- classes/class_control.rst | 158 +- classes/class_csgshape3d.rst | 14 +- classes/class_dictionary.rst | 15 +- classes/class_diraccess.rst | 14 + classes/class_displayserver.rst | 2764 ++++++++++++++--- classes/class_editorexportplatform.rst | 8 +- classes/class_editorexportplatformandroid.rst | 2 +- classes/class_editorexportplatformios.rst | 4 +- classes/class_editorexportplugin.rst | 18 + classes/class_editorexportpreset.rst | 24 +- classes/class_editorinspector.rst | 2 + classes/class_editorinterface.rst | 20 +- classes/class_editorplugin.rst | 30 +- classes/class_editorproperty.rst | 52 +- .../class_editorsceneformatimporterblend.rst | 2 +- classes/class_editorselection.rst | 20 +- classes/class_editorsettings.rst | 158 +- classes/class_fileaccess.rst | 40 +- classes/class_foldablecontainer.rst | 601 ++++ classes/class_foldablegroup.rst | 130 + classes/class_fontfile.rst | 19 + classes/class_gltfaccessor.rst | 4 +- classes/class_gltflight.rst | 6 +- classes/class_gltfnode.rst | 2 +- classes/class_gltfobjectmodelproperty.rst | 2 +- classes/class_gltfphysicsbody.rst | 6 +- classes/class_gltfphysicsshape.rst | 14 +- classes/class_gltfstate.rst | 4 +- classes/class_graphedit.rst | 59 + classes/class_graphnode.rst | 30 + classes/class_image.rst | 48 + classes/class_inputmap.rst | 14 + classes/class_javaclasswrapper.rst | 2 + classes/class_jsonrpc.rst | 12 +- classes/class_label.rst | 35 + classes/class_label3d.rst | 21 +- classes/class_light3d.rst | 2 +- classes/class_lineedit.rst | 10 +- classes/class_linkbutton.rst | 2 +- classes/class_lookatmodifier3d.rst | 2 +- classes/class_material.rst | 2 +- classes/class_menubar.rst | 28 +- classes/class_menubutton.rst | 2 +- classes/class_mesh.rst | 2 +- classes/class_multiplayerapiextension.rst | 5 + classes/class_nativemenu.rst | 2 +- .../class_navigationpathqueryparameters2d.rst | 42 + .../class_navigationpathqueryparameters3d.rst | 42 + classes/class_navigationserver2d.rst | 137 + classes/class_navigationserver3d.rst | 2 + classes/class_node.rst | 295 +- classes/class_node3d.rst | 221 +- classes/class_object.rst | 154 +- .../class_openxranalogthresholdmodifier.rst | 4 +- classes/class_openxrapiextension.rst | 58 +- classes/class_openxrcompositionlayer.rst | 442 ++- classes/class_openxrdpadbindingmodifier.rst | 8 +- classes/class_openxrextensionwrapper.rst | 664 ++++ .../class_openxrextensionwrapperextension.rst | 577 +--- classes/class_openxrfutureextension.rst | 100 + classes/class_openxrfutureresult.rst | 144 + classes/class_openxrinterface.rst | 206 +- classes/class_optionbutton.rst | 140 +- classes/class_os.rst | 24 +- classes/class_packedbytearray.rst | 84 +- classes/class_packedcolorarray.rst | 18 +- classes/class_packedfloat32array.rst | 20 +- classes/class_packedfloat64array.rst | 20 +- classes/class_packedint32array.rst | 18 +- classes/class_packedint64array.rst | 18 +- classes/class_packedstringarray.rst | 18 +- classes/class_packedvector2array.rst | 20 +- classes/class_packedvector3array.rst | 20 +- classes/class_packedvector4array.rst | 22 +- classes/class_path3d.rst | 39 +- classes/class_performance.rst | 182 +- classes/class_physicsdirectspacestate2d.rst | 6 +- classes/class_physicsdirectspacestate3d.rst | 2 +- classes/class_popup.rst | 32 +- classes/class_popupmenu.rst | 316 +- classes/class_portablecompressedtexture2d.rst | 12 + classes/class_primitivemesh.rst | 2 +- classes/class_projection.rst | 2 +- classes/class_projectsettings.rst | 914 ++++-- classes/class_rdtextureview.rst | 4 +- classes/class_rdvertexattribute.rst | 4 +- classes/class_refcounted.rst | 2 +- classes/class_renderingdevice.rst | 192 +- classes/class_renderingserver.rst | 80 +- classes/class_resource.rst | 2 +- classes/class_resourceimporterdynamicfont.rst | 14 + classes/class_resourceuid.rst | 14 + classes/class_richtextlabel.rst | 69 +- classes/class_scenestate.rst | 28 + classes/class_scenetree.rst | 53 +- classes/class_scriptlanguage.rst | 12 + classes/class_scrollbar.rst | 12 +- classes/class_signal.rst | 148 +- classes/class_skeleton3d.rst | 32 +- classes/class_skeletonmodifier3d.rst | 34 +- classes/class_springbonesimulator3d.rst | 33 +- classes/class_spritebase3d.rst | 2 +- classes/class_streampeer.rst | 2 +- classes/class_streampeergzip.rst | 4 +- classes/class_string.rst | 139 +- classes/class_stringname.rst | 129 +- classes/class_systemfont.rst | 19 + classes/class_tabbar.rst | 35 +- classes/class_tabcontainer.rst | 14 + classes/class_textedit.rst | 27 + classes/class_textline.rst | 88 +- classes/class_textparagraph.rst | 158 +- classes/class_textserver.rst | 226 +- classes/class_textserverextension.rst | 208 ++ classes/class_tiledata.rst | 4 +- classes/class_tilemaplayer.rst | 27 +- classes/class_tileset.rst | 16 +- classes/class_tilesetatlassource.rst | 6 +- .../class_tilesetscenescollectionsource.rst | 6 +- classes/class_tree.rst | 46 +- classes/class_treeitem.rst | 480 +-- classes/class_trianglemesh.rst | 107 +- classes/class_tween.rst | 32 +- classes/class_udpserver.rst | 2 +- classes/class_viewport.rst | 98 +- classes/class_visibleonscreennotifier2d.rst | 25 +- classes/class_window.rst | 121 +- classes/class_xrcamera3d.rst | 12 + classes/class_xrcontroller3d.rst | 10 +- classes/class_xrinterface.rst | 8 + classes/class_xrnode3d.rst | 16 +- classes/index.rst | 5 + 157 files changed, 10283 insertions(+), 2474 deletions(-) create mode 100644 classes/class_foldablecontainer.rst create mode 100644 classes/class_foldablegroup.rst create mode 100644 classes/class_openxrextensionwrapper.rst create mode 100644 classes/class_openxrfutureextension.rst create mode 100644 classes/class_openxrfutureresult.rst diff --git a/classes/class_@gdscript.rst b/classes/class_@gdscript.rst index 4f5e6008a..58abd13be 100644 --- a/classes/class_@gdscript.rst +++ b/classes/class_@gdscript.rst @@ -1089,7 +1089,7 @@ Starting from ``_ready()``, ``bar()`` would print: **Deprecated:** Consider using :ref:`JSON.from_native()` or :ref:`Object.get_property_list()` instead. -Returns the passed ``instance`` converted to a Dictionary. Can be useful for serializing. +Returns the passed ``instance`` converted to a :ref:`Dictionary`. Can be useful for serializing. :: @@ -1128,7 +1128,7 @@ Returns ``true`` if ``value`` is an instance of ``type``. The ``type`` value mus - A :ref:`Script` (you can use any class, including inner one). -Unlike the right operand of the ``is`` operator, ``type`` can be a non-constant value. The ``is`` operator supports more features (such as typed arrays). Use the operator instead of this method if you do not need dynamic type checking. +Unlike the right operand of the ``is`` operator, ``type`` can be a non-constant value. The ``is`` operator supports more features (such as typed arrays). Use the operator instead of this method if you do not need to check the type dynamically. \ **Examples:**\ diff --git a/classes/class_@globalscope.rst b/classes/class_@globalscope.rst index 97755bbea..1f780985e 100644 --- a/classes/class_@globalscope.rst +++ b/classes/class_@globalscope.rst @@ -3810,7 +3810,7 @@ Hints that a property is an :ref:`Array` with the stored type speci :ref:`PropertyHint` **PROPERTY_HINT_DICTIONARY_TYPE** = ``38`` -Hints that a property is a :ref:`Dictionary` with the stored types specified in the hint string. +Hints that a property is a :ref:`Dictionary` with the stored types specified in the hint string. The hint string contains the key and value types separated by a semicolon (e.g. ``"int;String"``). .. _class_@GlobalScope_constant_PROPERTY_HINT_LOCALE_ID: diff --git a/classes/class_acceptdialog.rst b/classes/class_acceptdialog.rst index 7b24b3ced..eba6558d4 100644 --- a/classes/class_acceptdialog.rst +++ b/classes/class_acceptdialog.rst @@ -44,7 +44,11 @@ Properties +-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`bool` | keep_title_visible | ``true`` (overrides :ref:`Window`) | +-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`ok_button_text` | ``"OK"`` | + | :ref:`bool` | maximize_disabled | ``true`` (overrides :ref:`Window`) | + +-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`bool` | minimize_disabled | ``true`` (overrides :ref:`Window`) | + +-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`ok_button_text` | ``""`` | +-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`String` | title | ``"Alert!"`` (overrides :ref:`Window`) | +-----------------------------+-----------------------------------------------------------------------------------+------------------------------------------------------------------------------+ @@ -219,14 +223,14 @@ The text displayed by the dialog. .. rst-class:: classref-property -:ref:`String` **ok_button_text** = ``"OK"`` :ref:`🔗` +:ref:`String` **ok_button_text** = ``""`` :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_ok_button_text**\ (\ value\: :ref:`String`\ ) - :ref:`String` **get_ok_button_text**\ (\ ) -The text displayed by the OK button (see :ref:`get_ok_button()`). +The text displayed by the OK button (see :ref:`get_ok_button()`). If empty, a default text will be used. .. rst-class:: classref-section-separator diff --git a/classes/class_animatedsprite2d.rst b/classes/class_animatedsprite2d.rst index 0810c8ffc..1cb414289 100644 --- a/classes/class_animatedsprite2d.rst +++ b/classes/class_animatedsprite2d.rst @@ -413,7 +413,7 @@ This method is a shorthand for :ref:`play()` |void| **set_frame_and_progress**\ (\ frame\: :ref:`int`, progress\: :ref:`float`\ ) :ref:`🔗` -Sets :ref:`frame` the :ref:`frame_progress` to the given values. Unlike setting :ref:`frame`, this method does not reset the :ref:`frame_progress` to ``0.0`` implicitly. +Sets :ref:`frame` and :ref:`frame_progress` to the given values. Unlike setting :ref:`frame`, this method does not reset the :ref:`frame_progress` to ``0.0`` implicitly. \ **Example:** Change the animation while keeping the same :ref:`frame` and :ref:`frame_progress`: diff --git a/classes/class_animatedsprite3d.rst b/classes/class_animatedsprite3d.rst index d42a4c0c3..3941da0fb 100644 --- a/classes/class_animatedsprite3d.rst +++ b/classes/class_animatedsprite3d.rst @@ -333,7 +333,7 @@ This method is a shorthand for :ref:`play()` |void| **set_frame_and_progress**\ (\ frame\: :ref:`int`, progress\: :ref:`float`\ ) :ref:`🔗` -Sets :ref:`frame` the :ref:`frame_progress` to the given values. Unlike setting :ref:`frame`, this method does not reset the :ref:`frame_progress` to ``0.0`` implicitly. +Sets :ref:`frame` and :ref:`frame_progress` to the given values. Unlike setting :ref:`frame`, this method does not reset the :ref:`frame_progress` to ``0.0`` implicitly. \ **Example:** Change the animation while keeping the same :ref:`frame` and :ref:`frame_progress`: diff --git a/classes/class_animationmixer.rst b/classes/class_animationmixer.rst index 950ce0d96..cef4a8a03 100644 --- a/classes/class_animationmixer.rst +++ b/classes/class_animationmixer.rst @@ -732,7 +732,7 @@ By using this in combination with :ref:`get_root_motion_rotation_accumulator()` is ``true``, return the pre-multiplied translation value with the inverted rotation. +If :ref:`root_motion_local` is ``true``, returns the pre-multiplied translation value with the inverted rotation. In this case, the code can be written as follows: diff --git a/classes/class_animationplayer.rst b/classes/class_animationplayer.rst index bb1c21323..990c32290 100644 --- a/classes/class_animationplayer.rst +++ b/classes/class_animationplayer.rst @@ -622,7 +622,7 @@ Returns the start time of the section currently being played. :ref:`bool` **has_section**\ (\ ) |const| :ref:`🔗` -Returns ``true`` if an animation is currently playing with section. +Returns ``true`` if an animation is currently playing with a section. .. rst-class:: classref-item-separator @@ -787,7 +787,7 @@ Queues an animation for playback once the current animation and all previously q |void| **reset_section**\ (\ ) :ref:`🔗` -Resets the current section if section is set. +Resets the current section. Does nothing if a section has not been set. .. rst-class:: classref-item-separator diff --git a/classes/class_array.rst b/classes/class_array.rst index 7dccd4243..ddf93157c 100644 --- a/classes/class_array.rst +++ b/classes/class_array.rst @@ -916,7 +916,7 @@ Returns a hashed 32-bit integer value representing the array and its contents. :ref:`int` **insert**\ (\ position\: :ref:`int`, value\: :ref:`Variant`\ ) :ref:`🔗` -Inserts a new element (``value``) at a given index (``position``) in the array. ``position`` should be between ``0`` and the array's :ref:`size()`. +Inserts a new element (``value``) at a given index (``position``) in the array. ``position`` should be between ``0`` and the array's :ref:`size()`. If negative, ``position`` is considered relative to the end of the array. Returns :ref:`@GlobalScope.OK` on success, or one of the other :ref:`Error` constants if this method fails. @@ -1205,7 +1205,7 @@ See also :ref:`map()`, :ref:`filter()`\ ) :ref:`🔗` -Removes the element from the array at the given index (``position``). If the index is out of bounds, this method fails. +Removes the element from the array at the given index (``position``). If the index is out of bounds, this method fails. If the index is negative, ``position`` is considered relative to the end of the array. If you need to return the removed element, use :ref:`pop_at()`. To remove an element by value, use :ref:`erase()` instead. @@ -1225,7 +1225,7 @@ If you need to return the removed element, use :ref:`pop_at()` on success, or one of the other :ref:`Error` constants if this method fails. +Returns :ref:`@GlobalScope.OK` on success, or one of the following :ref:`Error` constants if this method fails: :ref:`@GlobalScope.ERR_LOCKED` if the array is read-only, :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the size is negative, or :ref:`@GlobalScope.ERR_OUT_OF_MEMORY` if allocations fail. Use :ref:`size()` to find the actual size of the array after resize. \ **Note:** Calling this method once and assigning the new values is faster than calling :ref:`append()` for every new element. diff --git a/classes/class_audioeffectphaser.rst b/classes/class_audioeffectphaser.rst index 015a6faa3..6007591ff 100644 --- a/classes/class_audioeffectphaser.rst +++ b/classes/class_audioeffectphaser.rst @@ -70,7 +70,7 @@ Property Descriptions - |void| **set_depth**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_depth**\ (\ ) -Governs how high the filter frequencies sweep. Low value will primarily affect bass frequencies. High value can sweep high into the treble. Value can range from 0.1 to 4. +Determines how high the filter frequencies sweep. Low value will primarily affect bass frequencies. High value can sweep high into the treble. Value can range from ``0.1`` to ``4.0``. .. rst-class:: classref-item-separator diff --git a/classes/class_audiostreamplayer3d.rst b/classes/class_audiostreamplayer3d.rst index 66cf3ebb2..8ecb45b84 100644 --- a/classes/class_audiostreamplayer3d.rst +++ b/classes/class_audiostreamplayer3d.rst @@ -454,7 +454,11 @@ The maximum number of sounds this node can play at the same time. Playing additi - |void| **set_panning_strength**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_panning_strength**\ (\ ) -Scales the panning strength for this node by multiplying the base :ref:`ProjectSettings.audio/general/3d_panning_strength` with this factor. Higher values will pan audio from left to right more dramatically than lower values. +Scales the panning strength for this node by multiplying the base :ref:`ProjectSettings.audio/general/3d_panning_strength` by this factor. If the product is ``0.0`` then stereo panning is disabled and the volume is the same for all channels. If the product is ``1.0`` then one of the channels will be muted when the sound is located exactly to the left (or right) of the listener. + +Two speaker stereo arrangements implement the `WebAudio standard for StereoPannerNode Panning `__ where the volume is cosine of half the azimuth angle to the ear. + +For other speaker arrangements such as the 5.1 and 7.1 the SPCAP (Speaker-Placement Correction Amplitude) algorithm is implemented. .. rst-class:: classref-item-separator diff --git a/classes/class_basematerial3d.rst b/classes/class_basematerial3d.rst index 859d9b665..ee7ff35e9 100644 --- a/classes/class_basematerial3d.rst +++ b/classes/class_basematerial3d.rst @@ -2219,7 +2219,7 @@ Texture that specifies how much surface emits light at a given point. - |void| **set_flag**\ (\ flag\: :ref:`Flags`, enable\: :ref:`bool`\ ) - :ref:`bool` **get_flag**\ (\ flag\: :ref:`Flags`\ ) |const| -If ``true``, the object is rendered at the same size regardless of distance. +If ``true``, the object is rendered at the same size regardless of distance. The object's size on screen is the same as if the camera was ``1.0`` units away from the object's origin, regardless of the actual distance from the camera. The :ref:`Camera3D`'s field of view (or :ref:`Camera3D.size` when in orthogonal/frustum mode) still affects the size the object is drawn at. .. rst-class:: classref-item-separator diff --git a/classes/class_boneattachment3d.rst b/classes/class_boneattachment3d.rst index 7e2a1328a..3aee9e350 100644 --- a/classes/class_boneattachment3d.rst +++ b/classes/class_boneattachment3d.rst @@ -147,7 +147,7 @@ Returns the :ref:`NodePath` to the external :ref:`Skeleton3D` **get_skeleton**\ (\ ) :ref:`🔗` -Get parent or external :ref:`Skeleton3D` node if found. +Returns the parent or external :ref:`Skeleton3D` node if it exists, otherwise returns ``null``. .. rst-class:: classref-item-separator diff --git a/classes/class_button.rst b/classes/class_button.rst index cde750472..90a2fe6a9 100644 --- a/classes/class_button.rst +++ b/classes/class_button.rst @@ -82,6 +82,8 @@ Properties +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+ | :ref:`AutowrapMode` | :ref:`autowrap_mode` | ``0`` | +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+ + | |bitfield|\[:ref:`LineBreakFlag`\] | :ref:`autowrap_trim_flags` | ``128`` | + +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`clip_text` | ``false`` | +-------------------------------------------------------------------+-------------------------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`expand_icon` | ``false`` | @@ -220,6 +222,23 @@ If set to something other than :ref:`TextServer.AUTOWRAP_OFF`\] **autowrap_trim_flags** = ``128`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_autowrap_trim_flags**\ (\ value\: |bitfield|\[:ref:`LineBreakFlag`\]\ ) +- |bitfield|\[:ref:`LineBreakFlag`\] **get_autowrap_trim_flags**\ (\ ) + +Autowrap space trimming flags. See :ref:`TextServer.BREAK_TRIM_START_EDGE_SPACES` and :ref:`TextServer.BREAK_TRIM_END_EDGE_SPACES` for more info. + +.. rst-class:: classref-item-separator + +---- + .. _class_Button_property_clip_text: .. rst-class:: classref-property diff --git a/classes/class_camera2d.rst b/classes/class_camera2d.rst index 8db1e180a..0a3034894 100644 --- a/classes/class_camera2d.rst +++ b/classes/class_camera2d.rst @@ -77,6 +77,8 @@ Properties +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------+-------------------+ | :ref:`int` | :ref:`limit_bottom` | ``10000000`` | +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------+-------------------+ + | :ref:`bool` | :ref:`limit_enabled` | ``true`` | + +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------+-------------------+ | :ref:`int` | :ref:`limit_left` | ``-10000000`` | +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------+-------------------+ | :ref:`int` | :ref:`limit_right` | ``10000000`` | @@ -476,6 +478,23 @@ Bottom scroll limit in pixels. The camera stops moving when reaching this value, ---- +.. _class_Camera2D_property_limit_enabled: + +.. rst-class:: classref-property + +:ref:`bool` **limit_enabled** = ``true`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_limit_enabled**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **is_limit_enabled**\ (\ ) + +If ``true``, the limits will be enabled. Disabling this will allow the camera to focus anywhere, when the four ``limit_*`` properties will not work. + +.. rst-class:: classref-item-separator + +---- + .. _class_Camera2D_property_limit_left: .. rst-class:: classref-property diff --git a/classes/class_cameraserver.rst b/classes/class_cameraserver.rst index 334b70064..520781bc2 100644 --- a/classes/class_cameraserver.rst +++ b/classes/class_cameraserver.rst @@ -27,6 +27,18 @@ It is notably used to provide AR modules with a video feed from the camera. .. rst-class:: classref-reftable-group +Properties +---------- + +.. table:: + :widths: auto + + +-------------------------+-----------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`monitoring_feeds` | ``false`` | + +-------------------------+-----------------------------------------------------------------------+-----------+ + +.. rst-class:: classref-reftable-group + Methods ------- @@ -127,6 +139,30 @@ The CbCr component camera image. .. rst-class:: classref-descriptions-group +Property Descriptions +--------------------- + +.. _class_CameraServer_property_monitoring_feeds: + +.. rst-class:: classref-property + +:ref:`bool` **monitoring_feeds** = ``false`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_monitoring_feeds**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **is_monitoring_feeds**\ (\ ) + +If ``true``, the server is actively monitoring available camera feeds. + +This has a performance cost, so only set it to ``true`` when you're actively accessing the camera. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + Method Descriptions ------------------- diff --git a/classes/class_canvasitem.rst b/classes/class_canvasitem.rst index 68319c65f..f65f28b31 100644 --- a/classes/class_canvasitem.rst +++ b/classes/class_canvasitem.rst @@ -241,7 +241,7 @@ Emitted when the **CanvasItem** must redraw, *after* the related :ref:`NOTIFICAT **hidden**\ (\ ) :ref:`🔗` -Emitted when the **CanvasItem** is hidden, i.e. it's no longer visible in the tree (see :ref:`is_visible_in_tree()`). +Emitted when this node becomes hidden, i.e. it's no longer visible in the tree (see :ref:`is_visible_in_tree()`). .. rst-class:: classref-item-separator @@ -267,6 +267,8 @@ Emitted when the **CanvasItem**'s boundaries (position or size) change, or when Emitted when the **CanvasItem**'s visibility changes, either because its own :ref:`visible` property changed or because its visibility in the tree changed (see :ref:`is_visible_in_tree()`). +This signal is emitted *after* the related :ref:`NOTIFICATION_VISIBILITY_CHANGED` notification. + .. rst-class:: classref-section-separator ---- @@ -378,7 +380,7 @@ The **CanvasItem** will inherit the filter from its parent. :ref:`TextureRepeat` **TEXTURE_REPEAT_DISABLED** = ``1`` -Texture will not repeat. +The texture does not repeat. .. _class_CanvasItem_constant_TEXTURE_REPEAT_ENABLED: @@ -386,7 +388,7 @@ Texture will not repeat. :ref:`TextureRepeat` **TEXTURE_REPEAT_ENABLED** = ``2`` -Texture will repeat normally. +The texture repeats when exceeding the texture's size. .. _class_CanvasItem_constant_TEXTURE_REPEAT_MIRROR: @@ -394,7 +396,7 @@ Texture will repeat normally. :ref:`TextureRepeat` **TEXTURE_REPEAT_MIRROR** = ``3`` -Texture will repeat in a 2×2 tiled mode, where elements at even positions are mirrored. +The texture repeats when the exceeding the texture's size in a "2×2 tiled mode". Repeated textures at even positions are mirrored. .. _class_CanvasItem_constant_TEXTURE_REPEAT_MAX: @@ -420,7 +422,7 @@ enum **ClipChildrenMode**: :ref:`🔗` :ref:`ClipChildrenMode` **CLIP_CHILDREN_DISABLED** = ``0`` -Child draws over parent and is not clipped. +Children are drawn over this node and are not clipped. .. _class_CanvasItem_constant_CLIP_CHILDREN_ONLY: @@ -428,7 +430,7 @@ Child draws over parent and is not clipped. :ref:`ClipChildrenMode` **CLIP_CHILDREN_ONLY** = ``1`` -Parent is used for the purposes of clipping only. Child is clipped to the parent's visible area, parent is not drawn. +This node is used as a mask and is **not** drawn. The mask is based on this node's alpha channel: Opaque pixels are kept, transparent pixels are discarded, and semi-transparent pixels are blended in according to their opacity. Children are clipped to this node's drawn area. .. _class_CanvasItem_constant_CLIP_CHILDREN_AND_DRAW: @@ -436,7 +438,7 @@ Parent is used for the purposes of clipping only. Child is clipped to the parent :ref:`ClipChildrenMode` **CLIP_CHILDREN_AND_DRAW** = ``2`` -Parent is used for clipping child, but parent is also drawn underneath child as normal before clipping child to its visible area. +This node is used as a mask and is also drawn. The mask is based on this node's alpha channel: Opaque pixels are kept, transparent pixels are discarded, and semi-transparent pixels are blended in according to their opacity. Children are clipped to the parent's drawn area. .. _class_CanvasItem_constant_CLIP_CHILDREN_MAX: @@ -461,7 +463,9 @@ Constants **NOTIFICATION_TRANSFORM_CHANGED** = ``2000`` :ref:`🔗` -The **CanvasItem**'s global transform has changed. This notification is only received if enabled by :ref:`set_notify_transform()`. +Notification received when this node's global transform changes, if :ref:`is_transform_notification_enabled()` is ``true``. See also :ref:`set_notify_transform()` and :ref:`get_transform()`. + +\ **Note:** Many canvas items such as :ref:`Camera2D` or :ref:`CollisionObject2D` automatically enable this in order to function correctly. .. _class_CanvasItem_constant_NOTIFICATION_LOCAL_TRANSFORM_CHANGED: @@ -469,7 +473,9 @@ The **CanvasItem**'s global transform has changed. This notification is only rec **NOTIFICATION_LOCAL_TRANSFORM_CHANGED** = ``35`` :ref:`🔗` -The **CanvasItem**'s local transform has changed. This notification is only received if enabled by :ref:`set_notify_local_transform()`. +Notification received when this node's transform changes, if :ref:`is_local_transform_notification_enabled()` is ``true``. This is not received when a parent :ref:`Node2D`'s transform changes. See also :ref:`set_notify_local_transform()`. + +\ **Note:** Many canvas items such as :ref:`Camera2D` or :ref:`CollisionShape2D` automatically enable this in order to function correctly. .. _class_CanvasItem_constant_NOTIFICATION_DRAW: @@ -485,7 +491,9 @@ The **CanvasItem** is requested to draw (see :ref:`_draw()` -The **CanvasItem**'s visibility has changed. +Notification received when this node's visibility changes (see :ref:`visible` and :ref:`is_visible_in_tree()`). + +This notification is received *before* the related :ref:`visibility_changed` signal. .. _class_CanvasItem_constant_NOTIFICATION_ENTER_CANVAS: @@ -509,7 +517,7 @@ The **CanvasItem** has exited the canvas. **NOTIFICATION_WORLD_2D_CHANGED** = ``36`` :ref:`🔗` -The **CanvasItem**'s active :ref:`World2D` changed. +Notification received when this **CanvasItem** is registered to a new :ref:`World2D` (see :ref:`get_world_2d()`). .. rst-class:: classref-section-separator @@ -531,9 +539,9 @@ Property Descriptions - |void| **set_clip_children_mode**\ (\ value\: :ref:`ClipChildrenMode`\ ) - :ref:`ClipChildrenMode` **get_clip_children_mode**\ (\ ) -Allows the current node to clip child nodes, essentially acting as a mask. +The mode in which this node clips its children, acting as a mask. -\ **Note:** Clipping nodes cannot be nested or placed within :ref:`CanvasGroup`\ s. If an ancestor of this node clips its children or is a :ref:`CanvasGroup`, then this node's clip mode should be set to :ref:`CLIP_CHILDREN_DISABLED` to avoid unexpected behavior. +\ **Note:** Clipping nodes cannot be nested or placed within a :ref:`CanvasGroup`. If an ancestor of this node clips its children or is a :ref:`CanvasGroup`, then this node's clip mode should be set to :ref:`CLIP_CHILDREN_DISABLED` to avoid unexpected behavior. .. rst-class:: classref-item-separator @@ -603,7 +611,7 @@ The color applied to this **CanvasItem**. This property does affect child **Canv The color applied to this **CanvasItem**. This property does **not** affect child **CanvasItem**\ s, unlike :ref:`modulate` which affects both the node itself and its children. -\ **Note:** Internal children (e.g. sliders in :ref:`ColorPicker` or tab bar in :ref:`TabContainer`) are also not affected by this property (see ``include_internal`` parameter of :ref:`Node.get_child()` and other similar methods). +\ **Note:** Internal children are also not affected by this property (see the ``include_internal`` parameter in :ref:`Node.add_child()`). For built-in nodes this includes sliders in :ref:`ColorPicker`, and the tab bar in :ref:`TabContainer`. .. rst-class:: classref-item-separator @@ -620,7 +628,7 @@ The color applied to this **CanvasItem**. This property does **not** affect chil - |void| **set_draw_behind_parent**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_draw_behind_parent_enabled**\ (\ ) -If ``true``, the object draws behind its parent. +If ``true``, this node draws behind its parent. .. rst-class:: classref-item-separator @@ -637,7 +645,7 @@ If ``true``, the object draws behind its parent. - |void| **set_texture_filter**\ (\ value\: :ref:`TextureFilter`\ ) - :ref:`TextureFilter` **get_texture_filter**\ (\ ) -The texture filtering mode to use on this **CanvasItem**. +The filtering mode used to render this **CanvasItem**'s texture(s). .. rst-class:: classref-item-separator @@ -654,7 +662,7 @@ The texture filtering mode to use on this **CanvasItem**. - |void| **set_texture_repeat**\ (\ value\: :ref:`TextureRepeat`\ ) - :ref:`TextureRepeat` **get_texture_repeat**\ (\ ) -The texture repeating mode to use on this **CanvasItem**. +The repeating mode used to render this **CanvasItem**'s texture(s). .. rst-class:: classref-item-separator @@ -688,7 +696,7 @@ If ``true``, this **CanvasItem** will *not* inherit its transform from parent ** - |void| **set_use_parent_material**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **get_use_parent_material**\ (\ ) -If ``true``, the parent **CanvasItem**'s :ref:`material` property is used as this one's material. +If ``true``, the parent **CanvasItem**'s :ref:`material` is used as this node's material. .. rst-class:: classref-item-separator @@ -762,7 +770,9 @@ Nodes sort relative to each other only if they are on the same :ref:`z_index`\ ) - :ref:`bool` **is_z_relative**\ (\ ) -If ``true``, the node's Z index is relative to its parent's Z index. If this node's Z index is 2 and its parent's effective Z index is 3, then this node's effective Z index will be 2 + 3 = 5. +If ``true``, this node's final Z index is relative to its parent's Z index. + +For example, if :ref:`z_index` is ``2`` and its parent's final Z index is ``3``, then this node's final Z index will be ``5`` (``2 + 3``). .. rst-class:: classref-item-separator @@ -779,9 +789,9 @@ If ``true``, the node's Z index is relative to its parent's Z index. If this nod - |void| **set_z_index**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_z_index**\ (\ ) -Controls the order in which the nodes render. A node with a higher Z index will display in front of others. Must be between :ref:`RenderingServer.CANVAS_ITEM_Z_MIN` and :ref:`RenderingServer.CANVAS_ITEM_Z_MAX` (inclusive). +The order in which this node is drawn. A node with a higher Z index will display in front of others. Must be between :ref:`RenderingServer.CANVAS_ITEM_Z_MIN` and :ref:`RenderingServer.CANVAS_ITEM_Z_MAX` (inclusive). -\ **Note:** Changing the Z index of a :ref:`Control` only affects the drawing order, not the order in which input events are handled. This can be useful to implement certain UI animations, e.g. a menu where hovered items are scaled and should overlap others. +\ **Note:** The Z index does **not** affect the order in which **CanvasItem** nodes are processed or the way input events are handled. This is especially important to keep in mind for :ref:`Control` nodes. .. rst-class:: classref-section-separator @@ -1260,7 +1270,9 @@ Draws a textured rectangle from a texture's region (specified by ``src_rect``) a |void| **force_update_transform**\ (\ ) :ref:`🔗` -Forces the transform to update. Transform changes in physics are not instant for performance reasons. Transforms are accumulated and then set. Use this if you need an up-to-date transform when doing physics operations. +Forces the node's transform to update. Fails if the node is not inside the tree. See also :ref:`get_transform()`. + +\ **Note:** For performance reasons, transform changes are usually accumulated and applied *once* at the end of the frame. The update propagates through **CanvasItem** children, as well. Therefore, use this method only when you need an up-to-date transform (such as during physics operations). .. rst-class:: classref-item-separator @@ -1272,7 +1284,7 @@ Forces the transform to update. Transform changes in physics are not instant for :ref:`RID` **get_canvas**\ (\ ) |const| :ref:`🔗` -Returns the :ref:`RID` of the :ref:`World2D` canvas where this item is in. +Returns the :ref:`RID` of the :ref:`World2D` canvas where this node is registered to, used by the :ref:`RenderingServer`. .. rst-class:: classref-item-separator @@ -1284,7 +1296,7 @@ Returns the :ref:`RID` of the :ref:`World2D` canvas wh :ref:`RID` **get_canvas_item**\ (\ ) |const| :ref:`🔗` -Returns the canvas item RID used by :ref:`RenderingServer` for this item. +Returns the internal canvas item :ref:`RID` used by the :ref:`RenderingServer` for this node. .. rst-class:: classref-item-separator @@ -1308,7 +1320,7 @@ Returns the :ref:`CanvasLayer` that contains this node, or `` :ref:`Transform2D` **get_canvas_transform**\ (\ ) |const| :ref:`🔗` -Returns the transform from the coordinate system of the canvas, this item is in, to the :ref:`Viewport`\ s coordinate system. +Returns the transform of this node, converted from its registered canvas's coordinate system to its viewport's coordinate system. See also :ref:`Node.get_viewport()`. .. rst-class:: classref-item-separator @@ -1320,7 +1332,7 @@ Returns the transform from the coordinate system of the canvas, this item is in, :ref:`Vector2` **get_global_mouse_position**\ (\ ) |const| :ref:`🔗` -Returns the mouse's position in the :ref:`CanvasLayer` that this **CanvasItem** is in using the coordinate system of the :ref:`CanvasLayer`. +Returns mouse cursor's global position relative to the :ref:`CanvasLayer` that contains this node. \ **Note:** For screen-space coordinates (e.g. when using a non-embedded :ref:`Popup`), you can use :ref:`DisplayServer.mouse_get_position()`. @@ -1396,7 +1408,7 @@ Equals to :ref:`get_global_transform()` **get_transform**\ (\ ) |const| :ref:`🔗` -Returns the transform matrix of this item. +Returns the transform matrix of this **CanvasItem**. .. rst-class:: classref-item-separator @@ -1408,7 +1420,7 @@ Returns the transform matrix of this item. :ref:`Rect2` **get_viewport_rect**\ (\ ) |const| :ref:`🔗` -Returns the viewport's boundaries as a :ref:`Rect2`. +Returns this node's viewport boundaries as a :ref:`Rect2`. See also :ref:`Node.get_viewport()`. .. rst-class:: classref-item-separator @@ -1420,7 +1432,7 @@ Returns the viewport's boundaries as a :ref:`Rect2`. :ref:`Transform2D` **get_viewport_transform**\ (\ ) |const| :ref:`🔗` -Returns the transform from the coordinate system of the canvas, this item is in, to the :ref:`Viewport`\ s embedders coordinate system. +Returns the transform of this node, converted from its registered canvas's coordinate system to its viewport embedder's coordinate system. See also :ref:`Viewport.get_final_transform()` and :ref:`Node.get_viewport()`. .. rst-class:: classref-item-separator @@ -1432,7 +1444,7 @@ Returns the transform from the coordinate system of the canvas, this item is in, :ref:`bool` **get_visibility_layer_bit**\ (\ layer\: :ref:`int`\ ) |const| :ref:`🔗` -Returns an individual bit on the rendering visibility layer. +Returns ``true`` if the layer at the given index is set in :ref:`visibility_layer`. .. rst-class:: classref-item-separator @@ -1444,7 +1456,9 @@ Returns an individual bit on the rendering visibility layer. :ref:`World2D` **get_world_2d**\ (\ ) |const| :ref:`🔗` -Returns the :ref:`World2D` where this item is in. +Returns the :ref:`World2D` this node is registered to. + +Usually, this is the same as this node's viewport (see :ref:`Node.get_viewport()` and :ref:`Viewport.find_world_2d()`). .. rst-class:: classref-item-separator @@ -1468,7 +1482,7 @@ Hide the **CanvasItem** if it's currently visible. This is equivalent to setting :ref:`bool` **is_local_transform_notification_enabled**\ (\ ) |const| :ref:`🔗` -Returns ``true`` if local transform notifications are communicated to children. +Returns ``true`` if the node receives :ref:`NOTIFICATION_LOCAL_TRANSFORM_CHANGED` whenever its local transform changes. This is enabled with :ref:`set_notify_local_transform()`. .. rst-class:: classref-item-separator @@ -1480,7 +1494,7 @@ Returns ``true`` if local transform notifications are communicated to children. :ref:`bool` **is_transform_notification_enabled**\ (\ ) |const| :ref:`🔗` -Returns ``true`` if global transform notifications are communicated to children. +Returns ``true`` if the node receives :ref:`NOTIFICATION_TRANSFORM_CHANGED` whenever its global transform changes. This is enabled with :ref:`set_notify_transform()`. .. rst-class:: classref-item-separator @@ -1526,7 +1540,7 @@ For the opposite operation, use :ref:`get_global_transform_with_canvas()` **make_input_local**\ (\ event\: :ref:`InputEvent`\ ) |const| :ref:`🔗` -Transformations issued by ``event``'s inputs are applied in local space instead of global space. +Returns a copy of the given ``event`` with its coordinates converted from global space to this **CanvasItem**'s local space. If not possible, returns the same :ref:`InputEvent` unchanged. .. rst-class:: classref-item-separator @@ -1538,9 +1552,7 @@ Transformations issued by ``event``'s inputs are applied in local space instead |void| **move_to_front**\ (\ ) :ref:`🔗` -Moves this node to display on top of its siblings. - -Internally, the node is moved to the bottom of parent's child list. The method has no effect on nodes without a parent. +Moves this node below its siblings, usually causing the node to draw on top of its siblings. Does nothing if this node does not have a parent. See also :ref:`Node.move_child()`. .. rst-class:: classref-item-separator @@ -1580,7 +1592,9 @@ Set the value of a shader uniform for this instance only (`per-instance uniform |void| **set_notify_local_transform**\ (\ enable\: :ref:`bool`\ ) :ref:`🔗` -If ``enable`` is ``true``, this node will receive :ref:`NOTIFICATION_LOCAL_TRANSFORM_CHANGED` when its local transform changes. +If ``true``, the node will receive :ref:`NOTIFICATION_LOCAL_TRANSFORM_CHANGED` whenever its local transform changes. + +\ **Note:** Many canvas items such as :ref:`Bone2D` or :ref:`CollisionShape2D` automatically enable this in order to function correctly. .. rst-class:: classref-item-separator @@ -1592,7 +1606,9 @@ If ``enable`` is ``true``, this node will receive :ref:`NOTIFICATION_LOCAL_TRANS |void| **set_notify_transform**\ (\ enable\: :ref:`bool`\ ) :ref:`🔗` -If ``enable`` is ``true``, this node will receive :ref:`NOTIFICATION_TRANSFORM_CHANGED` when its global transform changes. +If ``true``, the node will receive :ref:`NOTIFICATION_TRANSFORM_CHANGED` whenever global transform changes. + +\ **Note:** Many canvas items such as :ref:`Camera2D` or :ref:`Light2D` automatically enable this in order to function correctly. .. rst-class:: classref-item-separator @@ -1616,7 +1632,9 @@ Set/clear individual bits on the rendering visibility layer. This simplifies edi |void| **show**\ (\ ) :ref:`🔗` -Show the **CanvasItem** if it's currently hidden. This is equivalent to setting :ref:`visible` to ``true``. For controls that inherit :ref:`Popup`, the correct way to make them visible is to call one of the multiple ``popup*()`` functions instead. +Show the **CanvasItem** if it's currently hidden. This is equivalent to setting :ref:`visible` to ``true``. + +\ **Note:** For controls that inherit :ref:`Popup`, the correct way to make them visible is to call one of the multiple ``popup*()`` functions instead. .. |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.)` diff --git a/classes/class_canvaslayer.rst b/classes/class_canvaslayer.rst index 5b40f4504..00a7ee70d 100644 --- a/classes/class_canvaslayer.rst +++ b/classes/class_canvaslayer.rst @@ -27,7 +27,7 @@ Description \ **Note:** Embedded :ref:`Window`\ s are placed on layer ``1024``. :ref:`CanvasItem`\ s on layers ``1025`` and higher appear in front of embedded windows. -\ **Note:** Each **CanvasLayer** is drawn on one specific :ref:`Viewport` and cannot be shared between multiple :ref:`Viewport`\ s, see :ref:`custom_viewport`. When using multiple :ref:`Viewport`\ s, for example in a split-screen game, you need create an individual **CanvasLayer** for each :ref:`Viewport` you want it to be drawn on. +\ **Note:** Each **CanvasLayer** is drawn on one specific :ref:`Viewport` and cannot be shared between multiple :ref:`Viewport`\ s, see :ref:`custom_viewport`. When using multiple :ref:`Viewport`\ s, for example in a split-screen game, you need to create an individual **CanvasLayer** for each :ref:`Viewport` you want it to be drawn on. .. rst-class:: classref-introduction-group diff --git a/classes/class_characterbody2d.rst b/classes/class_characterbody2d.rst index f6466d0d7..a2a3119f2 100644 --- a/classes/class_characterbody2d.rst +++ b/classes/class_characterbody2d.rst @@ -298,7 +298,7 @@ If ``false``, the body will slide on floor's slopes when :ref:`velocity`\ ) - :ref:`int` **get_max_slides**\ (\ ) -Maximum number of times the body can change direction before it stops when calling :ref:`move_and_slide()`. +Maximum number of times the body can change direction before it stops when calling :ref:`move_and_slide()`. Must be greater than zero. .. rst-class:: classref-item-separator @@ -457,7 +457,7 @@ Current velocity vector in pixels per second, used and modified during calls to - |void| **set_wall_min_slide_angle**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_wall_min_slide_angle**\ (\ ) -Minimum angle (in radians) where the body is allowed to slide when it encounters a slope. The default value equals 15 degrees. This property only affects movement when :ref:`motion_mode` is :ref:`MOTION_MODE_FLOATING`. +Minimum angle (in radians) where the body is allowed to slide when it encounters a wall. The default value equals 15 degrees. This property only affects movement when :ref:`motion_mode` is :ref:`MOTION_MODE_FLOATING`. .. rst-class:: classref-section-separator diff --git a/classes/class_characterbody3d.rst b/classes/class_characterbody3d.rst index fe884d888..38d91856d 100644 --- a/classes/class_characterbody3d.rst +++ b/classes/class_characterbody3d.rst @@ -302,7 +302,7 @@ If ``false``, the body will slide on floor's slopes when :ref:`velocity`\ ) - :ref:`int` **get_max_slides**\ (\ ) -Maximum number of times the body can change direction before it stops when calling :ref:`move_and_slide()`. +Maximum number of times the body can change direction before it stops when calling :ref:`move_and_slide()`. Must be greater than zero. .. rst-class:: classref-item-separator @@ -461,7 +461,7 @@ Current velocity vector (typically meters per second), used and modified during - |void| **set_wall_min_slide_angle**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_wall_min_slide_angle**\ (\ ) -Minimum angle (in radians) where the body is allowed to slide when it encounters a slope. The default value equals 15 degrees. When :ref:`motion_mode` is :ref:`MOTION_MODE_GROUNDED`, it only affects movement if :ref:`floor_block_on_wall` is ``true``. +Minimum angle (in radians) where the body is allowed to slide when it encounters a wall. The default value equals 15 degrees. When :ref:`motion_mode` is :ref:`MOTION_MODE_GROUNDED`, it only affects movement if :ref:`floor_block_on_wall` is ``true``. .. rst-class:: classref-section-separator diff --git a/classes/class_checkbox.rst b/classes/class_checkbox.rst index 3bae89dfe..e274cd54c 100644 --- a/classes/class_checkbox.rst +++ b/classes/class_checkbox.rst @@ -47,25 +47,29 @@ Theme Properties .. table:: :widths: auto - +-----------------------------------+-------------------------------------------------------------------------------------+-------+ - | :ref:`int` | :ref:`check_v_offset` | ``0`` | - +-----------------------------------+-------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`checked` | | - +-----------------------------------+-------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`checked_disabled` | | - +-----------------------------------+-------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`radio_checked` | | - +-----------------------------------+-------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`radio_checked_disabled` | | - +-----------------------------------+-------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`radio_unchecked` | | - +-----------------------------------+-------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`radio_unchecked_disabled` | | - +-----------------------------------+-------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`unchecked` | | - +-----------------------------------+-------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`unchecked_disabled` | | - +-----------------------------------+-------------------------------------------------------------------------------------+-------+ + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Color` | :ref:`checkbox_checked_color` | ``Color(1, 1, 1, 1)`` | + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Color` | :ref:`checkbox_unchecked_color` | ``Color(1, 1, 1, 1)`` | + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`check_v_offset` | ``0`` | + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`checked` | | + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`checked_disabled` | | + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`radio_checked` | | + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`radio_checked_disabled` | | + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`radio_unchecked` | | + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`radio_unchecked_disabled` | | + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`unchecked` | | + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`unchecked_disabled` | | + +-----------------------------------+--------------------------------------------------------------------------------------+-----------------------+ .. rst-class:: classref-section-separator @@ -76,6 +80,30 @@ Theme Properties Theme Property Descriptions --------------------------- +.. _class_CheckBox_theme_color_checkbox_checked_color: + +.. rst-class:: classref-themeproperty + +:ref:`Color` **checkbox_checked_color** = ``Color(1, 1, 1, 1)`` :ref:`🔗` + +The color of the checked icon when the checkbox is pressed. + +.. rst-class:: classref-item-separator + +---- + +.. _class_CheckBox_theme_color_checkbox_unchecked_color: + +.. rst-class:: classref-themeproperty + +:ref:`Color` **checkbox_unchecked_color** = ``Color(1, 1, 1, 1)`` :ref:`🔗` + +The color of the unchecked icon when the checkbox is not pressed. + +.. rst-class:: classref-item-separator + +---- + .. _class_CheckBox_theme_constant_check_v_offset: .. rst-class:: classref-themeproperty diff --git a/classes/class_checkbutton.rst b/classes/class_checkbutton.rst index 2da645a50..2d1de710d 100644 --- a/classes/class_checkbutton.rst +++ b/classes/class_checkbutton.rst @@ -45,25 +45,29 @@ Theme Properties .. table:: :widths: auto - +-----------------------------------+----------------------------------------------------------------------------------------------+-------+ - | :ref:`int` | :ref:`check_v_offset` | ``0`` | - +-----------------------------------+----------------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`checked` | | - +-----------------------------------+----------------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`checked_disabled` | | - +-----------------------------------+----------------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`checked_disabled_mirrored` | | - +-----------------------------------+----------------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`checked_mirrored` | | - +-----------------------------------+----------------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`unchecked` | | - +-----------------------------------+----------------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`unchecked_disabled` | | - +-----------------------------------+----------------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`unchecked_disabled_mirrored` | | - +-----------------------------------+----------------------------------------------------------------------------------------------+-------+ - | :ref:`Texture2D` | :ref:`unchecked_mirrored` | | - +-----------------------------------+----------------------------------------------------------------------------------------------+-------+ + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Color` | :ref:`button_checked_color` | ``Color(1, 1, 1, 1)`` | + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Color` | :ref:`button_unchecked_color` | ``Color(1, 1, 1, 1)`` | + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`check_v_offset` | ``0`` | + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`checked` | | + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`checked_disabled` | | + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`checked_disabled_mirrored` | | + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`checked_mirrored` | | + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`unchecked` | | + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`unchecked_disabled` | | + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`unchecked_disabled_mirrored` | | + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`Texture2D` | :ref:`unchecked_mirrored` | | + +-----------------------------------+----------------------------------------------------------------------------------------------+-----------------------+ .. rst-class:: classref-section-separator @@ -74,6 +78,30 @@ Theme Properties Theme Property Descriptions --------------------------- +.. _class_CheckButton_theme_color_button_checked_color: + +.. rst-class:: classref-themeproperty + +:ref:`Color` **button_checked_color** = ``Color(1, 1, 1, 1)`` :ref:`🔗` + +The color of the checked icon when the checkbox is pressed. + +.. rst-class:: classref-item-separator + +---- + +.. _class_CheckButton_theme_color_button_unchecked_color: + +.. rst-class:: classref-themeproperty + +:ref:`Color` **button_unchecked_color** = ``Color(1, 1, 1, 1)`` :ref:`🔗` + +The color of the unchecked icon when the checkbox is not pressed. + +.. rst-class:: classref-item-separator + +---- + .. _class_CheckButton_theme_constant_check_v_offset: .. rst-class:: classref-themeproperty diff --git a/classes/class_codeedit.rst b/classes/class_codeedit.rst index 16206bd74..a60ff6d88 100644 --- a/classes/class_codeedit.rst +++ b/classes/class_codeedit.rst @@ -310,7 +310,7 @@ Signals **breakpoint_toggled**\ (\ line\: :ref:`int`\ ) :ref:`🔗` -Emitted when a breakpoint is added or removed from a line. If the line is moved via backspace a removed is emitted at the old line. +Emitted when a breakpoint is added or removed from a line. If the line is removed via backspace, a signal is emitted at the old line. .. rst-class:: classref-item-separator @@ -827,7 +827,7 @@ If ``true``, lines can be folded. Otherwise, line folding methods like :ref:`fol - |void| **set_line_length_guidelines**\ (\ value\: :ref:`Array`\[:ref:`int`\]\ ) - :ref:`Array`\[:ref:`int`\] **get_line_length_guidelines**\ (\ ) -Draws vertical lines at the provided columns. The first entry is considered a main hard guideline and is draw more prominently. +Draws vertical lines at the provided columns. The first entry is considered a main hard guideline and is drawn more prominently. .. rst-class:: classref-item-separator @@ -861,7 +861,7 @@ Set when a validated word from :ref:`symbol_validate`\ ) - :ref:`bool` **is_symbol_tooltip_on_hover_enabled**\ (\ ) -Set when a word is hovered, the :ref:`symbol_hovered` should be emitted. +If ``true``, the :ref:`symbol_hovered` signal is emitted when hovering over a word. .. rst-class:: classref-section-separator diff --git a/classes/class_color.rst b/classes/class_color.rst index 18deb2abd..0e79902e4 100644 --- a/classes/class_color.rst +++ b/classes/class_color.rst @@ -21,6 +21,8 @@ A color represented in RGBA format by a red (:ref:`r`), Colors can be created in various ways: By the various **Color** constructors, by static methods such as :ref:`from_hsv()`, and by using a name from the set of standardized colors based on `X11 color names `__ with the addition of :ref:`TRANSPARENT`. GDScript also provides :ref:`@GDScript.Color8()`, which uses integers from ``0`` to ``255`` and doesn't support overbright colors. +Color data may be stored in many color spaces and encodings. The :ref:`srgb_to_linear()` and :ref:`linear_to_srgb()` methods can convert between nonlinear sRGB encoding and linear RGB encoding. + \ **Note:** In a boolean context, a Color will evaluate to ``false`` if it is equal to ``Color(0, 0, 0, 1)`` (opaque black). Otherwise, a Color will always evaluate to ``true``. \ `Color constants cheatsheet `__ @@ -1394,6 +1396,8 @@ Property Descriptions The color's alpha component, typically on the range of 0 to 1. A value of 0 means that the color is fully transparent. A value of 1 means that the color is fully opaque. +\ **Note:** The alpha channel is always stored with linear encoding, regardless of the color space of the other color channels. The :ref:`linear_to_srgb()` and :ref:`srgb_to_linear()` methods do not affect the alpha channel. + .. rst-class:: classref-item-separator ---- @@ -2081,6 +2085,8 @@ Returns a new color resulting from making this color lighter by the specified `` Returns the color converted to the `sRGB `__ color space. This method assumes the original color is in the linear color space. See also :ref:`srgb_to_linear()` which performs the opposite operation. +\ **Note:** The color's :ref:`a`\ lpha channel is not affected. The alpha channel is always stored with linear encoding, regardless of the color space of the other color channels. + .. rst-class:: classref-item-separator ---- @@ -2093,6 +2099,8 @@ Returns the color converted to the `sRGB `__ Returns the color converted to the linear color space. This method assumes the original color already is in the sRGB color space. See also :ref:`linear_to_srgb()` which performs the opposite operation. +\ **Note:** The color's :ref:`a`\ lpha channel is not affected. The alpha channel is always stored with linear encoding, regardless of the color space of the other color channels. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_colorpicker.rst b/classes/class_colorpicker.rst index 632d9e11c..d88db9cb4 100644 --- a/classes/class_colorpicker.rst +++ b/classes/class_colorpicker.rst @@ -92,49 +92,57 @@ Theme Properties .. table:: :widths: auto - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`int` | :ref:`center_slider_grabbers` | ``1`` | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`int` | :ref:`h_width` | ``30`` | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`int` | :ref:`label_width` | ``10`` | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`int` | :ref:`margin` | ``4`` | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`int` | :ref:`sv_height` | ``256`` | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`int` | :ref:`sv_width` | ``256`` | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`add_preset` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`bar_arrow` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`color_hue` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`expanded_arrow` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`folded_arrow` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`menu_option` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`overbright_indicator` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`picker_cursor` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`picker_cursor_bg` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`sample_bg` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`sample_revert` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`screen_picker` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`shape_circle` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`shape_rect` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ - | :ref:`Texture2D` | :ref:`shape_rect_wheel` | | - +-----------------------------------+----------------------------------------------------------------------------------------+---------+ + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Color` | :ref:`focused_not_editing_cursor_color` | ``Color(1, 1, 1, 0.275)`` | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`int` | :ref:`center_slider_grabbers` | ``1`` | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`int` | :ref:`h_width` | ``30`` | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`int` | :ref:`label_width` | ``10`` | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`int` | :ref:`margin` | ``4`` | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`int` | :ref:`sv_height` | ``256`` | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`int` | :ref:`sv_width` | ``256`` | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`add_preset` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`bar_arrow` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`color_hue` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`expanded_arrow` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`folded_arrow` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`menu_option` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`overbright_indicator` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`picker_cursor` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`picker_cursor_bg` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`sample_bg` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`sample_revert` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`screen_picker` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`shape_circle` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`shape_rect` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`Texture2D` | :ref:`shape_rect_wheel` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`StyleBox` | :ref:`picker_focus_circle` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`StyleBox` | :ref:`picker_focus_rectangle` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ + | :ref:`StyleBox` | :ref:`sample_focus` | | + +-----------------------------------+---------------------------------------------------------------------------------------------------------+---------------------------+ .. rst-class:: classref-section-separator @@ -560,6 +568,18 @@ Returns the list of colors in the recent presets of the color picker. Theme Property Descriptions --------------------------- +.. _class_ColorPicker_theme_color_focused_not_editing_cursor_color: + +.. rst-class:: classref-themeproperty + +:ref:`Color` **focused_not_editing_cursor_color** = ``Color(1, 1, 1, 0.275)`` :ref:`🔗` + +Color of rectangle or circle drawn when a picker shape part is focused but not editable via keyboard or joypad. Displayed *over* the picker shape, so a partially transparent color should be used to ensure the picker shape remains visible. + +.. rst-class:: classref-item-separator + +---- + .. _class_ColorPicker_theme_constant_center_slider_grabbers: .. rst-class:: classref-themeproperty @@ -808,6 +828,42 @@ The icon for rectangular picker shapes. The icon for rectangular wheel picker shapes. +.. rst-class:: classref-item-separator + +---- + +.. _class_ColorPicker_theme_style_picker_focus_circle: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **picker_focus_circle** :ref:`🔗` + +The :ref:`StyleBox` used when the circle-shaped part of the picker is focused. Displayed *over* the picker shape, so a partially transparent :ref:`StyleBox` should be used to ensure the picker shape remains visible. A :ref:`StyleBox` that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a :ref:`StyleBoxEmpty` resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ColorPicker_theme_style_picker_focus_rectangle: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **picker_focus_rectangle** :ref:`🔗` + +The :ref:`StyleBox` used when the rectangle-shaped part of the picker is focused. Displayed *over* the picker shape, so a partially transparent :ref:`StyleBox` should be used to ensure the picker shape remains visible. A :ref:`StyleBox` that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a :ref:`StyleBoxEmpty` resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ColorPicker_theme_style_sample_focus: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **sample_focus** :ref:`🔗` + +The :ref:`StyleBox` used for the old color sample part when it is focused. Displayed *over* the sample, so a partially transparent :ref:`StyleBox` should be used to ensure the picker shape remains visible. A :ref:`StyleBox` that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a :ref:`StyleBoxEmpty` resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. + .. |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.)` diff --git a/classes/class_container.rst b/classes/class_container.rst index fedccd936..0453c7282 100644 --- a/classes/class_container.rst +++ b/classes/class_container.rst @@ -12,7 +12,7 @@ Container **Inherits:** :ref:`Control` **<** :ref:`CanvasItem` **<** :ref:`Node` **<** :ref:`Object` -**Inherited By:** :ref:`AspectRatioContainer`, :ref:`BoxContainer`, :ref:`CenterContainer`, :ref:`EditorProperty`, :ref:`FlowContainer`, :ref:`GraphElement`, :ref:`GridContainer`, :ref:`MarginContainer`, :ref:`PanelContainer`, :ref:`ScrollContainer`, :ref:`SplitContainer`, :ref:`SubViewportContainer`, :ref:`TabContainer` +**Inherited By:** :ref:`AspectRatioContainer`, :ref:`BoxContainer`, :ref:`CenterContainer`, :ref:`EditorProperty`, :ref:`FlowContainer`, :ref:`FoldableContainer`, :ref:`GraphElement`, :ref:`GridContainer`, :ref:`MarginContainer`, :ref:`PanelContainer`, :ref:`ScrollContainer`, :ref:`SplitContainer`, :ref:`SubViewportContainer`, :ref:`TabContainer` Base class for all GUI containers. diff --git a/classes/class_control.rst b/classes/class_control.rst index 8ea934ec2..eb5d2f25b 100644 --- a/classes/class_control.rst +++ b/classes/class_control.rst @@ -95,6 +95,8 @@ Properties +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`NodePath` | :ref:`focus_previous` | ``NodePath("")`` | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`RecursiveBehavior` | :ref:`focus_recursive_behavior` | ``0`` | + +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`global_position` | | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`GrowDirection` | :ref:`grow_horizontal` | ``1`` | @@ -111,6 +113,8 @@ Properties +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`mouse_force_pass_scroll_events` | ``true`` | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`RecursiveBehavior` | :ref:`mouse_recursive_behavior` | ``0`` | + +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`float` | :ref:`offset_bottom` | ``0.0`` | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`float` | :ref:`offset_left` | ``0.0`` | @@ -158,6 +162,8 @@ Methods .. table:: :widths: auto + +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_accessibility_get_contextual_info`\ (\ ) |virtual| |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`_can_drop_data`\ (\ at_position\: :ref:`Vector2`, data\: :ref:`Variant`\ ) |virtual| |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -179,6 +185,10 @@ Methods +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`accept_event`\ (\ ) | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_drag`\ (\ ) | + +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_drop`\ (\ ) | + +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`add_theme_color_override`\ (\ name\: :ref:`StringName`, color\: :ref:`Color`\ ) | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`add_theme_constant_override`\ (\ name\: :ref:`StringName`, constant\: :ref:`int`\ ) | @@ -213,12 +223,16 @@ Methods +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`get_end`\ (\ ) |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`FocusMode` | :ref:`get_focus_mode_with_recursive`\ (\ ) |const| | + +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`NodePath` | :ref:`get_focus_neighbor`\ (\ side\: :ref:`Side`\ ) |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Rect2` | :ref:`get_global_rect`\ (\ ) |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`get_minimum_size`\ (\ ) |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`MouseFilter` | :ref:`get_mouse_filter_with_recursive`\ (\ ) |const| | + +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_offset`\ (\ offset\: :ref:`Side`\ ) |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`get_parent_area_size`\ (\ ) |const| | @@ -496,6 +510,48 @@ The node can only grab focus on mouse clicks. Use with :ref:`focus_mode`. +.. _class_Control_constant_FOCUS_ACCESSIBILITY: + +.. rst-class:: classref-enumeration-constant + +:ref:`FocusMode` **FOCUS_ACCESSIBILITY** = ``3`` + +The node can grab focus only when screen reader is active. Use with :ref:`focus_mode`. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_Control_RecursiveBehavior: + +.. rst-class:: classref-enumeration + +enum **RecursiveBehavior**: :ref:`🔗` + +.. _class_Control_constant_RECURSIVE_BEHAVIOR_INHERITED: + +.. rst-class:: classref-enumeration-constant + +:ref:`RecursiveBehavior` **RECURSIVE_BEHAVIOR_INHERITED** = ``0`` + +Inherits the associated behavior from the control's parent. This is the default for any newly created control. + +.. _class_Control_constant_RECURSIVE_BEHAVIOR_DISABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`RecursiveBehavior` **RECURSIVE_BEHAVIOR_DISABLED** = ``1`` + +The current control and all its recursive child controls have their associated behavior disabled, regardless of the parent control's configuration. + +.. _class_Control_constant_RECURSIVE_BEHAVIOR_ENABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`RecursiveBehavior` **RECURSIVE_BEHAVIOR_ENABLED** = ``2`` + +The current control and all its recursive child controls have their associated behavior enabled, regardless of the parent control's configuration. + .. rst-class:: classref-item-separator ---- @@ -1480,6 +1536,23 @@ If this property is not set, Godot will select a "best guess" based on surroundi ---- +.. _class_Control_property_focus_recursive_behavior: + +.. rst-class:: classref-property + +:ref:`RecursiveBehavior` **focus_recursive_behavior** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_focus_recursive_behavior**\ (\ value\: :ref:`RecursiveBehavior`\ ) +- :ref:`RecursiveBehavior` **get_focus_recursive_behavior**\ (\ ) + +Controls whether the recursive child nodes should have their :ref:`focus_mode` overridden to :ref:`FOCUS_NONE` when evaluating input. + +.. rst-class:: classref-item-separator + +---- + .. _class_Control_property_global_position: .. rst-class:: classref-property @@ -1623,6 +1696,23 @@ You should disable it on the root of your UI if you do not want scroll events to ---- +.. _class_Control_property_mouse_recursive_behavior: + +.. rst-class:: classref-property + +:ref:`RecursiveBehavior` **mouse_recursive_behavior** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_mouse_recursive_behavior**\ (\ value\: :ref:`RecursiveBehavior`\ ) +- :ref:`RecursiveBehavior` **get_mouse_recursive_behavior**\ (\ ) + +Controls whether the recursive child nodes should have their :ref:`mouse_filter` overridden to :ref:`MOUSE_FILTER_IGNORE` when evaluating input. + +.. rst-class:: classref-item-separator + +---- + .. _class_Control_property_offset_bottom: .. rst-class:: classref-property @@ -1985,6 +2075,18 @@ The tooltip popup will use either a default implementation, or a custom one that Method Descriptions ------------------- +.. _class_Control_private_method__accessibility_get_contextual_info: + +.. rst-class:: classref-method + +:ref:`String` **_accessibility_get_contextual_info**\ (\ ) |virtual| |const| :ref:`🔗` + +Return the description of the keyboard shortcuts and other contextual help for this control. + +.. rst-class:: classref-item-separator + +---- + .. _class_Control_private_method__can_drop_data: .. rst-class:: classref-method @@ -1995,6 +2097,8 @@ Godot calls this method to test if ``data`` from a control's :ref:`_get_drag_dat This method should only be used to test the data. Process the data in :ref:`_drop_data()`. +\ **Note:** If drag was initiated by keyboard shortcut or :ref:`accessibility_drag()`, ``at_position`` is set to ``Vector2(INFINITY, INFINITY)`` and the currently selected item/text position should be used as drop position. + .. tabs:: @@ -2028,6 +2132,8 @@ This method should only be used to test the data. Process the data in :ref:`_dro Godot calls this method to pass you the ``data`` from a control's :ref:`_get_drag_data()` result. Godot first calls :ref:`_can_drop_data()` to test if ``data`` is allowed to drop at ``at_position`` where ``at_position`` is local to this control. +\ **Note:** If drag was initiated by keyboard shortcut or :ref:`accessibility_drag()`, ``at_position`` is set to ``Vector2(INFINITY, INFINITY)`` and the currently selected item/text position should be used as drop position. + .. tabs:: @@ -2067,6 +2173,8 @@ Godot calls this method to get data that can be dragged and dropped onto control A preview that will follow the mouse that should represent the data can be set with :ref:`set_drag_preview()`. A good time to set the preview is in this method. +\ **Note:** If drag was initiated by keyboard shortcut or :ref:`accessibility_drag()`, ``at_position`` is set to ``Vector2(INFINITY, INFINITY)`` and the currently selected item/text position should be used as drop position. + .. tabs:: @@ -2287,6 +2395,30 @@ Marks an input event as handled. Once you accept an input event, it stops propag ---- +.. _class_Control_method_accessibility_drag: + +.. rst-class:: classref-method + +|void| **accessibility_drag**\ (\ ) :ref:`🔗` + +Starts drag-and-drop operation without using a mouse. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Control_method_accessibility_drop: + +.. rst-class:: classref-method + +|void| **accessibility_drop**\ (\ ) :ref:`🔗` + +Ends drag-and-drop operation without using a mouse. + +.. rst-class:: classref-item-separator + +---- + .. _class_Control_method_add_theme_color_override: .. rst-class:: classref-method @@ -2563,6 +2695,18 @@ Returns :ref:`offset_right` and :ref:`offse ---- +.. _class_Control_method_get_focus_mode_with_recursive: + +.. rst-class:: classref-method + +:ref:`FocusMode` **get_focus_mode_with_recursive**\ (\ ) |const| :ref:`🔗` + +Similar to the getter of :ref:`focus_mode`, but takes parent's :ref:`focus_recursive_behavior` into account. + +.. rst-class:: classref-item-separator + +---- + .. _class_Control_method_get_focus_neighbor: .. rst-class:: classref-method @@ -2605,6 +2749,18 @@ Returns the minimum size for this control. See :ref:`custom_minimum_size` **get_mouse_filter_with_recursive**\ (\ ) |const| :ref:`🔗` + +Similar to the getter of :ref:`mouse_filter`, but takes parent's :ref:`mouse_recursive_behavior` into account. + +.. rst-class:: classref-item-separator + +---- + .. _class_Control_method_get_offset: .. rst-class:: classref-method @@ -3087,7 +3243,7 @@ Best used with :ref:`Node.NOTIFICATION_DRAG_END` **is_layout_rtl**\ (\ ) |const| :ref:`🔗` -Returns ``true`` if layout is right-to-left. See also :ref:`layout_direction`. +Returns ``true`` if the layout is right-to-left. See also :ref:`layout_direction`. .. rst-class:: classref-item-separator diff --git a/classes/class_csgshape3d.rst b/classes/class_csgshape3d.rst index 399f7bf00..6f7e11327 100644 --- a/classes/class_csgshape3d.rst +++ b/classes/class_csgshape3d.rst @@ -23,15 +23,13 @@ Description This is the CSG base class that provides CSG operation support to the various CSG nodes in Godot. -\ **Performance:** CSG nodes are only intended for prototyping as they have a significant CPU performance cost. - -Consider baking final CSG operation results into static geometry that replaces the CSG nodes. +\ **Performance:** CSG nodes are only intended for prototyping as they have a significant CPU performance cost. Consider baking final CSG operation results into static geometry that replaces the CSG nodes. Individual CSG root node results can be baked to nodes with static resources with the editor menu that appears when a CSG root node is selected. Individual CSG root nodes can also be baked to static resources with scripts by calling :ref:`bake_static_mesh()` for the visual mesh or :ref:`bake_collision_shape()` for the physics collision. -Entire scenes of CSG nodes can be baked to static geometry and exported with the editor gltf scene exporter. +Entire scenes of CSG nodes can be baked to static geometry and exported with the editor glTF scene exporter: **Scene > Export As... > glTF 2.0 Scene...** .. rst-class:: classref-introduction-group @@ -149,7 +147,7 @@ Property Descriptions - |void| **set_calculate_tangents**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_calculating_tangents**\ (\ ) -Calculate tangents for the CSG shape which allows the use of normal maps. This is only applied on the root shape, this setting is ignored on any child. +Calculate tangents for the CSG shape which allows the use of normal and height maps. This is only applied on the root shape, this setting is ignored on any child. Setting this to ``false`` can speed up shape generation slightly. .. rst-class:: classref-item-separator @@ -278,6 +276,8 @@ Returns a baked physics :ref:`ConcavePolygonShape3D \ **Performance:** If the CSG operation results in a very detailed geometry with many faces physics performance will be very slow. Concave shapes should in general only be used for static level geometry and not with dynamic objects that are moving. +\ **Note:** CSG mesh data updates are deferred, which means they are updated with a delay of one rendered frame. To avoid getting an empty shape or outdated mesh data, make sure to call ``await get_tree().process_frame`` before using :ref:`bake_collision_shape()` in :ref:`Node._ready()` or after changing properties on the **CSGShape3D**. + .. rst-class:: classref-item-separator ---- @@ -290,6 +290,8 @@ Returns a baked physics :ref:`ConcavePolygonShape3D Returns a baked static :ref:`ArrayMesh` of this node's CSG operation result. Materials from involved CSG nodes are added as extra mesh surfaces. Returns an empty mesh if the node is not a CSG root node or has no valid geometry. +\ **Note:** CSG mesh data updates are deferred, which means they are updated with a delay of one rendered frame. To avoid getting an empty mesh or outdated mesh data, make sure to call ``await get_tree().process_frame`` before using :ref:`bake_static_mesh()` in :ref:`Node._ready()` or after changing properties on the **CSGShape3D**. + .. rst-class:: classref-item-separator ---- @@ -326,6 +328,8 @@ Returns whether or not the specified layer of the :ref:`collision_mask` with two elements, the first is the :ref:`Transform3D` of this node and the second is the root :ref:`Mesh` of this node. Only works when this node is the root shape. +\ **Note:** CSG mesh data updates are deferred, which means they are updated with a delay of one rendered frame. To avoid getting an empty shape or outdated mesh data, make sure to call ``await get_tree().process_frame`` before using :ref:`get_meshes()` in :ref:`Node._ready()` or after changing properties on the **CSGShape3D**. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_dictionary.rst b/classes/class_dictionary.rst index cb1f17a6b..4ba418268 100644 --- a/classes/class_dictionary.rst +++ b/classes/class_dictionary.rst @@ -859,7 +859,20 @@ Returns the number of entries in the dictionary. Empty dictionaries (``{ }``) al |void| **sort**\ (\ ) :ref:`🔗` -Sorts the dictionary in-place by key. This can be used to ensure dictionaries with the same contents produce equivalent results when getting the :ref:`keys()`, getting the :ref:`values()`, and converting to a string. This is also useful when wanting a JSON representation consistent with what is in memory, and useful for storing on a database that requires dictionaries to be sorted. +Sorts the dictionary in ascending order, by key. The final order is dependent on the "less than" (``<``) comparison between keys. + + +.. tabs:: + + .. code-tab:: gdscript + + var numbers = { "c": 2, "a": 0, "b": 1 } + numbers.sort() + print(numbers) # Prints { "a": 0, "b": 1, "c": 2 } + + + +This method ensures that the dictionary's entries are ordered consistently when :ref:`keys()` or :ref:`values()` are called, or when the dictionary needs to be converted to a string through :ref:`@GlobalScope.str()` or :ref:`JSON.stringify()`. .. rst-class:: classref-item-separator diff --git a/classes/class_diraccess.rst b/classes/class_diraccess.rst index 1a7764015..ae2dcb8ad 100644 --- a/classes/class_diraccess.rst +++ b/classes/class_diraccess.rst @@ -165,6 +165,8 @@ Methods +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_case_sensitive`\ (\ path\: :ref:`String`\ ) |const| | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_equivalent`\ (\ path_a\: :ref:`String`, path_b\: :ref:`String`\ ) |const| | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_link`\ (\ path\: :ref:`String`\ ) | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`list_dir_begin`\ (\ ) | @@ -568,6 +570,18 @@ Returns ``true`` if the file system or directory use case sensitive file names. ---- +.. _class_DirAccess_method_is_equivalent: + +.. rst-class:: classref-method + +:ref:`bool` **is_equivalent**\ (\ path_a\: :ref:`String`, path_b\: :ref:`String`\ ) |const| :ref:`🔗` + +Returns ``true`` if paths ``path_a`` and ``path_b`` resolve to the same file system object. Returns ``false`` otherwise, even if the files are bit-for-bit identical (e.g., identical copies of the file that are not symbolic links). + +.. rst-class:: classref-item-separator + +---- + .. _class_DirAccess_method_is_link: .. rst-class:: classref-method diff --git a/classes/class_displayserver.rst b/classes/class_displayserver.rst index 54857261e..773426e80 100644 --- a/classes/class_displayserver.rst +++ b/classes/class_displayserver.rst @@ -31,387 +31,543 @@ Methods .. table:: :widths: auto - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`beep`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`clipboard_get`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Image` | :ref:`clipboard_get_image`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`clipboard_get_primary`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`clipboard_has`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`clipboard_has_image`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clipboard_set`\ (\ clipboard\: :ref:`String`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clipboard_set_primary`\ (\ clipboard_primary\: :ref:`String`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`create_status_indicator`\ (\ icon\: :ref:`Texture2D`, tooltip\: :ref:`String`, callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`CursorShape` | :ref:`cursor_get_shape`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`cursor_set_custom_image`\ (\ cursor\: :ref:`Resource`, shape\: :ref:`CursorShape` = 0, hotspot\: :ref:`Vector2` = Vector2(0, 0)\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`cursor_set_shape`\ (\ shape\: :ref:`CursorShape`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`delete_status_indicator`\ (\ id\: :ref:`int`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`dialog_input_text`\ (\ title\: :ref:`String`, description\: :ref:`String`, existing_text\: :ref:`String`, callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`dialog_show`\ (\ title\: :ref:`String`, description\: :ref:`String`, buttons\: :ref:`PackedStringArray`, callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`enable_for_stealing_focus`\ (\ process_id\: :ref:`int`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`file_dialog_show`\ (\ title\: :ref:`String`, current_directory\: :ref:`String`, filename\: :ref:`String`, show_hidden\: :ref:`bool`, mode\: :ref:`FileDialogMode`, filters\: :ref:`PackedStringArray`, callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`file_dialog_with_options_show`\ (\ title\: :ref:`String`, current_directory\: :ref:`String`, root\: :ref:`String`, filename\: :ref:`String`, show_hidden\: :ref:`bool`, mode\: :ref:`FileDialogMode`, filters\: :ref:`PackedStringArray`, options\: :ref:`Array`\[:ref:`Dictionary`\], callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`force_process_and_drop_events`\ (\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`get_accent_color`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`get_base_color`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[: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`\ (\ rect\: :ref:`Rect2`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`get_swap_cancel_ok`\ (\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_window_at_screen_position`\ (\ position\: :ref:`Vector2i`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`get_window_list`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_check_item`\ (\ menu_root\: :ref:`String`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_icon_check_item`\ (\ menu_root\: :ref:`String`, icon\: :ref:`Texture2D`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_icon_item`\ (\ menu_root\: :ref:`String`, icon\: :ref:`Texture2D`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_icon_radio_check_item`\ (\ menu_root\: :ref:`String`, icon\: :ref:`Texture2D`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_item`\ (\ menu_root\: :ref:`String`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_multistate_item`\ (\ menu_root\: :ref:`String`, label\: :ref:`String`, max_states\: :ref:`int`, default_state\: :ref:`int`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_radio_check_item`\ (\ menu_root\: :ref:`String`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_separator`\ (\ menu_root\: :ref:`String`, index\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_add_submenu_item`\ (\ menu_root\: :ref:`String`, label\: :ref:`String`, submenu\: :ref:`String`, index\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_clear`\ (\ menu_root\: :ref:`String`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Key` | :ref:`global_menu_get_item_accelerator`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Callable` | :ref:`global_menu_get_item_callback`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_count`\ (\ menu_root\: :ref:`String`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Texture2D` | :ref:`global_menu_get_item_icon`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_indentation_level`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_index_from_tag`\ (\ menu_root\: :ref:`String`, tag\: :ref:`Variant`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_index_from_text`\ (\ menu_root\: :ref:`String`, text\: :ref:`String`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Callable` | :ref:`global_menu_get_item_key_callback`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_max_states`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`global_menu_get_item_state`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`global_menu_get_item_submenu`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`global_menu_get_item_tag`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`global_menu_get_item_text`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`global_menu_get_item_tooltip`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`global_menu_get_system_menu_roots`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`global_menu_is_item_checkable`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`global_menu_is_item_checked`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`global_menu_is_item_disabled`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`global_menu_is_item_hidden`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`global_menu_is_item_radio_checkable`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_remove_item`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_accelerator`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, keycode\: :ref:`Key`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_callback`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_checkable`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, checkable\: :ref:`bool`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_checked`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, checked\: :ref:`bool`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_disabled`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, disabled\: :ref:`bool`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_hidden`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, hidden\: :ref:`bool`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_hover_callbacks`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_icon`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, icon\: :ref:`Texture2D`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_indentation_level`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, level\: :ref:`int`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_key_callback`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, key_callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_max_states`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, max_states\: :ref:`int`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_radio_checkable`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, checkable\: :ref:`bool`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_state`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, state\: :ref:`int`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_submenu`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, submenu\: :ref:`String`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_tag`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, tag\: :ref:`Variant`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_text`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, text\: :ref:`String`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_item_tooltip`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, tooltip\: :ref:`String`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`global_menu_set_popup_callbacks`\ (\ menu_root\: :ref:`String`, open_callback\: :ref:`Callable`, close_callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_additional_outputs`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_feature`\ (\ feature\: :ref:`Feature`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_hardware_keyboard`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`help_set_search_callbacks`\ (\ search_callback\: :ref:`Callable`, action_callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :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:`bool` | :ref:`is_window_transparency_available`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`keyboard_get_current_layout`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Key` | :ref:`keyboard_get_keycode_from_physical`\ (\ keycode\: :ref:`Key`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Key` | :ref:`keyboard_get_label_from_physical`\ (\ keycode\: :ref:`Key`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`keyboard_get_layout_count`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`keyboard_get_layout_language`\ (\ index\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`keyboard_get_layout_name`\ (\ index\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`keyboard_set_current_layout`\ (\ index\: :ref:`int`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |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`\ (\ mouse_mode\: :ref:`MouseMode`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`process_events`\ (\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`register_additional_output`\ (\ object\: :ref:`Object`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`screen_get_dpi`\ (\ screen\: :ref:`int` = -1\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Image` | :ref:`screen_get_image`\ (\ screen\: :ref:`int` = -1\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Image` | :ref:`screen_get_image_rect`\ (\ rect\: :ref:`Rect2i`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`screen_get_max_scale`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`ScreenOrientation` | :ref:`screen_get_orientation`\ (\ screen\: :ref:`int` = -1\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`screen_get_pixel`\ (\ position\: :ref:`Vector2i`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`screen_get_position`\ (\ screen\: :ref:`int` = -1\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`screen_get_refresh_rate`\ (\ screen\: :ref:`int` = -1\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`screen_get_scale`\ (\ screen\: :ref:`int` = -1\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`screen_get_size`\ (\ screen\: :ref:`int` = -1\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2i` | :ref:`screen_get_usable_rect`\ (\ screen\: :ref:`int` = -1\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`screen_is_kept_on`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`screen_set_keep_on`\ (\ enable\: :ref:`bool`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`screen_set_orientation`\ (\ orientation\: :ref:`ScreenOrientation`, screen\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_icon`\ (\ image\: :ref:`Image`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_native_icon`\ (\ filename\: :ref:`String`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_system_theme_change_callback`\ (\ callable\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`show_emoji_and_symbol_picker`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`status_indicator_get_rect`\ (\ id\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`status_indicator_set_callback`\ (\ id\: :ref:`int`, callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`status_indicator_set_icon`\ (\ id\: :ref:`int`, icon\: :ref:`Texture2D`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`status_indicator_set_menu`\ (\ id\: :ref:`int`, menu_rid\: :ref:`RID`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`status_indicator_set_tooltip`\ (\ id\: :ref:`int`, tooltip\: :ref:`String`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`tablet_get_current_driver`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`tablet_get_driver_count`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`tablet_get_driver_name`\ (\ idx\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`tablet_set_current_driver`\ (\ name\: :ref:`String`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`tts_get_voices`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`tts_get_voices_for_language`\ (\ language\: :ref:`String`\ ) |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`\ (\ event\: :ref:`TTSUtteranceEvent`, callable\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`tts_speak`\ (\ text\: :ref:`String`, voice\: :ref:`String`, volume\: :ref:`int` = 50, pitch\: :ref:`float` = 1.0, rate\: :ref:`float` = 1.0, utterance_id\: :ref:`int` = 0, interrupt\: :ref:`bool` = false\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`tts_stop`\ (\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`unregister_additional_output`\ (\ object\: :ref:`Object`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`virtual_keyboard_get_height`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`virtual_keyboard_hide`\ (\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`virtual_keyboard_show`\ (\ existing_text\: :ref:`String`, position\: :ref:`Rect2` = Rect2(0, 0, 0, 0), type\: :ref:`VirtualKeyboardType` = 0, max_length\: :ref:`int` = -1, cursor_start\: :ref:`int` = -1, cursor_end\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`warp_mouse`\ (\ position\: :ref:`Vector2i`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`window_can_draw`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`window_get_active_popup`\ (\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`window_get_attached_instance_id`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`window_get_current_screen`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`window_get_flag`\ (\ flag\: :ref:`WindowFlags`, window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_max_size`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_min_size`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`WindowMode` | :ref:`window_get_mode`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`window_get_native_handle`\ (\ handle_type\: :ref:`HandleType`, window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2i` | :ref:`window_get_popup_safe_rect`\ (\ window\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_position`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_position_with_decorations`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector3i` | :ref:`window_get_safe_title_margins`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_size`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_size_with_decorations`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`window_get_title_size`\ (\ title\: :ref:`String`, window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`VSyncMode` | :ref:`window_get_vsync_mode`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`window_is_focused`\ (\ window_id\: :ref:`int` = 0\ ) |const| | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`window_is_maximize_allowed`\ (\ window_id\: :ref:`int` = 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`\ (\ window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_request_attention`\ (\ window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_current_screen`\ (\ screen\: :ref:`int`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_drop_files_callback`\ (\ callback\: :ref:`Callable`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_exclusive`\ (\ window_id\: :ref:`int`, exclusive\: :ref:`bool`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_flag`\ (\ flag\: :ref:`WindowFlags`, enabled\: :ref:`bool`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_ime_active`\ (\ active\: :ref:`bool`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_ime_position`\ (\ position\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_input_event_callback`\ (\ callback\: :ref:`Callable`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_input_text_callback`\ (\ callback\: :ref:`Callable`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_max_size`\ (\ max_size\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_min_size`\ (\ min_size\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_mode`\ (\ mode\: :ref:`WindowMode`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_mouse_passthrough`\ (\ region\: :ref:`PackedVector2Array`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_popup_safe_rect`\ (\ window\: :ref:`int`, rect\: :ref:`Rect2i`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_position`\ (\ position\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_rect_changed_callback`\ (\ callback\: :ref:`Callable`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_size`\ (\ size\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_title`\ (\ title\: :ref:`String`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_transient`\ (\ window_id\: :ref:`int`, parent_window_id\: :ref:`int`\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_vsync_mode`\ (\ vsync_mode\: :ref:`VSyncMode`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_window_buttons_offset`\ (\ offset\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_set_window_event_callback`\ (\ callback\: :ref:`Callable`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_start_drag`\ (\ window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`window_start_resize`\ (\ edge\: :ref:`WindowResizeEdge`, window_id\: :ref:`int` = 0\ ) | - +-------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`accessibility_create_element`\ (\ window_id\: :ref:`int`, role\: :ref:`AccessibilityRole`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`accessibility_create_sub_element`\ (\ parent_rid\: :ref:`RID`, role\: :ref:`AccessibilityRole`, insert_pos\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`accessibility_create_sub_text_edit_elements`\ (\ parent_rid\: :ref:`RID`, shaped_text\: :ref:`RID`, min_height\: :ref:`float`, insert_pos\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`accessibility_element_get_meta`\ (\ id\: :ref:`RID`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_element_set_meta`\ (\ id\: :ref:`RID`, meta\: :ref:`Variant`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_free_element`\ (\ id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`accessibility_get_window_root`\ (\ window_id\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`accessibility_has_element`\ (\ id\: :ref:`RID`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`accessibility_screen_reader_active`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_set_window_focused`\ (\ window_id\: :ref:`int`, focused\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_set_window_rect`\ (\ window_id\: :ref:`int`, rect_out\: :ref:`Rect2`, rect_in\: :ref:`Rect2`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`accessibility_should_increase_contrast`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`accessibility_should_reduce_animation`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`accessibility_should_reduce_transparency`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_add_action`\ (\ id\: :ref:`RID`, action\: :ref:`AccessibilityAction`, callable\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_add_child`\ (\ id\: :ref:`RID`, child_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_add_custom_action`\ (\ id\: :ref:`RID`, action_id\: :ref:`int`, action_description\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_add_related_controls`\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_add_related_described_by`\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_add_related_details`\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_add_related_flow_to`\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_add_related_labeled_by`\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_add_related_radio_group`\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_active_descendant`\ (\ id\: :ref:`RID`, other_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_background_color`\ (\ id\: :ref:`RID`, color\: :ref:`Color`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_bounds`\ (\ id\: :ref:`RID`, p_rect\: :ref:`Rect2`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_checked`\ (\ id\: :ref:`RID`, checekd\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_classname`\ (\ id\: :ref:`RID`, classname\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_color_value`\ (\ id\: :ref:`RID`, color\: :ref:`Color`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_description`\ (\ id\: :ref:`RID`, description\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_error_message`\ (\ id\: :ref:`RID`, other_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_extra_info`\ (\ id\: :ref:`RID`, name\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_flag`\ (\ id\: :ref:`RID`, flag\: :ref:`AccessibilityFlags`, value\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_focus`\ (\ id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_foreground_color`\ (\ id\: :ref:`RID`, color\: :ref:`Color`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_in_page_link_target`\ (\ id\: :ref:`RID`, other_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_language`\ (\ id\: :ref:`RID`, language\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_list_item_count`\ (\ id\: :ref:`RID`, size\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_list_item_expanded`\ (\ id\: :ref:`RID`, expanded\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_list_item_index`\ (\ id\: :ref:`RID`, index\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_list_item_level`\ (\ id\: :ref:`RID`, level\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_list_item_selected`\ (\ id\: :ref:`RID`, selected\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_list_orientation`\ (\ id\: :ref:`RID`, vertical\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_live`\ (\ id\: :ref:`RID`, live\: :ref:`AccessibilityLiveMode`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_member_of`\ (\ id\: :ref:`RID`, group_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_name`\ (\ id\: :ref:`RID`, name\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_next_on_line`\ (\ id\: :ref:`RID`, other_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_num_jump`\ (\ id\: :ref:`RID`, jump\: :ref:`float`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_num_range`\ (\ id\: :ref:`RID`, min\: :ref:`float`, max\: :ref:`float`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_num_step`\ (\ id\: :ref:`RID`, step\: :ref:`float`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_num_value`\ (\ id\: :ref:`RID`, position\: :ref:`float`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_placeholder`\ (\ id\: :ref:`RID`, placeholder\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_popup_type`\ (\ id\: :ref:`RID`, popup\: :ref:`AccessibilityPopupType`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_previous_on_line`\ (\ id\: :ref:`RID`, other_id\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_role`\ (\ id\: :ref:`RID`, role\: :ref:`AccessibilityRole`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_role_description`\ (\ id\: :ref:`RID`, description\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_scroll_x`\ (\ id\: :ref:`RID`, position\: :ref:`float`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_scroll_x_range`\ (\ id\: :ref:`RID`, min\: :ref:`float`, max\: :ref:`float`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_scroll_y`\ (\ id\: :ref:`RID`, position\: :ref:`float`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_scroll_y_range`\ (\ id\: :ref:`RID`, min\: :ref:`float`, max\: :ref:`float`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_shortcut`\ (\ id\: :ref:`RID`, shortcut\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_state_description`\ (\ id\: :ref:`RID`, description\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_table_cell_position`\ (\ id\: :ref:`RID`, row_index\: :ref:`int`, column_index\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_table_cell_span`\ (\ id\: :ref:`RID`, row_span\: :ref:`int`, column_span\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_table_column_count`\ (\ id\: :ref:`RID`, count\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_table_column_index`\ (\ id\: :ref:`RID`, index\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_table_row_count`\ (\ id\: :ref:`RID`, count\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_table_row_index`\ (\ id\: :ref:`RID`, index\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_text_align`\ (\ id\: :ref:`RID`, align\: :ref:`HorizontalAlignment`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_text_decorations`\ (\ id\: :ref:`RID`, underline\: :ref:`bool`, strikethrough\: :ref:`bool`, overline\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_text_orientation`\ (\ id\: :ref:`RID`, vertical\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_text_selection`\ (\ id\: :ref:`RID`, text_start_id\: :ref:`RID`, start_char\: :ref:`int`, text_end_id\: :ref:`RID`, end_char\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_tooltip`\ (\ id\: :ref:`RID`, tooltip\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_transform`\ (\ id\: :ref:`RID`, transform\: :ref:`Transform2D`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_url`\ (\ id\: :ref:`RID`, url\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`accessibility_update_set_value`\ (\ id\: :ref:`RID`, value\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`beep`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`clipboard_get`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Image` | :ref:`clipboard_get_image`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`clipboard_get_primary`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`clipboard_has`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`clipboard_has_image`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clipboard_set`\ (\ clipboard\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clipboard_set_primary`\ (\ clipboard_primary\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`color_picker`\ (\ callback\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`create_status_indicator`\ (\ icon\: :ref:`Texture2D`, tooltip\: :ref:`String`, callback\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`CursorShape` | :ref:`cursor_get_shape`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`cursor_set_custom_image`\ (\ cursor\: :ref:`Resource`, shape\: :ref:`CursorShape` = 0, hotspot\: :ref:`Vector2` = Vector2(0, 0)\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`cursor_set_shape`\ (\ shape\: :ref:`CursorShape`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`delete_status_indicator`\ (\ id\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`dialog_input_text`\ (\ title\: :ref:`String`, description\: :ref:`String`, existing_text\: :ref:`String`, callback\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`dialog_show`\ (\ title\: :ref:`String`, description\: :ref:`String`, buttons\: :ref:`PackedStringArray`, callback\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`enable_for_stealing_focus`\ (\ process_id\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`file_dialog_show`\ (\ title\: :ref:`String`, current_directory\: :ref:`String`, filename\: :ref:`String`, show_hidden\: :ref:`bool`, mode\: :ref:`FileDialogMode`, filters\: :ref:`PackedStringArray`, callback\: :ref:`Callable`, parent_window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`file_dialog_with_options_show`\ (\ title\: :ref:`String`, current_directory\: :ref:`String`, root\: :ref:`String`, filename\: :ref:`String`, show_hidden\: :ref:`bool`, mode\: :ref:`FileDialogMode`, filters\: :ref:`PackedStringArray`, options\: :ref:`Array`\[:ref:`Dictionary`\], callback\: :ref:`Callable`, parent_window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`force_process_and_drop_events`\ (\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`get_accent_color`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`get_base_color`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[: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`\ (\ rect\: :ref:`Rect2`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`get_swap_cancel_ok`\ (\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_window_at_screen_position`\ (\ position\: :ref:`Vector2i`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`get_window_list`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_check_item`\ (\ menu_root\: :ref:`String`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_icon_check_item`\ (\ menu_root\: :ref:`String`, icon\: :ref:`Texture2D`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_icon_item`\ (\ menu_root\: :ref:`String`, icon\: :ref:`Texture2D`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_icon_radio_check_item`\ (\ menu_root\: :ref:`String`, icon\: :ref:`Texture2D`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_item`\ (\ menu_root\: :ref:`String`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_multistate_item`\ (\ menu_root\: :ref:`String`, label\: :ref:`String`, max_states\: :ref:`int`, default_state\: :ref:`int`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_radio_check_item`\ (\ menu_root\: :ref:`String`, label\: :ref:`String`, callback\: :ref:`Callable` = Callable(), key_callback\: :ref:`Callable` = Callable(), tag\: :ref:`Variant` = null, accelerator\: :ref:`Key` = 0, index\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_separator`\ (\ menu_root\: :ref:`String`, index\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_add_submenu_item`\ (\ menu_root\: :ref:`String`, label\: :ref:`String`, submenu\: :ref:`String`, index\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_clear`\ (\ menu_root\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Key` | :ref:`global_menu_get_item_accelerator`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Callable` | :ref:`global_menu_get_item_callback`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_count`\ (\ menu_root\: :ref:`String`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Texture2D` | :ref:`global_menu_get_item_icon`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_indentation_level`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_index_from_tag`\ (\ menu_root\: :ref:`String`, tag\: :ref:`Variant`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_index_from_text`\ (\ menu_root\: :ref:`String`, text\: :ref:`String`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Callable` | :ref:`global_menu_get_item_key_callback`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_max_states`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`global_menu_get_item_state`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`global_menu_get_item_submenu`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`global_menu_get_item_tag`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`global_menu_get_item_text`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`global_menu_get_item_tooltip`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`global_menu_get_system_menu_roots`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`global_menu_is_item_checkable`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`global_menu_is_item_checked`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`global_menu_is_item_disabled`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`global_menu_is_item_hidden`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`global_menu_is_item_radio_checkable`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_remove_item`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_accelerator`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, keycode\: :ref:`Key`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_callback`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, callback\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_checkable`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, checkable\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_checked`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, checked\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_disabled`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, disabled\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_hidden`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, hidden\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_hover_callbacks`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, callback\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_icon`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, icon\: :ref:`Texture2D`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_indentation_level`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, level\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_key_callback`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, key_callback\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_max_states`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, max_states\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_radio_checkable`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, checkable\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_state`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, state\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_submenu`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, submenu\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_tag`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, tag\: :ref:`Variant`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_text`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, text\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_item_tooltip`\ (\ menu_root\: :ref:`String`, idx\: :ref:`int`, tooltip\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`global_menu_set_popup_callbacks`\ (\ menu_root\: :ref:`String`, open_callback\: :ref:`Callable`, close_callback\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_additional_outputs`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_feature`\ (\ feature\: :ref:`Feature`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_hardware_keyboard`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`help_set_search_callbacks`\ (\ search_callback\: :ref:`Callable`, action_callback\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :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:`bool` | :ref:`is_window_transparency_available`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`keyboard_get_current_layout`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Key` | :ref:`keyboard_get_keycode_from_physical`\ (\ keycode\: :ref:`Key`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Key` | :ref:`keyboard_get_label_from_physical`\ (\ keycode\: :ref:`Key`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`keyboard_get_layout_count`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`keyboard_get_layout_language`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`keyboard_get_layout_name`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`keyboard_set_current_layout`\ (\ index\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |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`\ (\ mouse_mode\: :ref:`MouseMode`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`process_events`\ (\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`register_additional_output`\ (\ object\: :ref:`Object`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`screen_get_dpi`\ (\ screen\: :ref:`int` = -1\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Image` | :ref:`screen_get_image`\ (\ screen\: :ref:`int` = -1\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Image` | :ref:`screen_get_image_rect`\ (\ rect\: :ref:`Rect2i`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`screen_get_max_scale`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`ScreenOrientation` | :ref:`screen_get_orientation`\ (\ screen\: :ref:`int` = -1\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`screen_get_pixel`\ (\ position\: :ref:`Vector2i`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`screen_get_position`\ (\ screen\: :ref:`int` = -1\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`screen_get_refresh_rate`\ (\ screen\: :ref:`int` = -1\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`screen_get_scale`\ (\ screen\: :ref:`int` = -1\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`screen_get_size`\ (\ screen\: :ref:`int` = -1\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2i` | :ref:`screen_get_usable_rect`\ (\ screen\: :ref:`int` = -1\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`screen_is_kept_on`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`screen_set_keep_on`\ (\ enable\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`screen_set_orientation`\ (\ orientation\: :ref:`ScreenOrientation`, screen\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_hardware_keyboard_connection_change_callback`\ (\ callable\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_icon`\ (\ image\: :ref:`Image`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_native_icon`\ (\ filename\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_system_theme_change_callback`\ (\ callable\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`show_emoji_and_symbol_picker`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`status_indicator_get_rect`\ (\ id\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`status_indicator_set_callback`\ (\ id\: :ref:`int`, callback\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`status_indicator_set_icon`\ (\ id\: :ref:`int`, icon\: :ref:`Texture2D`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`status_indicator_set_menu`\ (\ id\: :ref:`int`, menu_rid\: :ref:`RID`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`status_indicator_set_tooltip`\ (\ id\: :ref:`int`, tooltip\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`tablet_get_current_driver`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`tablet_get_driver_count`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`tablet_get_driver_name`\ (\ idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`tablet_set_current_driver`\ (\ name\: :ref:`String`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`tts_get_voices`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`tts_get_voices_for_language`\ (\ language\: :ref:`String`\ ) |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`\ (\ event\: :ref:`TTSUtteranceEvent`, callable\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`tts_speak`\ (\ text\: :ref:`String`, voice\: :ref:`String`, volume\: :ref:`int` = 50, pitch\: :ref:`float` = 1.0, rate\: :ref:`float` = 1.0, utterance_id\: :ref:`int` = 0, interrupt\: :ref:`bool` = false\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`tts_stop`\ (\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`unregister_additional_output`\ (\ object\: :ref:`Object`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`virtual_keyboard_get_height`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`virtual_keyboard_hide`\ (\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`virtual_keyboard_show`\ (\ existing_text\: :ref:`String`, position\: :ref:`Rect2` = Rect2(0, 0, 0, 0), type\: :ref:`VirtualKeyboardType` = 0, max_length\: :ref:`int` = -1, cursor_start\: :ref:`int` = -1, cursor_end\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`warp_mouse`\ (\ position\: :ref:`Vector2i`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`window_can_draw`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`window_get_active_popup`\ (\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`window_get_attached_instance_id`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`window_get_current_screen`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`window_get_flag`\ (\ flag\: :ref:`WindowFlags`, window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_max_size`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_min_size`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`WindowMode` | :ref:`window_get_mode`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`window_get_native_handle`\ (\ handle_type\: :ref:`HandleType`, window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2i` | :ref:`window_get_popup_safe_rect`\ (\ window\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_position`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_position_with_decorations`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector3i` | :ref:`window_get_safe_title_margins`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_size`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_size_with_decorations`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`window_get_title_size`\ (\ title\: :ref:`String`, window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`VSyncMode` | :ref:`window_get_vsync_mode`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`window_is_focused`\ (\ window_id\: :ref:`int` = 0\ ) |const| | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`window_is_maximize_allowed`\ (\ window_id\: :ref:`int` = 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`\ (\ window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_request_attention`\ (\ window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_current_screen`\ (\ screen\: :ref:`int`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_drop_files_callback`\ (\ callback\: :ref:`Callable`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_exclusive`\ (\ window_id\: :ref:`int`, exclusive\: :ref:`bool`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_flag`\ (\ flag\: :ref:`WindowFlags`, enabled\: :ref:`bool`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_ime_active`\ (\ active\: :ref:`bool`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_ime_position`\ (\ position\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_input_event_callback`\ (\ callback\: :ref:`Callable`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_input_text_callback`\ (\ callback\: :ref:`Callable`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_max_size`\ (\ max_size\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_min_size`\ (\ min_size\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_mode`\ (\ mode\: :ref:`WindowMode`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_mouse_passthrough`\ (\ region\: :ref:`PackedVector2Array`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_popup_safe_rect`\ (\ window\: :ref:`int`, rect\: :ref:`Rect2i`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_position`\ (\ position\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_rect_changed_callback`\ (\ callback\: :ref:`Callable`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_size`\ (\ size\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_title`\ (\ title\: :ref:`String`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_transient`\ (\ window_id\: :ref:`int`, parent_window_id\: :ref:`int`\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_vsync_mode`\ (\ vsync_mode\: :ref:`VSyncMode`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_window_buttons_offset`\ (\ offset\: :ref:`Vector2i`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_set_window_event_callback`\ (\ callback\: :ref:`Callable`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_start_drag`\ (\ window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`window_start_resize`\ (\ edge\: :ref:`WindowResizeEdge`, window_id\: :ref:`int` = 0\ ) | + +-------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -532,7 +688,7 @@ Display server supports windows can use per-pixel transparency to make windows b :ref:`Feature` **FEATURE_HIDPI** = ``12`` -Display server supports querying the operating system's display scale factor. This allows for *reliable* automatic hiDPI display detection, as opposed to guessing based on the screen resolution and reported display DPI (which can be unreliable due to broken monitor EDID). **Windows, Linux (Wayland), macOS** +Display server supports querying the operating system's display scale factor. This allows automatically detecting the hiDPI display *reliably*, instead of guessing based on the screen resolution and the display's reported DPI (which might be unreliable due to broken monitor EDID). **Windows, Linux (Wayland), macOS** .. _class_DisplayServer_constant_FEATURE_ICON: @@ -678,6 +834,796 @@ Native file selection dialog supports MIME types as filters. Display server supports system emoji and symbol picker. **Windows, macOS** +.. _class_DisplayServer_constant_FEATURE_NATIVE_COLOR_PICKER: + +.. rst-class:: classref-enumeration-constant + +:ref:`Feature` **FEATURE_NATIVE_COLOR_PICKER** = ``32`` + +Display server supports native color picker. **Linux (X11/Wayland)** + +.. _class_DisplayServer_constant_FEATURE_SELF_FITTING_WINDOWS: + +.. rst-class:: classref-enumeration-constant + +:ref:`Feature` **FEATURE_SELF_FITTING_WINDOWS** = ``33`` + +Display server automatically fits popups according to the screen boundaries. Window nodes should not attempt to do that themselves. + +.. _class_DisplayServer_constant_FEATURE_ACCESSIBILITY_SCREEN_READER: + +.. rst-class:: classref-enumeration-constant + +:ref:`Feature` **FEATURE_ACCESSIBILITY_SCREEN_READER** = ``34`` + +Display server supports interaction with screen reader or Braille display. **Linux (X11/Wayland), macOS, Windows** + +.. rst-class:: classref-item-separator + +---- + +.. _enum_DisplayServer_AccessibilityRole: + +.. rst-class:: classref-enumeration + +enum **AccessibilityRole**: :ref:`🔗` + +.. _class_DisplayServer_constant_ROLE_UNKNOWN: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_UNKNOWN** = ``0`` + +Unknown or custom role. + +.. _class_DisplayServer_constant_ROLE_DEFAULT_BUTTON: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_DEFAULT_BUTTON** = ``1`` + +Default dialog button element. + +.. _class_DisplayServer_constant_ROLE_AUDIO: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_AUDIO** = ``2`` + +Audio player element. + +.. _class_DisplayServer_constant_ROLE_VIDEO: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_VIDEO** = ``3`` + +Video player element. + +.. _class_DisplayServer_constant_ROLE_STATIC_TEXT: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_STATIC_TEXT** = ``4`` + +Non-editable text label. + +.. _class_DisplayServer_constant_ROLE_CONTAINER: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_CONTAINER** = ``5`` + +Container element. Elements with this role are used for internal structure and ignored by screen readers. + +.. _class_DisplayServer_constant_ROLE_PANEL: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_PANEL** = ``6`` + +Panel container element. + +.. _class_DisplayServer_constant_ROLE_BUTTON: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_BUTTON** = ``7`` + +Button element. + +.. _class_DisplayServer_constant_ROLE_LINK: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_LINK** = ``8`` + +Link element. + +.. _class_DisplayServer_constant_ROLE_CHECK_BOX: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_CHECK_BOX** = ``9`` + +Check box element. + +.. _class_DisplayServer_constant_ROLE_RADIO_BUTTON: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_RADIO_BUTTON** = ``10`` + +Radio button element. + +.. _class_DisplayServer_constant_ROLE_CHECK_BUTTON: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_CHECK_BUTTON** = ``11`` + +Check button element. + +.. _class_DisplayServer_constant_ROLE_SCROLL_BAR: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_SCROLL_BAR** = ``12`` + +Scroll bar element. + +.. _class_DisplayServer_constant_ROLE_SCROLL_VIEW: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_SCROLL_VIEW** = ``13`` + +Scroll container element. + +.. _class_DisplayServer_constant_ROLE_SPLITTER: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_SPLITTER** = ``14`` + +Container splitter handle element. + +.. _class_DisplayServer_constant_ROLE_SLIDER: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_SLIDER** = ``15`` + +Slider element. + +.. _class_DisplayServer_constant_ROLE_SPIN_BUTTON: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_SPIN_BUTTON** = ``16`` + +Spin box element. + +.. _class_DisplayServer_constant_ROLE_PROGRESS_INDICATOR: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_PROGRESS_INDICATOR** = ``17`` + +Progress indicator element. + +.. _class_DisplayServer_constant_ROLE_TEXT_FIELD: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_TEXT_FIELD** = ``18`` + +Editable text field element. + +.. _class_DisplayServer_constant_ROLE_MULTILINE_TEXT_FIELD: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_MULTILINE_TEXT_FIELD** = ``19`` + +Multiline editable text field element. + +.. _class_DisplayServer_constant_ROLE_COLOR_PICKER: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_COLOR_PICKER** = ``20`` + +Color picker element. + +.. _class_DisplayServer_constant_ROLE_TABLE: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_TABLE** = ``21`` + +Table element. + +.. _class_DisplayServer_constant_ROLE_CELL: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_CELL** = ``22`` + +Table/tree cell element. + +.. _class_DisplayServer_constant_ROLE_ROW: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_ROW** = ``23`` + +Table/tree row element. + +.. _class_DisplayServer_constant_ROLE_ROW_GROUP: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_ROW_GROUP** = ``24`` + +Table/tree row group element. + +.. _class_DisplayServer_constant_ROLE_ROW_HEADER: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_ROW_HEADER** = ``25`` + +Table/tree row header element. + +.. _class_DisplayServer_constant_ROLE_COLUMN_HEADER: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_COLUMN_HEADER** = ``26`` + +Table/tree column header element. + +.. _class_DisplayServer_constant_ROLE_TREE: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_TREE** = ``27`` + +Tree view element. + +.. _class_DisplayServer_constant_ROLE_TREE_ITEM: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_TREE_ITEM** = ``28`` + +Tree view item element. + +.. _class_DisplayServer_constant_ROLE_LIST: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_LIST** = ``29`` + +List element. + +.. _class_DisplayServer_constant_ROLE_LIST_ITEM: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_LIST_ITEM** = ``30`` + +List item element. + +.. _class_DisplayServer_constant_ROLE_LIST_BOX: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_LIST_BOX** = ``31`` + +List view element. + +.. _class_DisplayServer_constant_ROLE_LIST_BOX_OPTION: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_LIST_BOX_OPTION** = ``32`` + +List view item element. + +.. _class_DisplayServer_constant_ROLE_TAB_BAR: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_TAB_BAR** = ``33`` + +Tab bar element. + +.. _class_DisplayServer_constant_ROLE_TAB: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_TAB** = ``34`` + +Tab bar item element. + +.. _class_DisplayServer_constant_ROLE_TAB_PANEL: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_TAB_PANEL** = ``35`` + +Tab panel element. + +.. _class_DisplayServer_constant_ROLE_MENU_BAR: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_MENU_BAR** = ``36`` + +Menu bar element. + +.. _class_DisplayServer_constant_ROLE_MENU: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_MENU** = ``37`` + +Popup menu element. + +.. _class_DisplayServer_constant_ROLE_MENU_ITEM: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_MENU_ITEM** = ``38`` + +Popup menu item element. + +.. _class_DisplayServer_constant_ROLE_MENU_ITEM_CHECK_BOX: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_MENU_ITEM_CHECK_BOX** = ``39`` + +Popup menu check button item element. + +.. _class_DisplayServer_constant_ROLE_MENU_ITEM_RADIO: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_MENU_ITEM_RADIO** = ``40`` + +Popup menu radio button item element. + +.. _class_DisplayServer_constant_ROLE_IMAGE: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_IMAGE** = ``41`` + +Image element. + +.. _class_DisplayServer_constant_ROLE_WINDOW: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_WINDOW** = ``42`` + +Window element. + +.. _class_DisplayServer_constant_ROLE_TITLE_BAR: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_TITLE_BAR** = ``43`` + +Embedded window title bar element. + +.. _class_DisplayServer_constant_ROLE_DIALOG: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_DIALOG** = ``44`` + +Dialog window element. + +.. _class_DisplayServer_constant_ROLE_TOOLTIP: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityRole` **ROLE_TOOLTIP** = ``45`` + +Tooltip element. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_DisplayServer_AccessibilityPopupType: + +.. rst-class:: classref-enumeration + +enum **AccessibilityPopupType**: :ref:`🔗` + +.. _class_DisplayServer_constant_POPUP_UNKNOWN: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityPopupType` **POPUP_UNKNOWN** = ``0`` + +Other/unknown popup type. + +.. _class_DisplayServer_constant_POPUP_MENU: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityPopupType` **POPUP_MENU** = ``1`` + +Popup menu. + +.. _class_DisplayServer_constant_POPUP_LIST: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityPopupType` **POPUP_LIST** = ``2`` + +Popup list. + +.. _class_DisplayServer_constant_POPUP_TREE: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityPopupType` **POPUP_TREE** = ``3`` + +Popup tree view. + +.. _class_DisplayServer_constant_POPUP_DIALOG: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityPopupType` **POPUP_DIALOG** = ``4`` + +Popup dialog. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_DisplayServer_AccessibilityFlags: + +.. rst-class:: classref-enumeration + +enum **AccessibilityFlags**: :ref:`🔗` + +.. _class_DisplayServer_constant_FLAG_HIDDEN: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityFlags` **FLAG_HIDDEN** = ``0`` + +Element is hidden for accessibility tools. + +.. _class_DisplayServer_constant_FLAG_LINKED: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityFlags` **FLAG_LINKED** = ``1`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_DisplayServer_constant_FLAG_MULTISELECTABLE: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityFlags` **FLAG_MULTISELECTABLE** = ``2`` + +Element is support multiple item selection. + +.. _class_DisplayServer_constant_FLAG_REQUIRED: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityFlags` **FLAG_REQUIRED** = ``3`` + +Element require user input. + +.. _class_DisplayServer_constant_FLAG_VISITED: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityFlags` **FLAG_VISITED** = ``4`` + +Element is a visited link. + +.. _class_DisplayServer_constant_FLAG_BUSY: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityFlags` **FLAG_BUSY** = ``5`` + +Element content is not ready (e.g. loading). + +.. _class_DisplayServer_constant_FLAG_MODAL: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityFlags` **FLAG_MODAL** = ``6`` + +Element is modal window. + +.. _class_DisplayServer_constant_FLAG_TOUCH_PASSTHROUGH: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityFlags` **FLAG_TOUCH_PASSTHROUGH** = ``7`` + +Element allows touches to be passed through when a screen reader is in touch exploration mode. + +.. _class_DisplayServer_constant_FLAG_READONLY: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityFlags` **FLAG_READONLY** = ``8`` + +Element is text field with selectable but read-only text. + +.. _class_DisplayServer_constant_FLAG_DISABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityFlags` **FLAG_DISABLED** = ``9`` + +Element is disabled. + +.. _class_DisplayServer_constant_FLAG_CLIPS_CHILDREN: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityFlags` **FLAG_CLIPS_CHILDREN** = ``10`` + +Element clips children. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_DisplayServer_AccessibilityAction: + +.. rst-class:: classref-enumeration + +enum **AccessibilityAction**: :ref:`🔗` + +.. _class_DisplayServer_constant_ACTION_CLICK: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_CLICK** = ``0`` + +Single click action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_FOCUS: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_FOCUS** = ``1`` + +Focus action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_BLUR: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_BLUR** = ``2`` + +Blur action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_COLLAPSE: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_COLLAPSE** = ``3`` + +Collapse action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_EXPAND: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_EXPAND** = ``4`` + +Expand action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_DECREMENT: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_DECREMENT** = ``5`` + +Decrement action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_INCREMENT: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_INCREMENT** = ``6`` + +Increment action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_HIDE_TOOLTIP: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_HIDE_TOOLTIP** = ``7`` + +Hide tooltip action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_SHOW_TOOLTIP: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SHOW_TOOLTIP** = ``8`` + +Show tooltip action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_SET_TEXT_SELECTION: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SET_TEXT_SELECTION** = ``9`` + +Set text selection action, callback argument is set to :ref:`Dictionary` with the following keys: + +- ``"start_element"`` accessibility element of the selection start. + +- ``"start_char"`` character offset relative to the accessibility element of the selection start. + +- ``"end_element"`` accessibility element of the selection end. + +- ``"end_char"`` character offset relative to the accessibility element of the selection end. + +.. _class_DisplayServer_constant_ACTION_REPLACE_SELECTED_TEXT: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_REPLACE_SELECTED_TEXT** = ``10`` + +Replace text action, callback argument is set to :ref:`String` with the replacement text. + +.. _class_DisplayServer_constant_ACTION_SCROLL_BACKWARD: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SCROLL_BACKWARD** = ``11`` + +Scroll backward action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_SCROLL_DOWN: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SCROLL_DOWN** = ``12`` + +Scroll down action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_SCROLL_FORWARD: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SCROLL_FORWARD** = ``13`` + +Scroll forward action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_SCROLL_LEFT: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SCROLL_LEFT** = ``14`` + +Scroll left action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_SCROLL_RIGHT: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SCROLL_RIGHT** = ``15`` + +Scroll right action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_SCROLL_UP: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SCROLL_UP** = ``16`` + +Scroll up action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_SCROLL_INTO_VIEW: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SCROLL_INTO_VIEW** = ``17`` + +Scroll into view action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_SCROLL_TO_POINT: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SCROLL_TO_POINT** = ``18`` + +Scroll to point action, callback argument is set to :ref:`Vector2` with the relative point coordinates. + +.. _class_DisplayServer_constant_ACTION_SET_SCROLL_OFFSET: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SET_SCROLL_OFFSET** = ``19`` + +Set scroll offset action, callback argument is set to :ref:`Vector2` with the scroll offset. + +.. _class_DisplayServer_constant_ACTION_SET_VALUE: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SET_VALUE** = ``20`` + +Set value action action, callback argument is set to :ref:`String` or number with the new value. + +.. _class_DisplayServer_constant_ACTION_SHOW_CONTEXT_MENU: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_SHOW_CONTEXT_MENU** = ``21`` + +Show context menu action, callback argument is not set. + +.. _class_DisplayServer_constant_ACTION_CUSTOM: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityAction` **ACTION_CUSTOM** = ``22`` + +Custom action, callback argument is set to the integer action id. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_DisplayServer_AccessibilityLiveMode: + +.. rst-class:: classref-enumeration + +enum **AccessibilityLiveMode**: :ref:`🔗` + +.. _class_DisplayServer_constant_LIVE_OFF: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityLiveMode` **LIVE_OFF** = ``0`` + +Indicates that updates to the live region should not be presented. + +.. _class_DisplayServer_constant_LIVE_POLITE: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityLiveMode` **LIVE_POLITE** = ``1`` + +Indicates that updates to the live region should be presented at the next opportunity (for example at the end of speaking the current sentence). + +.. _class_DisplayServer_constant_LIVE_ASSERTIVE: + +.. rst-class:: classref-enumeration-constant + +:ref:`AccessibilityLiveMode` **LIVE_ASSERTIVE** = ``2`` + +Indicates that updates to the live region have the highest priority and should be presented immediately. + .. rst-class:: classref-item-separator ---- @@ -1130,8 +2076,6 @@ Full screen window covers the entire display area of a screen and has no decorat \ **On Android:** This enables immersive mode. -\ **On Windows:** Multi-window full-screen mode has a 1px border of the :ref:`ProjectSettings.rendering/environment/defaults/default_clear_color` color. - \ **On macOS:** A new desktop is used to display the running project. \ **Note:** Regardless of the platform, enabling full screen will change the window size to match the monitor's size. Therefore, make sure your project supports :doc:`multiple resolutions <../tutorials/rendering/multiple_resolutions>` when enabling full screen mode. @@ -1258,17 +2202,45 @@ Window style is overridden, forcing sharp corners. :ref:`WindowFlags` **WINDOW_FLAG_EXCLUDE_FROM_CAPTURE** = ``9`` -Windows is excluded from screenshots taken by :ref:`screen_get_image()`, :ref:`screen_get_image_rect()`, and :ref:`screen_get_pixel()`. +Window is excluded from screenshots taken by :ref:`screen_get_image()`, :ref:`screen_get_image_rect()`, and :ref:`screen_get_pixel()`. \ **Note:** This flag is implemented on macOS and Windows. -\ **Note:** Setting this flag will **NOT** prevent other apps from capturing an image, it should not be used as a security measure. +\ **Note:** Setting this flag will **NOT** prevent other apps from capturing an image. It should not be used as a security measure. + +.. _class_DisplayServer_constant_WINDOW_FLAG_POPUP_WM_HINT: + +.. rst-class:: classref-enumeration-constant + +:ref:`WindowFlags` **WINDOW_FLAG_POPUP_WM_HINT** = ``10`` + +Signals the window manager that this window is supposed to be an implementation-defined "popup" (usually a floating, borderless, untileable and immovable child window). + +.. _class_DisplayServer_constant_WINDOW_FLAG_MINIMIZE_DISABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`WindowFlags` **WINDOW_FLAG_MINIMIZE_DISABLED** = ``11`` + +Window minimize button is disabled. + +\ **Note:** This flag is implemented on macOS and Windows. + +.. _class_DisplayServer_constant_WINDOW_FLAG_MAXIMIZE_DISABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`WindowFlags` **WINDOW_FLAG_MAXIMIZE_DISABLED** = ``12`` + +Window maximize button is disabled. + +\ **Note:** This flag is implemented on macOS and Windows. .. _class_DisplayServer_constant_WINDOW_FLAG_MAX: .. rst-class:: classref-enumeration-constant -:ref:`WindowFlags` **WINDOW_FLAG_MAX** = ``10`` +:ref:`WindowFlags` **WINDOW_FLAG_MAX** = ``13`` Max value of the :ref:`WindowFlags`. @@ -1340,7 +2312,7 @@ Sent when the device "Back" button is pressed. Sent when the window is moved to the display with different DPI, or display DPI is changed. -\ **Note:** This flag is implemented only on macOS. +\ **Note:** This flag is implemented only on macOS and Linux (Wayland). .. _class_DisplayServer_constant_WINDOW_EVENT_TITLEBAR_CHANGE: @@ -1352,6 +2324,16 @@ Sent when the window title bar decoration is changed (e.g. :ref:`WINDOW_FLAG_EXT \ **Note:** This flag is implemented only on macOS. +.. _class_DisplayServer_constant_WINDOW_EVENT_FORCE_CLOSE: + +.. rst-class:: classref-enumeration-constant + +:ref:`WindowEvent` **WINDOW_EVENT_FORCE_CLOSE** = ``8`` + +Sent when the window has been forcibly closed by the Display Server. The window shall immediately hide and clean any internal rendering references. + +\ **Note:** This flag is implemented only on Linux (Wayland). + .. rst-class:: classref-item-separator ---- @@ -1702,6 +2684,942 @@ The ID that refers to a nonexistent application status indicator. Method Descriptions ------------------- +.. _class_DisplayServer_method_accessibility_create_element: + +.. rst-class:: classref-method + +:ref:`RID` **accessibility_create_element**\ (\ window_id\: :ref:`int`, role\: :ref:`AccessibilityRole`\ ) :ref:`🔗` + +Creates a new, empty accessibility element resource. + +\ **Note:** An accessibility element is created and freed automatically for each :ref:`Node`. In general, this function should not be called manually. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_create_sub_element: + +.. rst-class:: classref-method + +:ref:`RID` **accessibility_create_sub_element**\ (\ parent_rid\: :ref:`RID`, role\: :ref:`AccessibilityRole`, insert_pos\: :ref:`int` = -1\ ) :ref:`🔗` + +Creates a new, empty accessibility sub-element resource. Sub-elements can be used to provide accessibility information for objects which are not :ref:`Node`\ s, such as list items, table cells, or menu items. Sub-elements are freed automatically when the parent element is freed, or can be freed early using the :ref:`accessibility_free_element()` method. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_create_sub_text_edit_elements: + +.. rst-class:: classref-method + +:ref:`RID` **accessibility_create_sub_text_edit_elements**\ (\ parent_rid\: :ref:`RID`, shaped_text\: :ref:`RID`, min_height\: :ref:`float`, insert_pos\: :ref:`int` = -1\ ) :ref:`🔗` + +Creates a new, empty accessibility sub-element from the shaped text buffer. Sub-elements are freed automatically when the parent element is freed, or can be freed early using the :ref:`accessibility_free_element()` method. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_element_get_meta: + +.. rst-class:: classref-method + +:ref:`Variant` **accessibility_element_get_meta**\ (\ id\: :ref:`RID`\ ) |const| :ref:`🔗` + +Returns the metadata of the accessibility element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_element_set_meta: + +.. rst-class:: classref-method + +|void| **accessibility_element_set_meta**\ (\ id\: :ref:`RID`, meta\: :ref:`Variant`\ ) :ref:`🔗` + +Sets the metadata of the accessibility element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_free_element: + +.. rst-class:: classref-method + +|void| **accessibility_free_element**\ (\ id\: :ref:`RID`\ ) :ref:`🔗` + +Frees an object created by :ref:`accessibility_create_element()`, :ref:`accessibility_create_sub_element()`, or :ref:`accessibility_create_sub_text_edit_elements()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_get_window_root: + +.. rst-class:: classref-method + +:ref:`RID` **accessibility_get_window_root**\ (\ window_id\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the main accessibility element of the OS native window. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_has_element: + +.. rst-class:: classref-method + +:ref:`bool` **accessibility_has_element**\ (\ id\: :ref:`RID`\ ) |const| :ref:`🔗` + +Returns ``true`` if ``id`` is a valid accessibility element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_screen_reader_active: + +.. rst-class:: classref-method + +:ref:`int` **accessibility_screen_reader_active**\ (\ ) |const| :ref:`🔗` + +Returns ``1`` if a screen reader, Braille display or other assistive app is active, ``0`` otherwise. Returns ``-1`` if status is unknown. + +\ **Note:** This method is implemented on Linux, macOS, and Windows. + +\ **Note:** Accessibility debugging tools, such as Accessibility Insights for Windows, macOS Accessibility Inspector, or AT-SPI Browser do not count as assistive apps and will not affect this value. To test your app with these tools, set :ref:`ProjectSettings.accessibility/general/accessibility_support` to ``1``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_set_window_focused: + +.. rst-class:: classref-method + +|void| **accessibility_set_window_focused**\ (\ window_id\: :ref:`int`, focused\: :ref:`bool`\ ) :ref:`🔗` + +Sets the window focused state for assistive apps. + +\ **Note:** This method is implemented on Linux, macOS, and Windows. + +\ **Note:** Advanced users only! :ref:`Window` objects call this method automatically. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_set_window_rect: + +.. rst-class:: classref-method + +|void| **accessibility_set_window_rect**\ (\ window_id\: :ref:`int`, rect_out\: :ref:`Rect2`, rect_in\: :ref:`Rect2`\ ) :ref:`🔗` + +Sets window outer (with decorations) and inner (without decorations) bounds for assistive apps. + +\ **Note:** This method is implemented on Linux, macOS, and Windows. + +\ **Note:** Advanced users only! :ref:`Window` objects call this method automatically. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_should_increase_contrast: + +.. rst-class:: classref-method + +:ref:`int` **accessibility_should_increase_contrast**\ (\ ) |const| :ref:`🔗` + +Returns ``1`` if a high-contrast user interface theme should be used, ``0`` otherwise. Returns ``-1`` if status is unknown. + +\ **Note:** This method is implemented on Linux (X11/Wayland, GNOME), macOS, and Windows. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_should_reduce_animation: + +.. rst-class:: classref-method + +:ref:`int` **accessibility_should_reduce_animation**\ (\ ) |const| :ref:`🔗` + +Returns ``1`` if flashing, blinking, and other moving content that can cause seizures in users with photosensitive epilepsy should be disabled, ``0`` otherwise. Returns ``-1`` if status is unknown. + +\ **Note:** This method is implemented on macOS and Windows. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_should_reduce_transparency: + +.. rst-class:: classref-method + +:ref:`int` **accessibility_should_reduce_transparency**\ (\ ) |const| :ref:`🔗` + +Returns ``1`` if background images, transparency, and other features that can reduce the contrast between the foreground and background should be disabled, ``0`` otherwise. Returns ``-1`` if status is unknown. + +\ **Note:** This method is implemented on macOS and Windows. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_add_action: + +.. rst-class:: classref-method + +|void| **accessibility_update_add_action**\ (\ id\: :ref:`RID`, action\: :ref:`AccessibilityAction`, callable\: :ref:`Callable`\ ) :ref:`🔗` + +Adds a callback for the accessibility action (action which can be performed by using a special screen reader command or buttons on the Braille display), and marks this action as supported. The action callback receives one :ref:`Variant` argument, which value depends on action type. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_add_child: + +.. rst-class:: classref-method + +|void| **accessibility_update_add_child**\ (\ id\: :ref:`RID`, child_id\: :ref:`RID`\ ) :ref:`🔗` + +Adds a child accessibility element. + +\ **Note:** :ref:`Node` children and sub-elements are added to the child list automatically. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_add_custom_action: + +.. rst-class:: classref-method + +|void| **accessibility_update_add_custom_action**\ (\ id\: :ref:`RID`, action_id\: :ref:`int`, action_description\: :ref:`String`\ ) :ref:`🔗` + +Adds support for a custom accessibility action. ``action_id`` is passed as an argument to the callback of :ref:`ACTION_CUSTOM` action. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_add_related_controls: + +.. rst-class:: classref-method + +|void| **accessibility_update_add_related_controls**\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) :ref:`🔗` + +Adds an element that is controlled by this element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_add_related_described_by: + +.. rst-class:: classref-method + +|void| **accessibility_update_add_related_described_by**\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) :ref:`🔗` + +Adds an element that describes this element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_add_related_details: + +.. rst-class:: classref-method + +|void| **accessibility_update_add_related_details**\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) :ref:`🔗` + +Adds an element that details this element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_add_related_flow_to: + +.. rst-class:: classref-method + +|void| **accessibility_update_add_related_flow_to**\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) :ref:`🔗` + +Adds an element that this element flow into. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_add_related_labeled_by: + +.. rst-class:: classref-method + +|void| **accessibility_update_add_related_labeled_by**\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) :ref:`🔗` + +Adds an element that labels this element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_add_related_radio_group: + +.. rst-class:: classref-method + +|void| **accessibility_update_add_related_radio_group**\ (\ id\: :ref:`RID`, related_id\: :ref:`RID`\ ) :ref:`🔗` + +Adds an element that is part of the same radio group. + +\ **Note:** This method should be called on each element of the group, using all other elements as ``related_id``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_active_descendant: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_active_descendant**\ (\ id\: :ref:`RID`, other_id\: :ref:`RID`\ ) :ref:`🔗` + +Adds an element that is an active descendant of this element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_background_color: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_background_color**\ (\ id\: :ref:`RID`, color\: :ref:`Color`\ ) :ref:`🔗` + +Sets element background color. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_bounds: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_bounds**\ (\ id\: :ref:`RID`, p_rect\: :ref:`Rect2`\ ) :ref:`🔗` + +Sets element bounding box, relative to the node position. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_checked: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_checked**\ (\ id\: :ref:`RID`, checekd\: :ref:`bool`\ ) :ref:`🔗` + +Sets element checked state. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_classname: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_classname**\ (\ id\: :ref:`RID`, classname\: :ref:`String`\ ) :ref:`🔗` + +Sets element class name. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_color_value: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_color_value**\ (\ id\: :ref:`RID`, color\: :ref:`Color`\ ) :ref:`🔗` + +Sets element color value. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_description: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_description**\ (\ id\: :ref:`RID`, description\: :ref:`String`\ ) :ref:`🔗` + +Sets element accessibility description. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_error_message: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_error_message**\ (\ id\: :ref:`RID`, other_id\: :ref:`RID`\ ) :ref:`🔗` + +Sets an element which contains an error message for this element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_extra_info: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_extra_info**\ (\ id\: :ref:`RID`, name\: :ref:`String`\ ) :ref:`🔗` + +Sets element accessibility extra information added to the element name. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_flag: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_flag**\ (\ id\: :ref:`RID`, flag\: :ref:`AccessibilityFlags`, value\: :ref:`bool`\ ) :ref:`🔗` + +Sets element flag, see :ref:`AccessibilityFlags`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_focus: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_focus**\ (\ id\: :ref:`RID`\ ) :ref:`🔗` + +Sets currently focused element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_foreground_color: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_foreground_color**\ (\ id\: :ref:`RID`, color\: :ref:`Color`\ ) :ref:`🔗` + +Sets element foreground color. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_in_page_link_target: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_in_page_link_target**\ (\ id\: :ref:`RID`, other_id\: :ref:`RID`\ ) :ref:`🔗` + +Sets target element for the link. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_language: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_language**\ (\ id\: :ref:`RID`, language\: :ref:`String`\ ) :ref:`🔗` + +Sets element text language. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_list_item_count: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_list_item_count**\ (\ id\: :ref:`RID`, size\: :ref:`int`\ ) :ref:`🔗` + +Sets number of items in the list. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_list_item_expanded: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_list_item_expanded**\ (\ id\: :ref:`RID`, expanded\: :ref:`bool`\ ) :ref:`🔗` + +Sets list/tree item expanded status. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_list_item_index: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_list_item_index**\ (\ id\: :ref:`RID`, index\: :ref:`int`\ ) :ref:`🔗` + +Sets the position of the element in the list. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_list_item_level: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_list_item_level**\ (\ id\: :ref:`RID`, level\: :ref:`int`\ ) :ref:`🔗` + +Sets the hierarchical level of the element in the list. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_list_item_selected: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_list_item_selected**\ (\ id\: :ref:`RID`, selected\: :ref:`bool`\ ) :ref:`🔗` + +Sets list/tree item selected status. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_list_orientation: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_list_orientation**\ (\ id\: :ref:`RID`, vertical\: :ref:`bool`\ ) :ref:`🔗` + +Sets the orientation of the list elements. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_live: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_live**\ (\ id\: :ref:`RID`, live\: :ref:`AccessibilityLiveMode`\ ) :ref:`🔗` + +Sets the priority of the live region updates. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_member_of: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_member_of**\ (\ id\: :ref:`RID`, group_id\: :ref:`RID`\ ) :ref:`🔗` + +Sets the element to be a member of the group. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_name: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_name**\ (\ id\: :ref:`RID`, name\: :ref:`String`\ ) :ref:`🔗` + +Sets element accessibility name. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_next_on_line: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_next_on_line**\ (\ id\: :ref:`RID`, other_id\: :ref:`RID`\ ) :ref:`🔗` + +Sets next element on the line. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_num_jump: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_num_jump**\ (\ id\: :ref:`RID`, jump\: :ref:`float`\ ) :ref:`🔗` + +Sets numeric value jump. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_num_range: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_num_range**\ (\ id\: :ref:`RID`, min\: :ref:`float`, max\: :ref:`float`\ ) :ref:`🔗` + +Sets numeric value range. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_num_step: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_num_step**\ (\ id\: :ref:`RID`, step\: :ref:`float`\ ) :ref:`🔗` + +Sets numeric value step. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_num_value: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_num_value**\ (\ id\: :ref:`RID`, position\: :ref:`float`\ ) :ref:`🔗` + +Sets numeric value. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_placeholder: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_placeholder**\ (\ id\: :ref:`RID`, placeholder\: :ref:`String`\ ) :ref:`🔗` + +Sets placeholder text. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_popup_type: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_popup_type**\ (\ id\: :ref:`RID`, popup\: :ref:`AccessibilityPopupType`\ ) :ref:`🔗` + +Sets popup type for popup buttons. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_previous_on_line: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_previous_on_line**\ (\ id\: :ref:`RID`, other_id\: :ref:`RID`\ ) :ref:`🔗` + +Sets previous element on the line. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_role: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_role**\ (\ id\: :ref:`RID`, role\: :ref:`AccessibilityRole`\ ) :ref:`🔗` + +Sets element accessibility role. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_role_description: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_role_description**\ (\ id\: :ref:`RID`, description\: :ref:`String`\ ) :ref:`🔗` + +Sets element accessibility role description text. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_scroll_x: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_scroll_x**\ (\ id\: :ref:`RID`, position\: :ref:`float`\ ) :ref:`🔗` + +Sets scroll bar x position. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_scroll_x_range: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_scroll_x_range**\ (\ id\: :ref:`RID`, min\: :ref:`float`, max\: :ref:`float`\ ) :ref:`🔗` + +Sets scroll bar x range. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_scroll_y: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_scroll_y**\ (\ id\: :ref:`RID`, position\: :ref:`float`\ ) :ref:`🔗` + +Sets scroll bar y position. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_scroll_y_range: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_scroll_y_range**\ (\ id\: :ref:`RID`, min\: :ref:`float`, max\: :ref:`float`\ ) :ref:`🔗` + +Sets scroll bar y range. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_shortcut: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_shortcut**\ (\ id\: :ref:`RID`, shortcut\: :ref:`String`\ ) :ref:`🔗` + +Sets the list of keyboard shortcuts used by element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_state_description: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_state_description**\ (\ id\: :ref:`RID`, description\: :ref:`String`\ ) :ref:`🔗` + +Sets human-readable description of the current checked state. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_table_cell_position: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_table_cell_position**\ (\ id\: :ref:`RID`, row_index\: :ref:`int`, column_index\: :ref:`int`\ ) :ref:`🔗` + +Sets cell position in the table. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_table_cell_span: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_table_cell_span**\ (\ id\: :ref:`RID`, row_span\: :ref:`int`, column_span\: :ref:`int`\ ) :ref:`🔗` + +Sets cell row/column span. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_table_column_count: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_table_column_count**\ (\ id\: :ref:`RID`, count\: :ref:`int`\ ) :ref:`🔗` + +Sets number of columns in the table. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_table_column_index: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_table_column_index**\ (\ id\: :ref:`RID`, index\: :ref:`int`\ ) :ref:`🔗` + +Sets position of the column. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_table_row_count: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_table_row_count**\ (\ id\: :ref:`RID`, count\: :ref:`int`\ ) :ref:`🔗` + +Sets number of rows in the table. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_table_row_index: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_table_row_index**\ (\ id\: :ref:`RID`, index\: :ref:`int`\ ) :ref:`🔗` + +Sets position of the row in the table. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_text_align: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_text_align**\ (\ id\: :ref:`RID`, align\: :ref:`HorizontalAlignment`\ ) :ref:`🔗` + +Sets element text alignment. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_text_decorations: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_text_decorations**\ (\ id\: :ref:`RID`, underline\: :ref:`bool`, strikethrough\: :ref:`bool`, overline\: :ref:`bool`\ ) :ref:`🔗` + +Sets text underline/overline/strikethrough. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_text_orientation: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_text_orientation**\ (\ id\: :ref:`RID`, vertical\: :ref:`bool`\ ) :ref:`🔗` + +Sets text orientation. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_text_selection: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_text_selection**\ (\ id\: :ref:`RID`, text_start_id\: :ref:`RID`, start_char\: :ref:`int`, text_end_id\: :ref:`RID`, end_char\: :ref:`int`\ ) :ref:`🔗` + +Sets text selection to the text field. ``text_start_id`` and ``text_end_id`` should be elements created by :ref:`accessibility_create_sub_text_edit_elements()`. Character offsets are relative to the corresponding element. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_tooltip: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_tooltip**\ (\ id\: :ref:`RID`, tooltip\: :ref:`String`\ ) :ref:`🔗` + +Sets tooltip text. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_transform: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_transform**\ (\ id\: :ref:`RID`, transform\: :ref:`Transform2D`\ ) :ref:`🔗` + +Sets element 2D transform. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_url: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_url**\ (\ id\: :ref:`RID`, url\: :ref:`String`\ ) :ref:`🔗` + +Sets link URL. + +.. rst-class:: classref-item-separator + +---- + +.. _class_DisplayServer_method_accessibility_update_set_value: + +.. rst-class:: classref-method + +|void| **accessibility_update_set_value**\ (\ id\: :ref:`RID`, value\: :ref:`String`\ ) :ref:`🔗` + +Sets element text value. + +.. rst-class:: classref-item-separator + +---- + .. _class_DisplayServer_method_beep: .. rst-class:: classref-method @@ -1806,6 +3724,24 @@ Sets the user's `primary ` **color_picker**\ (\ callback\: :ref:`Callable`\ ) :ref:`🔗` + +Displays OS native color picker. + +Callbacks have the following arguments: ``status: bool, color: Color``. + +\ **Note:** This method is implemented if the display server has the :ref:`FEATURE_NATIVE_COLOR_PICKER` feature. + +\ **Note:** This method is only implemented on Linux (X11/Wayland). + +.. rst-class:: classref-item-separator + +---- + .. _class_DisplayServer_method_create_status_indicator: .. rst-class:: classref-method @@ -1916,13 +3852,13 @@ Allows the ``process_id`` PID to steal focus from this window. In other words, t .. rst-class:: classref-method -:ref:`Error` **file_dialog_show**\ (\ title\: :ref:`String`, current_directory\: :ref:`String`, filename\: :ref:`String`, show_hidden\: :ref:`bool`, mode\: :ref:`FileDialogMode`, filters\: :ref:`PackedStringArray`, callback\: :ref:`Callable`\ ) :ref:`🔗` +:ref:`Error` **file_dialog_show**\ (\ title\: :ref:`String`, current_directory\: :ref:`String`, filename\: :ref:`String`, show_hidden\: :ref:`bool`, mode\: :ref:`FileDialogMode`, filters\: :ref:`PackedStringArray`, callback\: :ref:`Callable`, parent_window_id\: :ref:`int` = 0\ ) :ref:`🔗` Displays OS native dialog for selecting files or directories in the file system. Each filter string in the ``filters`` array should be formatted like this: ``*.png,*.jpg,*.jpeg;Image Files;image/png,image/jpeg``. The description text of the filter is optional and can be omitted. It is recommended to set both file extension and MIME type. See also :ref:`FileDialog.filters`. -Callbacks have the following arguments: ``status: bool, selected_paths: PackedStringArray, selected_filter_index: int``. **On Android,** callback argument ``selected_filter_index`` is always zero. +Callbacks have the following arguments: ``status: bool, selected_paths: PackedStringArray, selected_filter_index: int``. **On Android,** the third callback argument (``selected_filter_index``) is always ``0``. \ **Note:** This method is implemented if the display server has the :ref:`FEATURE_NATIVE_DIALOG_FILE` feature. Supported platforms include Linux (X11/Wayland), Windows, macOS, and Android. @@ -1944,7 +3880,7 @@ Callbacks have the following arguments: ``status: bool, selected_paths: PackedSt .. rst-class:: classref-method -:ref:`Error` **file_dialog_with_options_show**\ (\ title\: :ref:`String`, current_directory\: :ref:`String`, root\: :ref:`String`, filename\: :ref:`String`, show_hidden\: :ref:`bool`, mode\: :ref:`FileDialogMode`, filters\: :ref:`PackedStringArray`, options\: :ref:`Array`\[:ref:`Dictionary`\], callback\: :ref:`Callable`\ ) :ref:`🔗` +:ref:`Error` **file_dialog_with_options_show**\ (\ title\: :ref:`String`, current_directory\: :ref:`String`, root\: :ref:`String`, filename\: :ref:`String`, show_hidden\: :ref:`bool`, mode\: :ref:`FileDialogMode`, filters\: :ref:`PackedStringArray`, options\: :ref:`Array`\[:ref:`Dictionary`\], callback\: :ref:`Callable`, parent_window_id\: :ref:`int` = 0\ ) :ref:`🔗` Displays OS native dialog for selecting files or directories in the file system with additional user selectable options. @@ -1998,7 +3934,7 @@ Forces window manager processing while ignoring all :ref:`InputEvent` **has_hardware_keyboard**\ (\ ) |const| :ref:`🔗` -Returns ``true`` if hardware keyboard is connected. +Returns ``true`` if a hardware keyboard is connected. -\ **Note:** This method is implemented on Android and iOS, on other platforms this method always returns ``true``. +\ **Note:** This method is implemented on Android and iOS. On other platforms, this method always returns ``true``. .. rst-class:: classref-item-separator @@ -3452,11 +5388,11 @@ Returns the dots per inch density of the specified screen. If ``screen`` is :ref :ref:`Image` **screen_get_image**\ (\ screen\: :ref:`int` = -1\ ) |const| :ref:`🔗` -Returns screenshot of the ``screen``. +Returns a screenshot of the ``screen``. \ **Note:** This method is implemented on Linux (X11), macOS, and Windows. -\ **Note:** On macOS, this method requires "Screen Recording" permission, if permission is not granted it will return desktop wallpaper color. +\ **Note:** On macOS, this method requires the "Screen Recording" permission. If permission is not granted, this method returns a screenshot that will not include other application windows or OS elements not related to the application. .. rst-class:: classref-item-separator @@ -3468,11 +5404,11 @@ Returns screenshot of the ``screen``. :ref:`Image` **screen_get_image_rect**\ (\ rect\: :ref:`Rect2i`\ ) |const| :ref:`🔗` -Returns screenshot of the screen ``rect``. +Returns a screenshot of the screen region defined by ``rect``. \ **Note:** This method is implemented on macOS and Windows. -\ **Note:** On macOS, this method requires "Screen Recording" permission, if permission is not granted it will return desktop wallpaper color. +\ **Note:** On macOS, this method requires the "Screen Recording" permission. If permission is not granted, this method returns a screenshot that will not include other application windows or OS elements not related to the application. .. rst-class:: classref-item-separator @@ -3651,6 +5587,20 @@ Sets the ``screen``'s ``orientation``. See also :ref:`screen_get_orientation()`\ ) :ref:`🔗` + +Sets the ``callable`` that should be called when hardware keyboard is connected/disconnected. ``callable`` should accept a single :ref:`bool` parameter indicating whether the keyboard is connected (true) or disconnected (false). + +\ **Note:** This method is only implemented on Android. + +.. rst-class:: classref-item-separator + +---- + .. _class_DisplayServer_method_set_icon: .. rst-class:: classref-method @@ -3865,8 +5815,6 @@ Note that Godot depends on system libraries for text-to-speech functionality. Th \ **Note:** This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows. -\ **Note:** :ref:`ProjectSettings.audio/general/text_to_speech` should be ``true`` to use text-to-speech. - .. rst-class:: classref-item-separator ---- @@ -3881,8 +5829,6 @@ Returns an :ref:`PackedStringArray` of voice identifier \ **Note:** This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows. -\ **Note:** :ref:`ProjectSettings.audio/general/text_to_speech` should be ``true`` to use text-to-speech. - .. rst-class:: classref-item-separator ---- @@ -3897,8 +5843,6 @@ Returns ``true`` if the synthesizer is in a paused state. \ **Note:** This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows. -\ **Note:** :ref:`ProjectSettings.audio/general/text_to_speech` should be ``true`` to use text-to-speech. - .. rst-class:: classref-item-separator ---- @@ -3913,8 +5857,6 @@ Returns ``true`` if the synthesizer is generating speech, or have utterance wait \ **Note:** This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows. -\ **Note:** :ref:`ProjectSettings.audio/general/text_to_speech` should be ``true`` to use text-to-speech. - .. rst-class:: classref-item-separator ---- @@ -3929,8 +5871,6 @@ Puts the synthesizer into a paused state. \ **Note:** This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows. -\ **Note:** :ref:`ProjectSettings.audio/general/text_to_speech` should be ``true`` to use text-to-speech. - .. rst-class:: classref-item-separator ---- @@ -3945,8 +5885,6 @@ Resumes the synthesizer if it was paused. \ **Note:** This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows. -\ **Note:** :ref:`ProjectSettings.audio/general/text_to_speech` should be ``true`` to use text-to-speech. - .. rst-class:: classref-item-separator ---- @@ -3967,8 +5905,6 @@ Adds a callback, which is called when the utterance has started, finished, cance \ **Note:** This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows. -\ **Note:** :ref:`ProjectSettings.audio/general/text_to_speech` should be ``true`` to use text-to-speech. - .. rst-class:: classref-item-separator ---- @@ -3997,8 +5933,6 @@ Adds an utterance to the queue. If ``interrupt`` is ``true``, the queue is clear \ **Note:** This method is implemented on Android, iOS, Web, Linux (X11/Wayland), macOS, and Windows. -\ **Note:** :ref:`ProjectSettings.audio/general/text_to_speech` should be ``true`` to use text-to-speech. - .. rst-class:: classref-item-separator ---- @@ -4013,8 +5947,6 @@ Stops synthesis in progress and removes all utterances from the queue. \ **Note:** This method is implemented on Android, iOS, Web, Linux (X11/Linux), macOS, and Windows. -\ **Note:** :ref:`ProjectSettings.audio/general/text_to_speech` should be ``true`` to use text-to-speech. - .. rst-class:: classref-item-separator ---- diff --git a/classes/class_editorexportplatform.rst b/classes/class_editorexportplatform.rst index 6d3cce9ab..d9571392c 100644 --- a/classes/class_editorexportplatform.rst +++ b/classes/class_editorexportplatform.rst @@ -65,7 +65,7 @@ Methods +-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array` | :ref:`get_current_presets`\ (\ ) |const| | +-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`get_forced_export_files`\ (\ ) |static| | + | :ref:`PackedStringArray` | :ref:`get_forced_export_files`\ (\ preset\: :ref:`EditorExportPreset`\ ) |static| | +-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`get_internal_export_files`\ (\ preset\: :ref:`EditorExportPreset`, debug\: :ref:`bool`\ ) | +-----------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -159,7 +159,7 @@ flags **DebugFlags**: :ref:`🔗` :ref:`DebugFlags` **DEBUG_FLAG_DUMB_CLIENT** = ``1`` -Flag is set if remotely debugged project is expected to use remote file system. If set, :ref:`gen_export_flags()` will add ``--remove-fs`` and ``--remote-fs-password`` (if password is set in the editor settings) command line arguments to the list. +Flag is set if remotely debugged project is expected to use remote file system. If set, :ref:`gen_export_flags()` will add ``--remote-fs`` and ``--remote-fs-password`` (if password is set in the editor settings) command line arguments to the list. .. _class_EditorExportPlatform_constant_DEBUG_FLAG_REMOTE_DEBUG: @@ -288,7 +288,7 @@ Exports project files for the specified preset. This method can be used to imple \ ``shared_cb`` is called for exported native shared/static libraries and have the following arguments: ``file_path: String``, ``tags: PackedStringArray``, ``target_folder: String``. -\ **Note:** ``file_index`` and ``file_count`` are intended for progress tracking only and aren't necesserely unique and precise. +\ **Note:** ``file_index`` and ``file_count`` are intended for progress tracking only and aren't necessarily unique and precise. .. rst-class:: classref-item-separator @@ -360,7 +360,7 @@ Returns array of :ref:`EditorExportPreset`\ s for this .. rst-class:: classref-method -:ref:`PackedStringArray` **get_forced_export_files**\ (\ ) |static| :ref:`🔗` +:ref:`PackedStringArray` **get_forced_export_files**\ (\ preset\: :ref:`EditorExportPreset`\ ) |static| :ref:`🔗` Returns array of core file names that always should be exported regardless of preset config. diff --git a/classes/class_editorexportplatformandroid.rst b/classes/class_editorexportplatformandroid.rst index 02993a625..d9e204dae 100644 --- a/classes/class_editorexportplatformandroid.rst +++ b/classes/class_editorexportplatformandroid.rst @@ -2788,7 +2788,7 @@ Allows an application to write to the user dictionary. :ref:`bool` **screen/immersive_mode** :ref:`🔗` -If ``true``, hides navigation and status bar. See :ref:`DisplayServer.window_set_mode()` to toggle it at runtime. +If ``true``, hides the navigation and status bar. Set :ref:`DisplayServer.window_set_mode()` to change this at runtime. .. rst-class:: classref-item-separator diff --git a/classes/class_editorexportplatformios.rst b/classes/class_editorexportplatformios.rst index fdca9c045..03e758413 100644 --- a/classes/class_editorexportplatformios.rst +++ b/classes/class_editorexportplatformios.rst @@ -878,7 +878,7 @@ Additional data added to the root ```` section of the `.entitlements ` **entitlements/game_center** :ref:`🔗` -Enable to allow access to Game Center features. `com.apple.developer.game-center `__. +If ``true``, allows access to Game Center features. See `com.apple.developer.game-center `__. .. rst-class:: classref-item-separator @@ -890,7 +890,7 @@ Enable to allow access to Game Center features. `com.apple.developer.game-center :ref:`bool` **entitlements/increased_memory_limit** :ref:`🔗` -Enable if app may perform better with a higher memory limit. `com.apple.developer.kernel.increased-memory-limit `__. +If ``true``, hints that the app might perform better with a higher memory limit. See `com.apple.developer.kernel.increased-memory-limit `__. .. rst-class:: classref-item-separator diff --git a/classes/class_editorexportplugin.rst b/classes/class_editorexportplugin.rst index e4804ea04..826c8a1f3 100644 --- a/classes/class_editorexportplugin.rst +++ b/classes/class_editorexportplugin.rst @@ -87,6 +87,8 @@ Methods +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`_supports_platform`\ (\ platform\: :ref:`EditorExportPlatform`\ ) |virtual| |const| | +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedByteArray` | :ref:`_update_android_prebuilt_manifest`\ (\ platform\: :ref:`EditorExportPlatform`, manifest_data\: :ref:`PackedByteArray`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`add_file`\ (\ path\: :ref:`String`, file\: :ref:`PackedByteArray`, remap\: :ref:`bool`\ ) | +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`add_ios_bundle_file`\ (\ path\: :ref:`String`\ ) | @@ -495,6 +497,22 @@ Return ``true`` if the plugin supports the given ``platform``. ---- +.. _class_EditorExportPlugin_private_method__update_android_prebuilt_manifest: + +.. rst-class:: classref-method + +:ref:`PackedByteArray` **_update_android_prebuilt_manifest**\ (\ platform\: :ref:`EditorExportPlatform`, manifest_data\: :ref:`PackedByteArray`\ ) |virtual| |const| :ref:`🔗` + +Provide access to the Android prebuilt manifest and allows the plugin to modify it if needed. + +Implementers of this virtual method should take the binary manifest data from ``manifest_data``, copy it, modify it, and then return it with the modifications. + +If no modifications are needed, then an empty :ref:`PackedByteArray` should be returned. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorExportPlugin_method_add_file: .. rst-class:: classref-method diff --git a/classes/class_editorexportpreset.rst b/classes/class_editorexportpreset.rst index 548d74389..eb14fe878 100644 --- a/classes/class_editorexportpreset.rst +++ b/classes/class_editorexportpreset.rst @@ -66,6 +66,8 @@ Methods +---------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_preset_name`\ (\ ) |const| | +---------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`get_project_setting`\ (\ name\: :ref:`StringName`\ ) | + +---------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_script_export_mode`\ (\ ) |const| | +---------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_version`\ (\ name\: :ref:`StringName`, windows_version\: :ref:`bool`\ ) |const| | @@ -273,7 +275,7 @@ Method Descriptions :ref:`bool` **are_advanced_options_enabled**\ (\ ) |const| :ref:`🔗` -Returns ``true``, is "Advanced" toggle is enabled in the export dialog. +Returns ``true`` if "Advanced" toggle is enabled in the export dialog. .. rst-class:: classref-item-separator @@ -297,7 +299,7 @@ Returns string with a comma separated list of custom features. :ref:`Dictionary` **get_customized_files**\ (\ ) |const| :ref:`🔗` -Returns :ref:`Dictionary` of files selected in the "Resources" tab of the export dialog. Dictionary keys are file names and values are export mode - ``"strip``, ``"keep"``, or ``"remove"``. See also :ref:`get_file_export_mode()`. +Returns :ref:`Dictionary` of files selected in the "Resources" tab of the export dialog. Dictionary keys are file names and values are export mode - ``"strip"``, ``"keep"``, or ``"remove"``. See also :ref:`get_file_export_mode()`. .. rst-class:: classref-item-separator @@ -321,7 +323,7 @@ Returns number of files selected in the "Resources" tab of the export dialog. :ref:`bool` **get_encrypt_directory**\ (\ ) |const| :ref:`🔗` -Returns ``true``, PCK directory encryption is enabled in the export dialog. +Returns ``true`` if PCK directory encryption is enabled in the export dialog. .. rst-class:: classref-item-separator @@ -333,7 +335,7 @@ Returns ``true``, PCK directory encryption is enabled in the export dialog. :ref:`bool` **get_encrypt_pck**\ (\ ) |const| :ref:`🔗` -Returns ``true``, PCK encryption is enabled in the export dialog. +Returns ``true`` if PCK encryption is enabled in the export dialog. .. rst-class:: classref-item-separator @@ -483,6 +485,18 @@ Returns export preset name. ---- +.. _class_EditorExportPreset_method_get_project_setting: + +.. rst-class:: classref-method + +:ref:`Variant` **get_project_setting**\ (\ name\: :ref:`StringName`\ ) :ref:`🔗` + +Returns the value of the setting identified by ``name`` using export preset feature tag overrides instead of current OS features. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorExportPreset_method_get_script_export_mode: .. rst-class:: classref-method @@ -515,7 +529,7 @@ If ``windows_version`` is ``true``, formats the returned version number to be co :ref:`bool` **has**\ (\ property\: :ref:`StringName`\ ) |const| :ref:`🔗` -Returns ``true`` if preset has specified property. +Returns ``true`` if the preset has the property named ``property``. .. rst-class:: classref-item-separator diff --git a/classes/class_editorinspector.rst b/classes/class_editorinspector.rst index 1f58b3d36..c5c24ab46 100644 --- a/classes/class_editorinspector.rst +++ b/classes/class_editorinspector.rst @@ -44,6 +44,8 @@ Properties +----------------------------------------------------+------------------------+-------------------------------------------------------------------------------------------------+ | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | +----------------------------------------------------+------------------------+-------------------------------------------------------------------------------------------------+ + | :ref:`bool` | follow_focus | ``true`` (overrides :ref:`ScrollContainer`) | + +----------------------------------------------------+------------------------+-------------------------------------------------------------------------------------------------+ | :ref:`ScrollMode` | horizontal_scroll_mode | ``0`` (overrides :ref:`ScrollContainer`) | +----------------------------------------------------+------------------------+-------------------------------------------------------------------------------------------------+ diff --git a/classes/class_editorinterface.rst b/classes/class_editorinterface.rst index 1d1ecf41b..ef4a9c082 100644 --- a/classes/class_editorinterface.rst +++ b/classes/class_editorinterface.rst @@ -100,6 +100,8 @@ Methods +----------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`EditorInspector` | :ref:`get_inspector`\ (\ ) |const| | +----------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Node`\] | :ref:`get_open_scene_roots`\ (\ ) |const| | + +----------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedStringArray` | :ref:`get_open_scenes`\ (\ ) |const| | +----------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_playing_scene`\ (\ ) |const| | @@ -373,7 +375,7 @@ Returns the :ref:`EditorPaths` singleton. Returns the actual scale of the editor UI (``1.0`` being 100% scale). This can be used to adjust position and dimensions of the UI added by plugins. -\ **Note:** This value is set via the ``interface/editor/display_scale`` and ``interface/editor/custom_display_scale`` editor settings. Editor must be restarted for changes to be properly applied. +\ **Note:** This value is set via the :ref:`EditorSettings.interface/editor/display_scale` and :ref:`EditorSettings.interface/editor/custom_display_scale` settings. The editor must be restarted for changes to be properly applied. .. rst-class:: classref-item-separator @@ -481,13 +483,25 @@ Returns the editor's :ref:`EditorInspector` instance. ---- +.. _class_EditorInterface_method_get_open_scene_roots: + +.. rst-class:: classref-method + +:ref:`Array`\[:ref:`Node`\] **get_open_scene_roots**\ (\ ) |const| :ref:`🔗` + +Returns an array with references to the root nodes of the currently opened scenes. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorInterface_method_get_open_scenes: .. rst-class:: classref-method :ref:`PackedStringArray` **get_open_scenes**\ (\ ) |const| :ref:`🔗` -Returns an :ref:`Array` with the file paths of the currently opened scenes. +Returns an array with the file paths of the currently opened scenes. .. rst-class:: classref-item-separator @@ -943,7 +957,7 @@ A feature profile can be created programmatically using the :ref:`EditorFeatureP |void| **set_main_screen_editor**\ (\ name\: :ref:`String`\ ) :ref:`🔗` -Sets the editor's current main screen to the one specified in ``name``. ``name`` must match the title of the tab in question exactly (e.g. ``2D``, ``3D``, ``Script``, or ``AssetLib`` for default tabs). +Sets the editor's current main screen to the one specified in ``name``. ``name`` must match the title of the tab in question exactly (e.g. ``2D``, ``3D``, ``Script``, ``Game``, or ``AssetLib`` for default tabs). .. rst-class:: classref-item-separator diff --git a/classes/class_editorplugin.rst b/classes/class_editorplugin.rst index a8b84f379..9f90a83a8 100644 --- a/classes/class_editorplugin.rst +++ b/classes/class_editorplugin.rst @@ -203,7 +203,7 @@ Signals **main_screen_changed**\ (\ screen_name\: :ref:`String`\ ) :ref:`🔗` -Emitted when user changes the workspace (**2D**, **3D**, **Script**, **AssetLib**). Also works with custom screens defined by plugins. +Emitted when user changes the workspace (**2D**, **3D**, **Script**, **Game**, **AssetLib**). Also works with custom screens defined by plugins. .. rst-class:: classref-item-separator @@ -587,7 +587,7 @@ Called by the engine when the user enables the **EditorPlugin** in the Plugin ta |void| **_forward_3d_draw_over_viewport**\ (\ viewport_control\: :ref:`Control`\ ) |virtual| :ref:`🔗` -Called by the engine when the 3D editor's viewport is updated. Use the ``overlay`` :ref:`Control` for drawing. You can update the viewport manually by calling :ref:`update_overlays()`. +Called by the engine when the 3D editor's viewport is updated. ``viewport_control`` is an overlay on top of the viewport and it can be used for drawing. You can update the viewport manually by calling :ref:`update_overlays()`. .. tabs:: @@ -595,12 +595,12 @@ Called by the engine when the 3D editor's viewport is updated. Use the ``overlay .. code-tab:: gdscript func _forward_3d_draw_over_viewport(overlay): - # Draw a circle at cursor position. + # Draw a circle at the cursor's position. overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE) func _forward_3d_gui_input(camera, event): if event is InputEventMouseMotion: - # Redraw viewport when cursor is moved. + # Redraw the viewport when the cursor is moved. update_overlays() return EditorPlugin.AFTER_GUI_INPUT_STOP return EditorPlugin.AFTER_GUI_INPUT_PASS @@ -609,7 +609,7 @@ Called by the engine when the 3D editor's viewport is updated. Use the ``overlay public override void _Forward3DDrawOverViewport(Control viewportControl) { - // Draw a circle at cursor position. + // Draw a circle at the cursor's position. viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, Colors.White); } @@ -617,7 +617,7 @@ Called by the engine when the 3D editor's viewport is updated. Use the ``overlay { if (@event is InputEventMouseMotion) { - // Redraw viewport when cursor is moved. + // Redraw the viewport when the cursor is moved. UpdateOverlays(); return EditorPlugin.AfterGuiInput.Stop; } @@ -702,7 +702,7 @@ This method must return :ref:`AFTER_GUI_INPUT_PASS`\ ) |virtual| :ref:`🔗` -Called by the engine when the 2D editor's viewport is updated. Use the ``overlay`` :ref:`Control` for drawing. You can update the viewport manually by calling :ref:`update_overlays()`. +Called by the engine when the 2D editor's viewport is updated. ``viewport_control`` is an overlay on top of the viewport and it can be used for drawing. You can update the viewport manually by calling :ref:`update_overlays()`. .. tabs:: @@ -710,12 +710,12 @@ Called by the engine when the 2D editor's viewport is updated. Use the ``overlay .. code-tab:: gdscript func _forward_canvas_draw_over_viewport(overlay): - # Draw a circle at cursor position. + # Draw a circle at the cursor's position. overlay.draw_circle(overlay.get_local_mouse_position(), 64, Color.WHITE) func _forward_canvas_gui_input(event): if event is InputEventMouseMotion: - # Redraw viewport when cursor is moved. + # Redraw the viewport when the cursor is moved. update_overlays() return true return false @@ -724,7 +724,7 @@ Called by the engine when the 2D editor's viewport is updated. Use the ``overlay public override void _ForwardCanvasDrawOverViewport(Control viewportControl) { - // Draw a circle at cursor position. + // Draw a circle at the cursor's position. viewportControl.DrawCircle(viewportControl.GetLocalMousePosition(), 64, Colors.White); } @@ -732,7 +732,7 @@ Called by the engine when the 2D editor's viewport is updated. Use the ``overlay { if (@event is InputEventMouseMotion) { - // Redraw viewport when cursor is moved. + // Redraw the viewport when the cursor is moved. UpdateOverlays(); return true; } @@ -837,7 +837,7 @@ This is for editors that edit script-based objects. You can return a list of bre Override this method in your plugin to return a :ref:`Texture2D` in order to give it an icon. -For main screen plugins, this appears at the top of the screen, to the right of the "2D", "3D", "Script", and "AssetLib" buttons. +For main screen plugins, this appears at the top of the screen, to the right of the "2D", "3D", "Script", "Game", and "AssetLib" buttons. Ideally, the plugin icon should be white with a transparent background and 16×16 pixels in size. @@ -876,7 +876,7 @@ Ideally, the plugin icon should be white with a transparent background and 16×1 Override this method in your plugin to provide the name of the plugin when displayed in the Godot editor. -For main screen plugins, this appears at the top of the screen, to the right of the "2D", "3D", "Script", and "AssetLib" buttons. +For main screen plugins, this appears at the top of the screen, to the right of the "2D", "3D", "Script", "Game", and "AssetLib" buttons. .. rst-class:: classref-item-separator @@ -984,7 +984,7 @@ Implement this function if your plugin edits a specific type of object (Resource :ref:`bool` **_has_main_screen**\ (\ ) |virtual| |const| :ref:`🔗` -Returns ``true`` if this is a main screen editor plugin (it goes in the workspace selector together with **2D**, **3D**, **Script** and **AssetLib**). +Returns ``true`` if this is a main screen editor plugin (it goes in the workspace selector together with **2D**, **3D**, **Script**, **Game**, and **AssetLib**). When the plugin's workspace is selected, other main screen plugins will be hidden, but your plugin will not appear automatically. It needs to be added as a child of :ref:`EditorInterface.get_editor_main_screen()` and made visible inside :ref:`_make_visible()`. @@ -1147,7 +1147,7 @@ If the dock is repositioned and as long as the plugin is active, the editor will When your plugin is deactivated, make sure to remove your custom control with :ref:`remove_control_from_docks()` and free it with :ref:`Node.queue_free()`. -Optionally, you can specify a shortcut parameter. When pressed, this shortcut will toggle the dock's visibility once it's moved to the bottom panel (this shortcut does not affect the dock otherwise). See the default editor bottom panel shortcuts in the Editor Settings for inspiration. Per convention, they all use :kbd:`Alt` modifier. +Optionally, you can specify a shortcut parameter. When pressed, this shortcut will open and focus the dock. .. rst-class:: classref-item-separator diff --git a/classes/class_editorproperty.rst b/classes/class_editorproperty.rst index 6b2d7f1a0..fccb6deb6 100644 --- a/classes/class_editorproperty.rst +++ b/classes/class_editorproperty.rst @@ -29,31 +29,33 @@ Properties .. table:: :widths: auto - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`checkable` | ``false`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`checked` | ``false`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`deletable` | ``false`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`draw_background` | ``true`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`draw_label` | ``true`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`draw_warning` | ``false`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`keying` | ``false`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`String` | :ref:`label` | ``""`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`float` | :ref:`name_split_ratio` | ``0.5`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`read_only` | ``false`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`selectable` | ``true`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`use_folding` | ``false`` | - +-----------------------------+-------------------------------------------------------------------------+-----------+ + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`checkable` | ``false`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`checked` | ``false`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`deletable` | ``false`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`draw_background` | ``true`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`draw_label` | ``true`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`draw_warning` | ``false`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``3`` (overrides :ref:`Control`) | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`keying` | ``false`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`String` | :ref:`label` | ``""`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`float` | :ref:`name_split_ratio` | ``0.5`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`read_only` | ``false`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`selectable` | ``true`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`use_folding` | ``false`` | + +------------------------------------------+-------------------------------------------------------------------------+---------------------------------------------------------------------+ .. rst-class:: classref-reftable-group diff --git a/classes/class_editorsceneformatimporterblend.rst b/classes/class_editorsceneformatimporterblend.rst index 8ca766ca3..12fe9ed53 100644 --- a/classes/class_editorsceneformatimporterblend.rst +++ b/classes/class_editorsceneformatimporterblend.rst @@ -21,7 +21,7 @@ Description Imports Blender scenes in the ``.blend`` file format through the glTF 2.0 3D import pipeline. This importer requires Blender to be installed by the user, so that it can be used to export the scene as glTF 2.0. -The location of the Blender binary is set via the ``filesystem/import/blender/blender_path`` editor setting. +The location of the Blender binary is set via the :ref:`EditorSettings.filesystem/import/blender/blender_path` setting. This importer is only used if :ref:`ProjectSettings.filesystem/import/blender/enabled` is enabled, otherwise ``.blend`` files present in the project folder are not imported. diff --git a/classes/class_editorselection.rst b/classes/class_editorselection.rst index c4d9581ea..fe15b9cae 100644 --- a/classes/class_editorselection.rst +++ b/classes/class_editorselection.rst @@ -38,6 +38,8 @@ Methods +------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`Node`\] | :ref:`get_selected_nodes`\ (\ ) | +------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Node`\] | :ref:`get_top_selected_nodes`\ (\ ) | + +------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`Node`\] | :ref:`get_transformable_selected_nodes`\ (\ ) | +------------------------------------------------------+--------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`remove_node`\ (\ node\: :ref:`Node`\ ) | @@ -107,13 +109,29 @@ Returns the list of selected nodes. ---- +.. _class_EditorSelection_method_get_top_selected_nodes: + +.. rst-class:: classref-method + +:ref:`Array`\[:ref:`Node`\] **get_top_selected_nodes**\ (\ ) :ref:`🔗` + +Returns the list of top selected nodes only, excluding any children. This is useful for performing transform operations (moving them, rotating, etc.). + +For example, if there is a node A with a child B and a sibling C, then selecting all three will cause this method to return only A and C. Changing the global transform of A will affect the global transform of B, so there is no need to change B separately. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSelection_method_get_transformable_selected_nodes: .. rst-class:: classref-method :ref:`Array`\[:ref:`Node`\] **get_transformable_selected_nodes**\ (\ ) :ref:`🔗` -Returns the list of selected nodes, optimized for transform operations (i.e. moving them, rotating, etc.). This list can be used to avoid situations where a node is selected and is also a child/grandchild. +**Deprecated:** Use :ref:`get_top_selected_nodes()` instead. + +Returns the list of top selected nodes only, excluding any children. This is useful for performing transform operations (moving them, rotating, etc.). See :ref:`get_top_selected_nodes()`. .. rst-class:: classref-item-separator diff --git a/classes/class_editorsettings.rst b/classes/class_editorsettings.rst index ff320979d..fa0a2e82d 100644 --- a/classes/class_editorsettings.rst +++ b/classes/class_editorsettings.rst @@ -65,6 +65,8 @@ Properties +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`debugger/auto_switch_to_stack_trace` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`debugger/max_node_selection` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`debugger/profile_native_calls` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`debugger/profiler_frame_history_size` | @@ -89,6 +91,8 @@ Properties +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`docks/property_editor/subresource_hue_tint` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`docks/scene_tree/accessibility_warnings` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`docks/scene_tree/ask_before_deleting_related_animation_tracks` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`docks/scene_tree/ask_before_revoking_unique_name` | @@ -127,6 +131,8 @@ Properties +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`editors/2d/zoom_speed_factor` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/3d/active_selection_box_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`editors/3d/default_fov` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`editors/3d/default_z_far` | @@ -267,10 +273,16 @@ Properties +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`editors/animation/confirm_insert_track` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/animation/default_animation_step` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`editors/animation/default_create_bezier_tracks` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`editors/animation/default_create_reset_tracks` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/animation/default_fps_compatibility` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/animation/default_fps_mode` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Color` | :ref:`editors/animation/onion_layers_future_color` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Color` | :ref:`editors/animation/onion_layers_past_color` | @@ -487,6 +499,8 @@ Properties +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`interface/editor/single_window_mode` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/tablet_driver` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`interface/editor/ui_layout_direction` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`interface/editor/unfocused_low_processor_mode_sleep_usec` | @@ -585,6 +599,8 @@ Properties +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`interface/touchscreen/enable_pan_and_scale_gestures` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/touchscreen/enable_touch_actions_panel` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`interface/touchscreen/increase_scrollbar_touch_area` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`interface/touchscreen/scale_gizmo_handles` | @@ -685,6 +701,8 @@ Properties +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`text_editor/behavior/files/convert_indent_on_save` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/files/drop_preload_resources_as_uid` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`text_editor/behavior/files/open_dominant_script_on_scene_change` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`text_editor/behavior/files/restore_scripts_on_load` | @@ -857,6 +875,8 @@ Properties +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Color` | :ref:`text_editor/theme/highlighting/user_type_color` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/warning_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Color` | :ref:`text_editor/theme/highlighting/word_highlighted_color` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`text_editor/theme/line_spacing` | @@ -991,6 +1011,20 @@ If ``true``, automatically switches to the **Stack Trace** panel when the debugg ---- +.. _class_EditorSettings_property_debugger/max_node_selection: + +.. rst-class:: classref-property + +:ref:`int` **debugger/max_node_selection** :ref:`🔗` + +The limit of how many remote nodes can be selected at once. + +\ **Warning:** Increasing this value is not recommended, as selecting too many can make the editing and inspection of remote properties unreliable. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_debugger/profile_native_calls: .. rst-class:: classref-property @@ -1139,6 +1173,18 @@ The tint intensity to use for the subresources background in the Inspector dock. ---- +.. _class_EditorSettings_property_docks/scene_tree/accessibility_warnings: + +.. rst-class:: classref-property + +:ref:`bool` **docks/scene_tree/accessibility_warnings** :ref:`🔗` + +If ``true``, accessibility related warnings are displayed alongside other configuration warnings. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_docks/scene_tree/ask_before_deleting_related_animation_tracks: .. rst-class:: classref-property @@ -1371,6 +1417,20 @@ The factor to use when zooming in or out in the 2D editor. For example, ``1.1`` ---- +.. _class_EditorSettings_property_editors/3d/active_selection_box_color: + +.. rst-class:: classref-property + +:ref:`Color` **editors/3d/active_selection_box_color** :ref:`🔗` + +The color to use for the active selection box that surrounds selected nodes in the 3D editor viewport. The color's alpha channel influences the selection box's opacity. + +\ **Note:** The term "active" indicates that this object is the primary selection used as the basis for certain operations. This is the last selected :ref:`Node3D`, which can be reordered with :kbd:`Shift + Left mouse button`. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_editors/3d/default_fov: .. rst-class:: classref-property @@ -2243,6 +2303,20 @@ If ``false``, the behavior is reversed, i.e. the dialog only appears when Shift ---- +.. _class_EditorSettings_property_editors/animation/default_animation_step: + +.. rst-class:: classref-property + +:ref:`float` **editors/animation/default_animation_step** :ref:`🔗` + +Default step used when creating a new :ref:`Animation` in the Animation bottom panel. Only affects the first animation created in the :ref:`AnimationPlayer`. By default, other newly created animations will use the step from the previous ones. + +This value is always expressed in seconds. If you want e.g. ``10`` FPS to be the default, you need to set the default step to ``0.1``. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_editors/animation/default_create_bezier_tracks: .. rst-class:: classref-property @@ -2267,6 +2341,30 @@ If ``true``, create a ``RESET`` track when creating a new animation track. This ---- +.. _class_EditorSettings_property_editors/animation/default_fps_compatibility: + +.. rst-class:: classref-property + +:ref:`bool` **editors/animation/default_fps_compatibility** :ref:`🔗` + +Controls whether :ref:`AnimationPlayer` will apply snapping to nearest integer FPS when snapping is in Seconds mode. The option is remembered locally for a scene and this option only determines the default value when scene doesn't have local state yet. + +.. rst-class:: classref-item-separator + +---- + +.. _class_EditorSettings_property_editors/animation/default_fps_mode: + +.. rst-class:: classref-property + +:ref:`int` **editors/animation/default_fps_mode** :ref:`🔗` + +Default step mode for :ref:`AnimationPlayer` (seconds or FPS). The option is remembered locally for a scene and this option only determines the default value when scene doesn't have local state yet. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_editors/animation/onion_layers_future_color: .. rst-class:: classref-property @@ -3258,7 +3356,7 @@ Input accumulation can be disabled to get slightly more precise/reactive input a How to position the Cancel and OK buttons in the editor's :ref:`AcceptDialog`\ s. Different platforms have different standard behaviors for this, which can be overridden using this setting. This is useful if you use Godot both on Windows and macOS/Linux and your Godot muscle memory is stronger than your OS specific one. -- **Auto** follows the platform convention: Cancel first on macOS and Linux, OK first on Windows. +- **Auto** follows the platform convention: OK first on Windows, KDE, and LXQt, Cancel first on macOS and other Linux desktop environments. - **Cancel First** forces the ordering Cancel/OK. @@ -3408,7 +3506,7 @@ Translations are provided by the community. If you spot a mistake, :doc:`contrib :ref:`int` **interface/editor/editor_screen** :ref:`🔗` -The preferred monitor to display the editor. If **Auto**, the editor will remember the last screen it was displayed on across restarts. +The preferred monitor to display the editor. If **Auto**, the editor will remember the last screen it was displayed on across multiple sessions. .. rst-class:: classref-item-separator @@ -3638,7 +3736,7 @@ If ``true``, scenes and scripts are saved when the editor loses focus. Depending :ref:`bool` **interface/editor/separate_distraction_mode** :ref:`🔗` -If ``true``, the editor's Script tab will have a separate distraction mode setting from the 2D/3D/AssetLib tabs. If ``false``, the distraction-free mode toggle is shared between all tabs. +If ``true``, the editor's Script tab will have a separate distraction mode setting from the 2D/3D/Game/AssetLib tabs. If ``false``, the distraction-free mode toggle is shared between all tabs. .. rst-class:: classref-item-separator @@ -3696,6 +3794,18 @@ This is equivalent to :ref:`ProjectSettings.display/window/subwindows/embed_subw ---- +.. _class_EditorSettings_property_interface/editor/tablet_driver: + +.. rst-class:: classref-property + +:ref:`int` **interface/editor/tablet_driver** :ref:`🔗` + +Overrides the tablet driver used by the editor. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_interface/editor/ui_layout_direction: .. rst-class:: classref-property @@ -4336,6 +4446,20 @@ If ``true``, enable two finger pan and scale gestures on touchscreen devices. ---- +.. _class_EditorSettings_property_interface/touchscreen/enable_touch_actions_panel: + +.. rst-class:: classref-property + +:ref:`bool` **interface/touchscreen/enable_touch_actions_panel** :ref:`🔗` + +If ``true``, enables the TouchActionsPanel to provide easy access to keyboard shortcuts on touchscreen devices. + +\ **Note:** Only available in the Android editor. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_interface/touchscreen/increase_scrollbar_touch_area: .. rst-class:: classref-property @@ -4640,7 +4764,7 @@ Overrides game embedding setting for all newly opened projects. If enabled, game The window mode to use to display the project when starting the project from the editor. -\ **Note:** Game embedding is not available for "Force Maximized" or "Force Fullscreen." +\ **Note:** Game embedding is not available for **"Force Maximized"** or **"Force Fullscreen"**. .. rst-class:: classref-item-separator @@ -4970,6 +5094,20 @@ If ``true``, converts indentation to match the script editor's indentation setti ---- +.. _class_EditorSettings_property_text_editor/behavior/files/drop_preload_resources_as_uid: + +.. rst-class:: classref-property + +:ref:`bool` **text_editor/behavior/files/drop_preload_resources_as_uid** :ref:`🔗` + +If ``true``, when dropping a :ref:`Resource` file to script editor while :kbd:`Ctrl` is held, the resource will be preloaded with a UID. If ``false``, the resource will be preloaded with a path. + +When you hold :kbd:`Ctrl+Shift`, the behavior is reversed. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_text_editor/behavior/files/open_dominant_script_on_scene_change: .. rst-class:: classref-property @@ -6024,6 +6162,18 @@ The script editor's color for user-defined types (using ``class_name``). ---- +.. _class_EditorSettings_property_text_editor/theme/highlighting/warning_color: + +.. rst-class:: classref-property + +:ref:`Color` **text_editor/theme/highlighting/warning_color** :ref:`🔗` + +The script editor's background color for lines with warnings. This should be set to a translucent color so that it can display on top of other line color modifiers such as :ref:`text_editor/theme/highlighting/current_line_color`. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_text_editor/theme/highlighting/word_highlighted_color: .. rst-class:: classref-property diff --git a/classes/class_fileaccess.rst b/classes/class_fileaccess.rst index b5e79a152..5de46f172 100644 --- a/classes/class_fileaccess.rst +++ b/classes/class_fileaccess.rst @@ -21,7 +21,7 @@ Description This class can be used to permanently store data in the user device's file system and to read from it. This is useful for storing game save data or player configuration files. -Here's a sample on how to write and read from a file: +\ **Example:** How to write and read from a file. The file named ``"save_game.dat"`` will be stored in the user data folder, as specified in the :doc:`Data paths <../tutorials/io/data_paths>` documentation: .. tabs:: @@ -54,13 +54,11 @@ Here's a sample on how to write and read from a file: -In the example above, the file will be saved in the user data folder as specified in the :doc:`Data paths <../tutorials/io/data_paths>` documentation. - -\ **FileAccess** will close when it's freed, which happens when it goes out of scope or when it gets assigned with ``null``. :ref:`close()` can be used to close it before then explicitly. In C# the reference must be disposed manually, which can be done with the ``using`` statement or by calling the ``Dispose`` method directly. +A **FileAccess** instance will close its file when the instance is freed. Since it inherits :ref:`RefCounted`, this happens automatically when it is no longer in use. :ref:`close()` can be called to close it earlier. In C#, the reference must be disposed manually, which can be done with the ``using`` statement or by calling the ``Dispose`` method directly. \ **Note:** To access project resources once exported, it is recommended to use :ref:`ResourceLoader` instead of **FileAccess**, as some files are converted to engine-specific formats and their original source files might not be present in the exported PCK package. If using **FileAccess**, make sure the file is included in the export by changing its import mode to **Keep File (exported as is)** in the Import dock, or, for files where this option is not available, change the non-resource export filter in the Export dialog to include the file's extension (e.g. ``*.txt``). -\ **Note:** Files are automatically closed only if the process exits "normally" (such as by clicking the window manager's close button or pressing **Alt + F4**). If you stop the project execution by pressing **F8** while the project is running, the file won't be closed as the game process will be killed. You can work around this by calling :ref:`flush()` at regular intervals. +\ **Note:** Files are automatically closed only if the process exits "normally" (such as by clicking the window manager's close button or pressing :kbd:`Alt + F4`). If you stop the project execution by pressing :kbd:`F8` while the project is running, the file won't be closed as the game process will be killed. You can work around this by calling :ref:`flush()` at regular intervals. .. rst-class:: classref-introduction-group @@ -112,6 +110,8 @@ Methods +-------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_64`\ (\ ) |const| | +-------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_access_time`\ (\ file\: :ref:`String`\ ) |static| | + +-------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_as_text`\ (\ skip_cr\: :ref:`bool` = false\ ) |const| | +-------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedByteArray` | :ref:`get_buffer`\ (\ length\: :ref:`int`\ ) |const| | @@ -156,6 +156,8 @@ Methods +-------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_sha256`\ (\ path\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_size`\ (\ file\: :ref:`String`\ ) |static| | + +-------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |bitfield|\[:ref:`UnixPermissionFlags`\] | :ref:`get_unix_permissions`\ (\ file\: :ref:`String`\ ) |static| | +-------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`get_var`\ (\ allow_objects\: :ref:`bool` = false\ ) |const| | @@ -440,9 +442,7 @@ Property Descriptions If ``true``, the file is read with big-endian `endianness `__. If ``false``, the file is read with little-endian endianness. If in doubt, leave this to ``false`` as most files are written with little-endian endianness. -\ **Note:** :ref:`big_endian` is only about the file format, not the CPU type. The CPU endianness doesn't affect the default endianness for files written. - -\ **Note:** This is always reset to ``false`` whenever you open the file. Therefore, you must set :ref:`big_endian` *after* opening the file, not before. +\ **Note:** This is always reset to system endianness, which is little-endian on all supported platforms, whenever you open the file. Therefore, you must set :ref:`big_endian` *after* opening the file, not before. .. rst-class:: classref-section-separator @@ -596,6 +596,18 @@ Returns the next 64 bits from the file as an integer. See :ref:`store_64()` **get_access_time**\ (\ file\: :ref:`String`\ ) |static| :ref:`🔗` + +Returns the last time the ``file`` was accessed in Unix timestamp format, or ``0`` on error. This Unix timestamp can be converted to another format using the :ref:`Time` singleton. + +.. rst-class:: classref-item-separator + +---- + .. _class_FileAccess_method_get_as_text: .. rst-class:: classref-method @@ -886,6 +898,18 @@ Returns an SHA-256 :ref:`String` representing the file at the give ---- +.. _class_FileAccess_method_get_size: + +.. rst-class:: classref-method + +:ref:`int` **get_size**\ (\ file\: :ref:`String`\ ) |static| :ref:`🔗` + +Returns file size in bytes, or ``-1`` on error. + +.. rst-class:: classref-item-separator + +---- + .. _class_FileAccess_method_get_unix_permissions: .. rst-class:: classref-method diff --git a/classes/class_foldablecontainer.rst b/classes/class_foldablecontainer.rst new file mode 100644 index 000000000..ad89a3e77 --- /dev/null +++ b/classes/class_foldablecontainer.rst @@ -0,0 +1,601 @@ +:github_url: hide + +.. meta:: + :keywords: expandable, collapsible, collapse + +.. 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/FoldableContainer.xml. + +.. _class_FoldableContainer: + +FoldableContainer +================= + +**Inherits:** :ref:`Container` **<** :ref:`Control` **<** :ref:`CanvasItem` **<** :ref:`Node` **<** :ref:`Object` + +A container that can be expanded/collapsed. + +.. rst-class:: classref-introduction-group + +Description +----------- + +A container that can be expanded/collapsed, with a title that can be filled with controls, such as buttons. + +The title can be positioned at the top or bottom of the container. + +The container can be expanded or collapsed by clicking the title or by pressing ``ui_accept`` when focused. + +Child control nodes are hidden when the container is collapsed. Ignores non-control children. + +Can allow grouping with other FoldableContainers, check :ref:`foldable_group` and :ref:`FoldableGroup`. + +.. rst-class:: classref-reftable-group + +Properties +---------- + +.. table:: + :widths: auto + + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`FoldableGroup` | :ref:`foldable_group` | | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`bool` | :ref:`folded` | ``false`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`String` | :ref:`language` | ``""`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`MouseFilter` | mouse_filter | ``0`` (overrides :ref:`Control`) | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`String` | :ref:`text` | ``""`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`TextDirection` | :ref:`text_direction` | ``0`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`OverrunBehavior` | :ref:`text_overrun_behavior` | ``0`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`HorizontalAlignment` | :ref:`title_alignment` | ``0`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`TitlePosition` | :ref:`title_position` | ``0`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +--------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_title_bar_control`\ (\ control\: :ref:`Control`\ ) | + +--------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`expand`\ (\ ) | + +--------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`fold`\ (\ ) | + +--------+-----------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`remove_title_bar_control`\ (\ control\: :ref:`Control`\ ) | + +--------+-----------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-reftable-group + +Theme Properties +---------------- + +.. table:: + :widths: auto + + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`Color` | :ref:`collapsed_font_color` | ``Color(1, 1, 1, 1)`` | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`Color` | :ref:`font_color` | ``Color(0.875, 0.875, 0.875, 1)`` | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`Color` | :ref:`font_outline_color` | ``Color(1, 1, 1, 1)`` | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`Color` | :ref:`hover_font_color` | ``Color(0.95, 0.95, 0.95, 1)`` | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`int` | :ref:`h_separation` | ``2`` | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`int` | :ref:`outline_size` | ``0`` | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`Font` | :ref:`font` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`int` | :ref:`font_size` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`Texture2D` | :ref:`expanded_arrow` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`Texture2D` | :ref:`expanded_arrow_mirrored` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`Texture2D` | :ref:`folded_arrow` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`Texture2D` | :ref:`folded_arrow_mirrored` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`StyleBox` | :ref:`focus` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`StyleBox` | :ref:`panel` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`StyleBox` | :ref:`title_collapsed_hover_panel` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`StyleBox` | :ref:`title_collapsed_panel` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`StyleBox` | :ref:`title_hover_panel` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + | :ref:`StyleBox` | :ref:`title_panel` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------+-----------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Signals +------- + +.. _class_FoldableContainer_signal_folding_changed: + +.. rst-class:: classref-signal + +**folding_changed**\ (\ is_folded\: :ref:`bool`\ ) :ref:`🔗` + +Emitted when the container is folded/expanded. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Enumerations +------------ + +.. _enum_FoldableContainer_TitlePosition: + +.. rst-class:: classref-enumeration + +enum **TitlePosition**: :ref:`🔗` + +.. _class_FoldableContainer_constant_POSITION_TOP: + +.. rst-class:: classref-enumeration-constant + +:ref:`TitlePosition` **POSITION_TOP** = ``0`` + +Makes the title appear at the top of the container. + +.. _class_FoldableContainer_constant_POSITION_BOTTOM: + +.. rst-class:: classref-enumeration-constant + +:ref:`TitlePosition` **POSITION_BOTTOM** = ``1`` + +Makes the title appear at the bottom of the container. Also makes all StyleBoxes flipped vertically. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Property Descriptions +--------------------- + +.. _class_FoldableContainer_property_foldable_group: + +.. rst-class:: classref-property + +:ref:`FoldableGroup` **foldable_group** :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_foldable_group**\ (\ value\: :ref:`FoldableGroup`\ ) +- :ref:`FoldableGroup` **get_foldable_group**\ (\ ) + +The :ref:`FoldableGroup` associated with the container. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_property_folded: + +.. rst-class:: classref-property + +:ref:`bool` **folded** = ``false`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_folded**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **is_folded**\ (\ ) + +If ``true``, the container will becomes folded and will hide all its children. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_property_language: + +.. rst-class:: classref-property + +:ref:`String` **language** = ``""`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_language**\ (\ value\: :ref:`String`\ ) +- :ref:`String` **get_language**\ (\ ) + +Language code used for text shaping algorithms. If left empty, current locale is used instead. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_property_text: + +.. rst-class:: classref-property + +:ref:`String` **text** = ``""`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_text**\ (\ value\: :ref:`String`\ ) +- :ref:`String` **get_text**\ (\ ) + +The Container's title text. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_property_text_direction: + +.. rst-class:: classref-property + +:ref:`TextDirection` **text_direction** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_text_direction**\ (\ value\: :ref:`TextDirection`\ ) +- :ref:`TextDirection` **get_text_direction**\ (\ ) + +Base text writing direction. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_property_text_overrun_behavior: + +.. rst-class:: classref-property + +:ref:`OverrunBehavior` **text_overrun_behavior** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_text_overrun_behavior**\ (\ value\: :ref:`OverrunBehavior`\ ) +- :ref:`OverrunBehavior` **get_text_overrun_behavior**\ (\ ) + +Defines the behavior of the **FoldableContainer** when the text is longer than the available space. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_property_title_alignment: + +.. rst-class:: classref-property + +:ref:`HorizontalAlignment` **title_alignment** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_title_alignment**\ (\ value\: :ref:`HorizontalAlignment`\ ) +- :ref:`HorizontalAlignment` **get_title_alignment**\ (\ ) + +Title's horizontal text alignment as defined in the :ref:`HorizontalAlignment` enum. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_property_title_position: + +.. rst-class:: classref-property + +:ref:`TitlePosition` **title_position** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_title_position**\ (\ value\: :ref:`TitlePosition`\ ) +- :ref:`TitlePosition` **get_title_position**\ (\ ) + +Title's position as defined in the :ref:`TitlePosition` enum. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_FoldableContainer_method_add_title_bar_control: + +.. rst-class:: classref-method + +|void| **add_title_bar_control**\ (\ control\: :ref:`Control`\ ) :ref:`🔗` + +Adds a :ref:`Control` that will be placed next to the container's title, obscuring the clickable area. Prime usage is adding :ref:`Button` nodes, but it can be any :ref:`Control`. + +The control will be added as a child of this container and removed from previous parent if necessary. The controls will be placed aligned to the right, with the first added control being the leftmost one. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_method_expand: + +.. rst-class:: classref-method + +|void| **expand**\ (\ ) :ref:`🔗` + +Expands the container and emits :ref:`folding_changed`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_method_fold: + +.. rst-class:: classref-method + +|void| **fold**\ (\ ) :ref:`🔗` + +Folds the container and emits :ref:`folding_changed`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_method_remove_title_bar_control: + +.. rst-class:: classref-method + +|void| **remove_title_bar_control**\ (\ control\: :ref:`Control`\ ) :ref:`🔗` + +Removes a :ref:`Control` added with :ref:`add_title_bar_control()`. The node is not freed automatically, you need to use :ref:`Node.queue_free()`. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Theme Property Descriptions +--------------------------- + +.. _class_FoldableContainer_theme_color_collapsed_font_color: + +.. rst-class:: classref-themeproperty + +:ref:`Color` **collapsed_font_color** = ``Color(1, 1, 1, 1)`` :ref:`🔗` + +The title's font color when collapsed. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_color_font_color: + +.. rst-class:: classref-themeproperty + +:ref:`Color` **font_color** = ``Color(0.875, 0.875, 0.875, 1)`` :ref:`🔗` + +The title's font color when expanded. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_color_font_outline_color: + +.. rst-class:: classref-themeproperty + +:ref:`Color` **font_outline_color** = ``Color(1, 1, 1, 1)`` :ref:`🔗` + +The title's font outline color. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_color_hover_font_color: + +.. rst-class:: classref-themeproperty + +:ref:`Color` **hover_font_color** = ``Color(0.95, 0.95, 0.95, 1)`` :ref:`🔗` + +The title's font hover color. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_constant_h_separation: + +.. rst-class:: classref-themeproperty + +:ref:`int` **h_separation** = ``2`` :ref:`🔗` + +The horizontal separation between the title's icon and text, and between title bar controls. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_constant_outline_size: + +.. rst-class:: classref-themeproperty + +:ref:`int` **outline_size** = ``0`` :ref:`🔗` + +The title's font outline size. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_font_font: + +.. rst-class:: classref-themeproperty + +:ref:`Font` **font** :ref:`🔗` + +The title's font. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_font_size_font_size: + +.. rst-class:: classref-themeproperty + +:ref:`int` **font_size** :ref:`🔗` + +The title's font size. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_icon_expanded_arrow: + +.. rst-class:: classref-themeproperty + +:ref:`Texture2D` **expanded_arrow** :ref:`🔗` + +The title's icon used when expanded. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_icon_expanded_arrow_mirrored: + +.. rst-class:: classref-themeproperty + +:ref:`Texture2D` **expanded_arrow_mirrored** :ref:`🔗` + +The title's icon used when expanded (for bottom title). + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_icon_folded_arrow: + +.. rst-class:: classref-themeproperty + +:ref:`Texture2D` **folded_arrow** :ref:`🔗` + +The title's icon used when folded (for left-to-right layouts). + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_icon_folded_arrow_mirrored: + +.. rst-class:: classref-themeproperty + +:ref:`Texture2D` **folded_arrow_mirrored** :ref:`🔗` + +The title's icon used when collapsed (for right-to-left layouts). + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_style_focus: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **focus** :ref:`🔗` + +Background used when **FoldableContainer** has GUI focus. The :ref:`focus` :ref:`StyleBox` is displayed *over* the base :ref:`StyleBox`, so a partially transparent :ref:`StyleBox` should be used to ensure the base :ref:`StyleBox` remains visible. A :ref:`StyleBox` that represents an outline or an underline works well for this purpose. To disable the focus visual effect, assign a :ref:`StyleBoxEmpty` resource. Note that disabling the focus visual effect will harm keyboard/controller navigation usability, so this is not recommended for accessibility reasons. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_style_panel: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **panel** :ref:`🔗` + +Default background for the **FoldableContainer**. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_style_title_collapsed_hover_panel: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **title_collapsed_hover_panel** :ref:`🔗` + +Background used when the mouse cursor enters the title's area when collapsed. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_style_title_collapsed_panel: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **title_collapsed_panel** :ref:`🔗` + +Default background for the **FoldableContainer**'s title when collapsed. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_style_title_hover_panel: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **title_hover_panel** :ref:`🔗` + +Background used when the mouse cursor enters the title's area when expanded. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_theme_style_title_panel: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **title_panel** :ref:`🔗` + +Default background for the **FoldableContainer**'s title when expanded. + +.. |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.)` +.. |void| replace:: :abbr:`void (No return value.)` diff --git a/classes/class_foldablegroup.rst b/classes/class_foldablegroup.rst new file mode 100644 index 000000000..e840ff8e7 --- /dev/null +++ b/classes/class_foldablegroup.rst @@ -0,0 +1,130 @@ +:github_url: hide + +.. meta:: + :keywords: expandable, collapsible, collapse + +.. 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/FoldableGroup.xml. + +.. _class_FoldableGroup: + +FoldableGroup +============= + +**Inherits:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` + +A group of foldable containers that doesn't allow more than one container to be expanded at a time. + +.. rst-class:: classref-introduction-group + +Description +----------- + +A group of :ref:`FoldableContainer`-derived nodes. Only one container can be expanded at a time. + +.. rst-class:: classref-reftable-group + +Properties +---------- + +.. table:: + :widths: auto + + +-------------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`allow_folding_all` | ``false`` | + +-------------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ + | :ref:`bool` | resource_local_to_scene | ``true`` (overrides :ref:`Resource`) | + +-------------------------+--------------------------------------------------------------------------+---------------------------------------------------------------------------------------+ + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`FoldableContainer`\] | :ref:`get_containers`\ (\ ) |const| | + +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ + | :ref:`FoldableContainer` | :ref:`get_expanded_container`\ (\ ) |const| | + +--------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Signals +------- + +.. _class_FoldableGroup_signal_expanded: + +.. rst-class:: classref-signal + +**expanded**\ (\ container\: :ref:`FoldableContainer`\ ) :ref:`🔗` + +Emitted when one of the containers of the group is expanded. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Property Descriptions +--------------------- + +.. _class_FoldableGroup_property_allow_folding_all: + +.. rst-class:: classref-property + +:ref:`bool` **allow_folding_all** = ``false`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_allow_folding_all**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **is_allow_folding_all**\ (\ ) + +If ``true``, it is possible to fold all containers in this FoldableGroup. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_FoldableGroup_method_get_containers: + +.. rst-class:: classref-method + +:ref:`Array`\[:ref:`FoldableContainer`\] **get_containers**\ (\ ) |const| :ref:`🔗` + +Returns an :ref:`Array` of :ref:`FoldableContainer`\ s that have this as their FoldableGroup (see :ref:`FoldableContainer.foldable_group`). This is equivalent to :ref:`ButtonGroup` but for FoldableContainers. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableGroup_method_get_expanded_container: + +.. rst-class:: classref-method + +:ref:`FoldableContainer` **get_expanded_container**\ (\ ) |const| :ref:`🔗` + +Returns the current expanded container. + +.. |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.)` +.. |void| replace:: :abbr:`void (No return value.)` diff --git a/classes/class_fontfile.rst b/classes/class_fontfile.rst index e6e0082cb..556c65be6 100644 --- a/classes/class_fontfile.rst +++ b/classes/class_fontfile.rst @@ -100,6 +100,8 @@ Properties +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ | :ref:`bool` | :ref:`keep_rounding_remainders` | ``true`` | +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`bool` | :ref:`modulate_color_glyphs` | ``false`` | + +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ | :ref:`int` | :ref:`msdf_pixel_range` | ``16`` | +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ | :ref:`int` | :ref:`msdf_size` | ``48`` | @@ -508,6 +510,23 @@ If set to ``true``, when aligning glyphs to the pixel boundaries rounding remain ---- +.. _class_FontFile_property_modulate_color_glyphs: + +.. rst-class:: classref-property + +:ref:`bool` **modulate_color_glyphs** = ``false`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_modulate_color_glyphs**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **is_modulate_color_glyphs**\ (\ ) + +If set to ``true``, color modulation is applied when drawing colored glyphs, otherwise it's applied to the monochrome glyphs only. + +.. rst-class:: classref-item-separator + +---- + .. _class_FontFile_property_msdf_pixel_range: .. rst-class:: classref-property diff --git a/classes/class_gltfaccessor.rst b/classes/class_gltfaccessor.rst index 6b55c66e7..bec735790 100644 --- a/classes/class_gltfaccessor.rst +++ b/classes/class_gltfaccessor.rst @@ -269,7 +269,7 @@ Property Descriptions - |void| **set_accessor_type**\ (\ value\: :ref:`GLTFAccessorType`\ ) - :ref:`GLTFAccessorType` **get_accessor_type**\ (\ ) -The glTF accessor type as an enum. Possible values are 0 for "SCALAR", 1 for "VEC2", 2 for "VEC3", 3 for "VEC4", 4 for "MAT2", 5 for "MAT3", and 6 for "MAT4". +The glTF accessor type, as an enum. .. rst-class:: classref-item-separator @@ -513,7 +513,7 @@ The offset relative to the start of the bufferView in bytes. **Deprecated:** Use :ref:`accessor_type` instead. -The glTF accessor type as an enum. Use :ref:`accessor_type` instead. +The glTF accessor type, as an :ref:`int`. Possible values are ``0`` for "SCALAR", ``1`` for "VEC2", ``2`` for "VEC3", ``3`` for "VEC4", ``4`` for "MAT2", ``5`` for "MAT3", and ``6`` for "MAT4". .. |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.)` diff --git a/classes/class_gltflight.rst b/classes/class_gltflight.rst index f9c74903b..8c0570925 100644 --- a/classes/class_gltflight.rst +++ b/classes/class_gltflight.rst @@ -94,7 +94,9 @@ Property Descriptions - |void| **set_color**\ (\ value\: :ref:`Color`\ ) - :ref:`Color` **get_color**\ (\ ) -The :ref:`Color` of the light. Defaults to white. A black color causes the light to have no effect. +The :ref:`Color` of the light in linear space. Defaults to white. A black color causes the light to have no effect. + +This value is linear to match glTF, but will be converted to nonlinear sRGB when creating a Godot :ref:`Light3D` node upon import, or converted to linear when exporting a Godot :ref:`Light3D` to glTF. .. rst-class:: classref-item-separator @@ -183,7 +185,7 @@ At this angle, the light drops off to zero brightness. Between the inner and out - |void| **set_range**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_range**\ (\ ) -The range of the light, beyond which the light has no effect. glTF lights with no range defined behave like physical lights (which have infinite range). When creating a Godot light, the range is clamped to 4096. +The range of the light, beyond which the light has no effect. glTF lights with no range defined behave like physical lights (which have infinite range). When creating a Godot light, the range is clamped to ``4096.0``. .. rst-class:: classref-section-separator diff --git a/classes/class_gltfnode.rst b/classes/class_gltfnode.rst index 6cf3687bb..e9701d107 100644 --- a/classes/class_gltfnode.rst +++ b/classes/class_gltfnode.rst @@ -106,7 +106,7 @@ Property Descriptions - |void| **set_camera**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_camera**\ (\ ) -If this glTF node is a camera, the index of the :ref:`GLTFCamera` in the :ref:`GLTFState` that describes the camera's properties. If -1, this node is not a camera. +If this glTF node is a camera, the index of the :ref:`GLTFCamera` in the :ref:`GLTFState` that describes the camera's properties. If ``-1``, this node is not a camera. .. rst-class:: classref-item-separator diff --git a/classes/class_gltfobjectmodelproperty.rst b/classes/class_gltfobjectmodelproperty.rst index df372ec31..47f1d5899 100644 --- a/classes/class_gltfobjectmodelproperty.rst +++ b/classes/class_gltfobjectmodelproperty.rst @@ -235,7 +235,7 @@ If set, this :ref:`Expression` will be used to convert the pro - |void| **set_json_pointers**\ (\ value\: :ref:`Array`\[:ref:`PackedStringArray`\]\ ) - :ref:`Array`\[:ref:`PackedStringArray`\] **get_json_pointers**\ (\ ) -The glTF object model JSON pointers used to identify the property in the glTF object model. In most cases, there will be only one item in this array, but niche cases may require multiple pointers. The items are themselves arrays which represent the JSON pointer split into its components. +The glTF object model JSON pointers used to identify the property in the glTF object model. In most cases, there will be only one item in this array, but specific cases may require multiple pointers. The items are themselves arrays which represent the JSON pointer split into its components. .. rst-class:: classref-item-separator diff --git a/classes/class_gltfphysicsbody.rst b/classes/class_gltfphysicsbody.rst index e2879a478..28950ef61 100644 --- a/classes/class_gltfphysicsbody.rst +++ b/classes/class_gltfphysicsbody.rst @@ -111,7 +111,11 @@ The angular velocity of the physics body, in radians per second. This is only us - |void| **set_body_type**\ (\ value\: :ref:`String`\ ) - :ref:`String` **get_body_type**\ (\ ) -The type of the body. When importing, this controls what type of :ref:`CollisionObject3D` node Godot should generate. Valid values are "static", "animatable", "character", "rigid", "vehicle", and "trigger". When exporting, this will be squashed down to one of "static", "kinematic", or "dynamic" motion types, or the "trigger" property. +The type of the body. + +When importing, this controls what type of :ref:`CollisionObject3D` node Godot should generate. Valid values are ``"static"``, ``"animatable"``, ``"character"``, ``"rigid"``, ``"vehicle"``, and ``"trigger"``. + +When exporting, this will be squashed down to one of ``"static"``, ``"kinematic"``, or ``"dynamic"`` motion types, or the ``"trigger"`` property. .. rst-class:: classref-item-separator diff --git a/classes/class_gltfphysicsshape.rst b/classes/class_gltfphysicsshape.rst index 1556aa4f5..f758bab62 100644 --- a/classes/class_gltfphysicsshape.rst +++ b/classes/class_gltfphysicsshape.rst @@ -98,7 +98,7 @@ Property Descriptions - |void| **set_height**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_height**\ (\ ) -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. +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 @@ -115,7 +115,7 @@ The height of the shape, in meters. This is only used when the shape type is "ca - |void| **set_importer_mesh**\ (\ value\: :ref:`ImporterMesh`\ ) - :ref:`ImporterMesh` **get_importer_mesh**\ (\ ) -The :ref:`ImporterMesh` resource of the shape. This is only used when the shape 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 @@ -132,7 +132,7 @@ The :ref:`ImporterMesh` resource of the shape. This is only - |void| **set_is_trigger**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **get_is_trigger**\ (\ ) -If ``true``, indicates that this shape is a trigger. For Godot, this means that the shape 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 :ref:`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. @@ -151,7 +151,7 @@ This is the only variable not used in the :ref:`to_node()`\ ) - :ref:`int` **get_mesh_index**\ (\ ) -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). +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 @@ -168,7 +168,7 @@ The index of the shape's mesh in the glTF file. This is only used when the shape - |void| **set_radius**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_radius**\ (\ ) -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. +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 @@ -185,7 +185,7 @@ The radius of the shape, in meters. This is only used when the shape type is "ca - |void| **set_shape_type**\ (\ value\: :ref:`String`\ ) - :ref:`String` **get_shape_type**\ (\ ) -The type of shape this shape 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 @@ -202,7 +202,7 @@ The type of shape this shape represents. Valid values are "box", "capsule", "cyl - |void| **set_size**\ (\ value\: :ref:`Vector3`\ ) - :ref:`Vector3` **get_size**\ (\ ) -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. +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 diff --git a/classes/class_gltfstate.rst b/classes/class_gltfstate.rst index b88dba95d..04a3ee34c 100644 --- a/classes/class_gltfstate.rst +++ b/classes/class_gltfstate.rst @@ -489,7 +489,7 @@ Appends an extension to the list of extensions used by this glTF file during ser :ref:`int` **append_data_to_buffers**\ (\ data\: :ref:`PackedByteArray`, deduplication\: :ref:`bool`\ ) :ref:`🔗` -Appends the given byte array data to the buffers and creates a :ref:`GLTFBufferView` for it. The index of the destination :ref:`GLTFBufferView` is returned. If ``deduplication`` is ``true``, the buffers will first be searched for duplicate data, otherwise new bytes will always be appended. +Appends the given byte array ``data`` to the buffers and creates a :ref:`GLTFBufferView` for it. The index of the destination :ref:`GLTFBufferView` is returned. If ``deduplication`` is ``true``, the buffers are first searched for duplicate data, otherwise new bytes are always appended. .. rst-class:: classref-item-separator @@ -501,7 +501,7 @@ Appends the given byte array data to the buffers and creates a :ref:`GLTFBufferV :ref:`int` **append_gltf_node**\ (\ gltf_node\: :ref:`GLTFNode`, godot_scene_node\: :ref:`Node`, parent_node_index\: :ref:`int`\ ) :ref:`🔗` -Append the given :ref:`GLTFNode` to the state, and return its new index. This can be used to export one Godot node as multiple glTF nodes, or inject new glTF nodes at import time. On import, this must be called before :ref:`GLTFDocumentExtension._generate_scene_node()` finishes for the parent node. On export, this must be called before :ref:`GLTFDocumentExtension._export_node()` runs for the parent node. +Appends the given :ref:`GLTFNode` to the state, and returns its new index. This can be used to export one Godot node as multiple glTF nodes, or inject new glTF nodes at import time. On import, this must be called before :ref:`GLTFDocumentExtension._generate_scene_node()` finishes for the parent node. On export, this must be called before :ref:`GLTFDocumentExtension._export_node()` runs for the parent node. The ``godot_scene_node`` parameter is the Godot scene node that corresponds to this glTF node. This is highly recommended to be set to a valid node, but may be ``null`` if there is no corresponding Godot scene node. One Godot scene node may be used for multiple glTF nodes, so if exporting multiple glTF nodes for one Godot scene node, use the same Godot scene node for each. diff --git a/classes/class_graphedit.rst b/classes/class_graphedit.rst index 47c308129..d9f4e4dc6 100644 --- a/classes/class_graphedit.rst +++ b/classes/class_graphedit.rst @@ -82,6 +82,8 @@ Properties +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ | :ref:`bool` | :ref:`snapping_enabled` | ``true`` | +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`type_names` | ``{}`` | + +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ | :ref:`float` | :ref:`zoom` | ``1.0`` | +------------------------------------------------------------------+--------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ | :ref:`float` | :ref:`zoom_max` | ``2.0736`` | @@ -136,6 +138,8 @@ Methods +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector2Array` | :ref:`get_connection_line`\ (\ from_node\: :ref:`Vector2`, to_node\: :ref:`Vector2`\ ) |const| | +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`get_connection_list_from_node`\ (\ node\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`get_connections_intersecting_with_rect`\ (\ rect\: :ref:`Rect2`\ ) |const| | +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`GraphFrame` | :ref:`get_element_frame`\ (\ element\: :ref:`StringName`\ ) | @@ -206,6 +210,8 @@ Theme Properties +-----------------------------------+-----------------------------------------------------------------------------------------------------------+-------------------------------+ | :ref:`StyleBox` | :ref:`panel` | | +-----------------------------------+-----------------------------------------------------------------------------------------------------------+-------------------------------+ + | :ref:`StyleBox` | :ref:`panel_focus` | | + +-----------------------------------+-----------------------------------------------------------------------------------------------------------+-------------------------------+ .. rst-class:: classref-section-separator @@ -864,6 +870,23 @@ If ``true``, enables snapping. ---- +.. _class_GraphEdit_property_type_names: + +.. rst-class:: classref-property + +:ref:`Dictionary` **type_names** = ``{}`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_type_names**\ (\ value\: :ref:`Dictionary`\ ) +- :ref:`Dictionary` **get_type_names**\ (\ ) + +:ref:`Dictionary` of human readable port type names. + +.. rst-class:: classref-item-separator + +---- + .. _class_GraphEdit_property_zoom: .. rst-class:: classref-property @@ -1229,6 +1252,30 @@ Returns the points which would make up a connection between ``from_node`` and `` ---- +.. _class_GraphEdit_method_get_connection_list_from_node: + +.. rst-class:: classref-method + +:ref:`Array`\[:ref:`Dictionary`\] **get_connection_list_from_node**\ (\ node\: :ref:`StringName`\ ) |const| :ref:`🔗` + +Returns an :ref:`Array` containing a list of all connections for ``node``. + +A connection is represented as a :ref:`Dictionary` in the form of: + +:: + + { + from_node: StringName, + from_port: int, + to_node: StringName, + to_port: int, + keep_alive: bool + } + +.. rst-class:: classref-item-separator + +---- + .. _class_GraphEdit_method_get_connections_intersecting_with_rect: .. rst-class:: classref-method @@ -1610,6 +1657,18 @@ The icon for the zoom reset button. The background drawn under the grid. +.. rst-class:: classref-item-separator + +---- + +.. _class_GraphEdit_theme_style_panel_focus: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **panel_focus** :ref:`🔗` + +:ref:`StyleBox` used when the **GraphEdit** is focused (when used with assistive apps). + .. |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.)` diff --git a/classes/class_graphnode.rst b/classes/class_graphnode.rst index 1aaae7773..429a43463 100644 --- a/classes/class_graphnode.rst +++ b/classes/class_graphnode.rst @@ -37,6 +37,8 @@ Properties .. table:: :widths: auto + +----------------------------------------------+------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``3`` (overrides :ref:`Control`) | +----------------------------------------------+------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ | :ref:`bool` | :ref:`ignore_invalid_connection_type` | ``false`` | +----------------------------------------------+------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ @@ -140,10 +142,14 @@ Theme Properties +-----------------------------------+-------------------------------------------------------------------------+-----------------------------------+ | :ref:`StyleBox` | :ref:`panel` | | +-----------------------------------+-------------------------------------------------------------------------+-----------------------------------+ + | :ref:`StyleBox` | :ref:`panel_focus` | | + +-----------------------------------+-------------------------------------------------------------------------+-----------------------------------+ | :ref:`StyleBox` | :ref:`panel_selected` | | +-----------------------------------+-------------------------------------------------------------------------+-----------------------------------+ | :ref:`StyleBox` | :ref:`slot` | | +-----------------------------------+-------------------------------------------------------------------------+-----------------------------------+ + | :ref:`StyleBox` | :ref:`slot_selected` | | + +-----------------------------------+-------------------------------------------------------------------------+-----------------------------------+ | :ref:`StyleBox` | :ref:`titlebar` | | +-----------------------------------+-------------------------------------------------------------------------+-----------------------------------+ | :ref:`StyleBox` | :ref:`titlebar_selected` | | @@ -689,6 +695,18 @@ The default background for the slot area of the **GraphNode**. ---- +.. _class_GraphNode_theme_style_panel_focus: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **panel_focus** :ref:`🔗` + +:ref:`StyleBox` used when the **GraphNode** is focused (when used with assistive apps). + +.. rst-class:: classref-item-separator + +---- + .. _class_GraphNode_theme_style_panel_selected: .. rst-class:: classref-themeproperty @@ -713,6 +731,18 @@ The :ref:`StyleBox` used for each slot of the **GraphNode**. ---- +.. _class_GraphNode_theme_style_slot_selected: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **slot_selected** :ref:`🔗` + +:ref:`StyleBox` used when the slot is focused (when used with assistive apps). + +.. rst-class:: classref-item-separator + +---- + .. _class_GraphNode_theme_style_titlebar: .. rst-class:: classref-themeproperty diff --git a/classes/class_image.rst b/classes/class_image.rst index 6f449887f..0ab518ae0 100644 --- a/classes/class_image.rst +++ b/classes/class_image.rst @@ -143,6 +143,8 @@ Methods +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`load_bmp_from_buffer`\ (\ buffer\: :ref:`PackedByteArray`\ ) | +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`load_dds_from_buffer`\ (\ buffer\: :ref:`PackedByteArray`\ ) | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Image` | :ref:`load_from_file`\ (\ path\: :ref:`String`\ ) |static| | +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`load_jpg_from_buffer`\ (\ buffer\: :ref:`PackedByteArray`\ ) | @@ -173,6 +175,10 @@ Methods +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`rotate_180`\ (\ ) | +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`save_dds`\ (\ path\: :ref:`String`\ ) |const| | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedByteArray` | :ref:`save_dds_to_buffer`\ (\ ) |const| | + +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`save_exr`\ (\ path\: :ref:`String`, grayscale\: :ref:`bool` = false\ ) |const| | +-----------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedByteArray` | :ref:`save_exr_to_buffer`\ (\ grayscale\: :ref:`bool` = false\ ) |const| | @@ -1430,6 +1436,20 @@ Loads an image from the binary contents of a BMP file. ---- +.. _class_Image_method_load_dds_from_buffer: + +.. rst-class:: classref-method + +:ref:`Error` **load_dds_from_buffer**\ (\ buffer\: :ref:`PackedByteArray`\ ) :ref:`🔗` + +Loads an image from the binary contents of a DDS file. + +\ **Note:** This method is only available in engine builds with the DDS module enabled. By default, the DDS module is enabled, but it can be disabled at build-time using the ``module_dds_enabled=no`` SCons option. + +.. rst-class:: classref-item-separator + +---- + .. _class_Image_method_load_from_file: .. rst-class:: classref-method @@ -1622,6 +1642,34 @@ Rotates the image by ``180`` degrees. The width and height of the image must be ---- +.. _class_Image_method_save_dds: + +.. rst-class:: classref-method + +:ref:`Error` **save_dds**\ (\ path\: :ref:`String`\ ) |const| :ref:`🔗` + +Saves the image as a DDS (DirectDraw Surface) file to ``path``. DDS is a container format that can store textures in various compression formats, such as DXT1, DXT5, or BC7. This function will return :ref:`@GlobalScope.ERR_UNAVAILABLE` if Godot was compiled without the DDS module. + +\ **Note:** The DDS module may be disabled in certain builds, which means :ref:`save_dds()` will return :ref:`@GlobalScope.ERR_UNAVAILABLE` when it is called from an exported project. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Image_method_save_dds_to_buffer: + +.. rst-class:: classref-method + +:ref:`PackedByteArray` **save_dds_to_buffer**\ (\ ) |const| :ref:`🔗` + +Saves the image as a DDS (DirectDraw Surface) file to a byte array. DDS is a container format that can store textures in various compression formats, such as DXT1, DXT5, or BC7. This function will return an empty byte array if Godot was compiled without the DDS module. + +\ **Note:** The DDS module may be disabled in certain builds, which means :ref:`save_dds_to_buffer()` will return an empty byte array when it is called from an exported project. + +.. rst-class:: classref-item-separator + +---- + .. _class_Image_method_save_exr: .. rst-class:: classref-method diff --git a/classes/class_inputmap.rst b/classes/class_inputmap.rst index 88b1b7e27..bb1a623cd 100644 --- a/classes/class_inputmap.rst +++ b/classes/class_inputmap.rst @@ -57,6 +57,8 @@ Methods +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`event_is_action`\ (\ event\: :ref:`InputEvent`, action\: :ref:`StringName`, exact_match\: :ref:`bool` = false\ ) |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_action_description`\ (\ action\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`StringName`\] | :ref:`get_actions`\ (\ ) | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`has_action`\ (\ action\: :ref:`StringName`\ ) |const| | @@ -199,6 +201,18 @@ If ``exact_match`` is ``false``, it ignores additional input modifiers for :ref: ---- +.. _class_InputMap_method_get_action_description: + +.. rst-class:: classref-method + +:ref:`String` **get_action_description**\ (\ action\: :ref:`StringName`\ ) |const| :ref:`🔗` + +Returns the human-readable description of the given action. + +.. rst-class:: classref-item-separator + +---- + .. _class_InputMap_method_get_actions: .. rst-class:: classref-method diff --git a/classes/class_javaclasswrapper.rst b/classes/class_javaclasswrapper.rst index edca66d16..d3fb9a0f6 100644 --- a/classes/class_javaclasswrapper.rst +++ b/classes/class_javaclasswrapper.rst @@ -80,6 +80,8 @@ Returns the Java exception from the last call into a Java class. If there was no Wraps a class defined in Java, and returns it as a :ref:`JavaClass` :ref:`Object` type that Godot can interact with. +When wrapping inner (nested) classes, use ``$`` instead of ``.`` to separate them. For example, ``JavaClassWrapper.wrap("android.view.WindowManager$LayoutParams")`` wraps the **WindowManager.LayoutParams** class. + \ **Note:** This method only works on Android. On every other platform, this method does nothing and returns an empty :ref:`JavaClass`. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` diff --git a/classes/class_jsonrpc.rst b/classes/class_jsonrpc.rst index 15dabe115..02df24ac5 100644 --- a/classes/class_jsonrpc.rst +++ b/classes/class_jsonrpc.rst @@ -42,7 +42,7 @@ Methods +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`process_string`\ (\ action\: :ref:`String`\ ) | +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_scope`\ (\ scope\: :ref:`String`, target\: :ref:`Object`\ ) | + | |void| | :ref:`set_method`\ (\ name\: :ref:`String`, callback\: :ref:`Callable`\ ) | +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -207,15 +207,17 @@ To add new supported methods extend the JSONRPC class and call :ref:`process_act ---- -.. _class_JSONRPC_method_set_scope: +.. _class_JSONRPC_method_set_method: .. rst-class:: classref-method -|void| **set_scope**\ (\ scope\: :ref:`String`, target\: :ref:`Object`\ ) :ref:`🔗` +|void| **set_method**\ (\ name\: :ref:`String`, callback\: :ref:`Callable`\ ) :ref:`🔗` -.. container:: contribute +Registers a callback for the given method name. - There is currently no description for this method. Please help us by :ref:`contributing one `! +- ``name`` The name that clients can use to access the callback. + +- ``callback`` The callback which will handle the specific method. .. |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.)` diff --git a/classes/class_label.rst b/classes/class_label.rst index 400efb550..935a921f4 100644 --- a/classes/class_label.rst +++ b/classes/class_label.rst @@ -42,10 +42,14 @@ Properties +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`AutowrapMode` | :ref:`autowrap_mode` | ``0`` | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | |bitfield|\[:ref:`LineBreakFlag`\] | :ref:`autowrap_trim_flags` | ``192`` | + +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`clip_text` | ``false`` | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`String` | :ref:`ellipsis_char` | ``"…"`` | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``3`` (overrides :ref:`Control`) | + +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`HorizontalAlignment` | :ref:`horizontal_alignment` | ``0`` | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | |bitfield|\[:ref:`JustificationFlag`\] | :ref:`justification_flags` | ``163`` | @@ -138,6 +142,8 @@ Theme Properties +---------------------------------+----------------------------------------------------------------------------+-----------------------+ | :ref:`int` | :ref:`font_size` | | +---------------------------------+----------------------------------------------------------------------------+-----------------------+ + | :ref:`StyleBox` | :ref:`focus` | | + +---------------------------------+----------------------------------------------------------------------------+-----------------------+ | :ref:`StyleBox` | :ref:`normal` | | +---------------------------------+----------------------------------------------------------------------------+-----------------------+ @@ -167,6 +173,23 @@ If set to something other than :ref:`TextServer.AUTOWRAP_OFF`\] **autowrap_trim_flags** = ``192`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_autowrap_trim_flags**\ (\ value\: |bitfield|\[:ref:`LineBreakFlag`\]\ ) +- |bitfield|\[:ref:`LineBreakFlag`\] **get_autowrap_trim_flags**\ (\ ) + +Autowrap space trimming flags. See :ref:`TextServer.BREAK_TRIM_START_EDGE_SPACES` and :ref:`TextServer.BREAK_TRIM_END_EDGE_SPACES` for more info. + +.. rst-class:: classref-item-separator + +---- + .. _class_Label_property_clip_text: .. rst-class:: classref-property @@ -723,6 +746,18 @@ Font size of the **Label**'s text. ---- +.. _class_Label_theme_style_focus: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **focus** :ref:`🔗` + +:ref:`StyleBox` used when the **Label** is focused (when used with assistive apps). + +.. rst-class:: classref-item-separator + +---- + .. _class_Label_theme_style_normal: .. rst-class:: classref-themeproperty diff --git a/classes/class_label3d.rst b/classes/class_label3d.rst index f9b208fbe..e65432b00 100644 --- a/classes/class_label3d.rst +++ b/classes/class_label3d.rst @@ -52,6 +52,8 @@ Properties +---------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+ | :ref:`AutowrapMode` | :ref:`autowrap_mode` | ``0`` | +---------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+ + | |bitfield|\[:ref:`LineBreakFlag`\] | :ref:`autowrap_trim_flags` | ``192`` | + +---------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+ | :ref:`BillboardMode` | :ref:`billboard` | ``0`` | +---------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------+ | :ref:`ShadowCastingSetting` | cast_shadow | ``0`` (overrides :ref:`GeometryInstance3D`) | @@ -339,6 +341,23 @@ If set to something other than :ref:`TextServer.AUTOWRAP_OFF`\] **autowrap_trim_flags** = ``192`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_autowrap_trim_flags**\ (\ value\: |bitfield|\[:ref:`LineBreakFlag`\]\ ) +- |bitfield|\[:ref:`LineBreakFlag`\] **get_autowrap_trim_flags**\ (\ ) + +Autowrap space trimming flags. See :ref:`TextServer.BREAK_TRIM_START_EDGE_SPACES` and :ref:`TextServer.BREAK_TRIM_END_EDGE_SPACES` for more info. + +.. rst-class:: classref-item-separator + +---- + .. _class_Label3D_property_billboard: .. rst-class:: classref-property @@ -384,7 +403,7 @@ If ``true``, text can be seen from the back as well, if ``false``, it is invisib - |void| **set_draw_flag**\ (\ flag\: :ref:`DrawFlags`, enabled\: :ref:`bool`\ ) - :ref:`bool` **get_draw_flag**\ (\ flag\: :ref:`DrawFlags`\ ) |const| -If ``true``, the label is rendered at the same size regardless of distance. +If ``true``, the label is rendered at the same size regardless of distance. The label's size on screen is the same as if the camera was ``1.0`` units away from the label's origin, regardless of the actual distance from the camera. The :ref:`Camera3D`'s field of view (or :ref:`Camera3D.size` when in orthogonal/frustum mode) still affects the size the label is drawn at. .. rst-class:: classref-item-separator diff --git a/classes/class_light3d.rst b/classes/class_light3d.rst index 9158f2097..b29e8c697 100644 --- a/classes/class_light3d.rst +++ b/classes/class_light3d.rst @@ -496,7 +496,7 @@ The light's bake mode. This will affect the global illumination techniques that - |void| **set_color**\ (\ value\: :ref:`Color`\ ) - :ref:`Color` **get_color**\ (\ ) -The light's color. An *overbright* color can be used to achieve a result equivalent to increasing the light's :ref:`light_energy`. +The light's color in the nonlinear sRGB color space. An *overbright* color can be used to achieve a result equivalent to increasing the light's :ref:`light_energy`. .. rst-class:: classref-item-separator diff --git a/classes/class_lineedit.rst b/classes/class_lineedit.rst index e6f33e8aa..1e07dddac 100644 --- a/classes/class_lineedit.rst +++ b/classes/class_lineedit.rst @@ -32,6 +32,14 @@ Description - Check :ref:`edit()`, :ref:`unedit()`, :ref:`is_editing()`, and :ref:`editing_toggled` for more information. +While entering text, it is possible to insert special characters using Unicode, OEM or Windows alt codes: + +- To enter Unicode codepoints, hold :kbd:`Alt` and type the codepoint on the numpad. For example, to enter the character ``á`` (U+00E1), hold :kbd:`Alt` and type :kbd:`+E1` on the numpad (the leading zeroes can be omitted). + +- To enter OEM codepoints, hold :kbd:`Alt` and type the code on the numpad. For example, to enter the character ``á`` (OEM 160), hold :kbd:`Alt` and type ``160`` on the numpad. + +- To enter Windows codepoints, hold :kbd:`Alt` and type the code on the numpad. For example, to enter the character ``á`` (Windows 0225), hold :kbd:`Alt` and type :kbd:`0`, :kbd:`2`, :kbd:`2`, :kbd:`5` on the numpad. The leading zero here must **not** be omitted, as this is how Windows codepoints are distinguished from OEM codepoints. + \ **Important:**\ - Focusing the **LineEdit** with ``ui_focus_next`` (by default :kbd:`Tab`) or ``ui_focus_prev`` (by default :kbd:`Shift + Tab`) or :ref:`Control.grab_focus()` still enters edit mode (for compatibility). @@ -752,7 +760,7 @@ The caret's column position inside the **LineEdit**. When set, the text may scro - |void| **set_caret_force_displayed**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_caret_force_displayed**\ (\ ) -If ``true``, the **LineEdit** will always show the caret, even if focus is lost. +If ``true``, the **LineEdit** will always show the caret, even if not editing or focus is lost. .. rst-class:: classref-item-separator diff --git a/classes/class_linkbutton.rst b/classes/class_linkbutton.rst index 59dfb1e39..b3e2e1d83 100644 --- a/classes/class_linkbutton.rst +++ b/classes/class_linkbutton.rst @@ -32,7 +32,7 @@ Properties :widths: auto +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`FocusMode` | focus_mode | ``0`` (overrides :ref:`Control`) | + | :ref:`FocusMode` | focus_mode | ``3`` (overrides :ref:`Control`) | +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`language` | ``""`` | +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ diff --git a/classes/class_lookatmodifier3d.rst b/classes/class_lookatmodifier3d.rst index a810d677e..bae3f5ac4 100644 --- a/classes/class_lookatmodifier3d.rst +++ b/classes/class_lookatmodifier3d.rst @@ -691,7 +691,7 @@ Returns the remaining seconds of the time-based interpolation. :ref:`bool` **is_interpolating**\ (\ ) |const| :ref:`🔗` -Returns whether the time-based interpolation is running or not. If ``true``, it is equivalent to :ref:`get_interpolation_remaining()` being ``0``. +Returns ``true`` if time-based interpolation is running. If ``true``, it is equivalent to :ref:`get_interpolation_remaining()` returning ``0.0``. This is useful to determine whether a **LookAtModifier3D** can be removed safely. diff --git a/classes/class_material.rst b/classes/class_material.rst index ce05d1ad9..742f9a459 100644 --- a/classes/class_material.rst +++ b/classes/class_material.rst @@ -136,7 +136,7 @@ Sets the **Material** to be used for the next pass. This renders the object agai - |void| **set_render_priority**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_render_priority**\ (\ ) -Sets the render priority for objects in 3D scenes. Higher priority objects will be sorted in front of lower priority objects. In other words, all objects with :ref:`render_priority` ``1`` will render before all objects with :ref:`render_priority` ``0``. +Sets the render priority for objects in 3D scenes. Higher priority objects will be sorted in front of lower priority objects. In other words, all objects with :ref:`render_priority` ``1`` will render on top of all objects with :ref:`render_priority` ``0``. \ **Note:** This only applies to :ref:`StandardMaterial3D`\ s and :ref:`ShaderMaterial`\ s with type "Spatial". diff --git a/classes/class_menubar.rst b/classes/class_menubar.rst index 3d8a70850..a05ecf7c7 100644 --- a/classes/class_menubar.rst +++ b/classes/class_menubar.rst @@ -29,19 +29,21 @@ Properties .. table:: :widths: auto - +--------------------------------------------------+----------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`flat` | ``false`` | - +--------------------------------------------------+----------------------------------------------------------------------+-----------+ - | :ref:`String` | :ref:`language` | ``""`` | - +--------------------------------------------------+----------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`prefer_global_menu` | ``true`` | - +--------------------------------------------------+----------------------------------------------------------------------+-----------+ - | :ref:`int` | :ref:`start_index` | ``-1`` | - +--------------------------------------------------+----------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`switch_on_hover` | ``true`` | - +--------------------------------------------------+----------------------------------------------------------------------+-----------+ - | :ref:`TextDirection` | :ref:`text_direction` | ``0`` | - +--------------------------------------------------+----------------------------------------------------------------------+-----------+ + +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`flat` | ``false`` | + +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | + +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`String` | :ref:`language` | ``""`` | + +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`prefer_global_menu` | ``true`` | + +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`int` | :ref:`start_index` | ``-1`` | + +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`switch_on_hover` | ``true`` | + +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`TextDirection` | :ref:`text_direction` | ``0`` | + +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ .. rst-class:: classref-reftable-group diff --git a/classes/class_menubutton.rst b/classes/class_menubutton.rst index c46ad6361..47456e1b0 100644 --- a/classes/class_menubutton.rst +++ b/classes/class_menubutton.rst @@ -36,7 +36,7 @@ Properties +-----------------------------------------------+-------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`bool` | flat | ``true`` (overrides :ref:`Button`) | +-----------------------------------------------+-------------------------------------------------------------------+-------------------------------------------------------------------------------+ - | :ref:`FocusMode` | focus_mode | ``0`` (overrides :ref:`Control`) | + | :ref:`FocusMode` | focus_mode | ``3`` (overrides :ref:`Control`) | +-----------------------------------------------+-------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`int` | :ref:`item_count` | ``0`` | +-----------------------------------------------+-------------------------------------------------------------------+-------------------------------------------------------------------------------+ diff --git a/classes/class_mesh.rst b/classes/class_mesh.rst index bfe43ae2a..8c8618981 100644 --- a/classes/class_mesh.rst +++ b/classes/class_mesh.rst @@ -573,7 +573,7 @@ Flag used to mark that the array contains 2D vertices. :ref:`ArrayFormat` **ARRAY_FLAG_USE_DYNAMIC_UPDATE** = ``67108864`` -Flag indices that the mesh data will use ``GL_DYNAMIC_DRAW`` on GLES. Unused on Vulkan. +Flag used to mark that the mesh data will use ``GL_DYNAMIC_DRAW`` on GLES. Unused on Vulkan. .. _class_Mesh_constant_ARRAY_FLAG_USE_8_BONE_WEIGHTS: diff --git a/classes/class_multiplayerapiextension.rst b/classes/class_multiplayerapiextension.rst index 77258ffc6..2e57b1e2c 100644 --- a/classes/class_multiplayerapiextension.rst +++ b/classes/class_multiplayerapiextension.rst @@ -41,10 +41,12 @@ The following example extend the default implementation (:ref:`SceneMultiplayer< # Just passthrough base signals (copied to var to avoid cyclic reference) var cts = connected_to_server var cf = connection_failed + var sd = server_disconnected var pc = peer_connected var pd = peer_disconnected base_multiplayer.connected_to_server.connect(func(): cts.emit()) base_multiplayer.connection_failed.connect(func(): cf.emit()) + base_multiplayer.server_disconnected.connect(func(): sd.emit()) base_multiplayer.peer_connected.connect(func(id): pc.emit(id)) base_multiplayer.peer_disconnected.connect(func(id): pd.emit(id)) @@ -82,6 +84,9 @@ The following example extend the default implementation (:ref:`SceneMultiplayer< func _get_unique_id() -> int: return base_multiplayer.get_unique_id() + func _get_remote_sender_id() -> int: + return base_multiplayer.get_remote_sender_id() + func _get_peer_ids() -> PackedInt32Array: return base_multiplayer.get_peers() diff --git a/classes/class_nativemenu.rst b/classes/class_nativemenu.rst index cbb4153b5..f4c52b005 100644 --- a/classes/class_nativemenu.rst +++ b/classes/class_nativemenu.rst @@ -799,7 +799,7 @@ Returns global menu close callback. Returns global menu open callback. -b]Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented only on macOS. .. rst-class:: classref-item-separator diff --git a/classes/class_navigationpathqueryparameters2d.rst b/classes/class_navigationpathqueryparameters2d.rst index 636993287..da074387e 100644 --- a/classes/class_navigationpathqueryparameters2d.rst +++ b/classes/class_navigationpathqueryparameters2d.rst @@ -38,6 +38,10 @@ Properties .. table:: :widths: auto + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Array`\[:ref:`RID`\] | :ref:`excluded_regions` | ``[]`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ + | :ref:`Array`\[:ref:`RID`\] | :ref:`included_regions` | ``[]`` | +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ | :ref:`RID` | :ref:`map` | ``RID()`` | +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+-------------------+ @@ -174,6 +178,44 @@ Include all available metadata about the returned path. Property Descriptions --------------------- +.. _class_NavigationPathQueryParameters2D_property_excluded_regions: + +.. rst-class:: classref-property + +:ref:`Array`\[:ref:`RID`\] **excluded_regions** = ``[]`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_excluded_regions**\ (\ value\: :ref:`Array`\[:ref:`RID`\]\ ) +- :ref:`Array`\[:ref:`RID`\] **get_excluded_regions**\ (\ ) + +The list of region :ref:`RID`\ s that will be excluded from the path query. Use :ref:`NavigationRegion2D.get_rid()` to get the :ref:`RID` associated with a :ref:`NavigationRegion2D` node. + +\ **Note:** The returned array is copied and any changes to it will not update the original property value. To update the value you need to modify the returned array, and then set it to the property again. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationPathQueryParameters2D_property_included_regions: + +.. rst-class:: classref-property + +:ref:`Array`\[:ref:`RID`\] **included_regions** = ``[]`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_included_regions**\ (\ value\: :ref:`Array`\[:ref:`RID`\]\ ) +- :ref:`Array`\[:ref:`RID`\] **get_included_regions**\ (\ ) + +The list of region :ref:`RID`\ s that will be included by the path query. Use :ref:`NavigationRegion2D.get_rid()` to get the :ref:`RID` associated with a :ref:`NavigationRegion2D` node. If left empty all regions are included. If a region ends up being both included and excluded at the same time it will be excluded. + +\ **Note:** The returned array is copied and any changes to it will not update the original property value. To update the value you need to modify the returned array, and then set it to the property again. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationPathQueryParameters2D_property_map: .. rst-class:: classref-property diff --git a/classes/class_navigationpathqueryparameters3d.rst b/classes/class_navigationpathqueryparameters3d.rst index 9849c14aa..e9d391e1d 100644 --- a/classes/class_navigationpathqueryparameters3d.rst +++ b/classes/class_navigationpathqueryparameters3d.rst @@ -38,6 +38,10 @@ Properties .. table:: :widths: auto + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ + | :ref:`Array`\[:ref:`RID`\] | :ref:`excluded_regions` | ``[]`` | + +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ + | :ref:`Array`\[:ref:`RID`\] | :ref:`included_regions` | ``[]`` | +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ | :ref:`RID` | :ref:`map` | ``RID()`` | +------------------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+----------------------+ @@ -174,6 +178,44 @@ Include all available metadata about the returned path. Property Descriptions --------------------- +.. _class_NavigationPathQueryParameters3D_property_excluded_regions: + +.. rst-class:: classref-property + +:ref:`Array`\[:ref:`RID`\] **excluded_regions** = ``[]`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_excluded_regions**\ (\ value\: :ref:`Array`\[:ref:`RID`\]\ ) +- :ref:`Array`\[:ref:`RID`\] **get_excluded_regions**\ (\ ) + +The list of region :ref:`RID`\ s that will be excluded from the path query. Use :ref:`NavigationRegion3D.get_rid()` to get the :ref:`RID` associated with a :ref:`NavigationRegion3D` node. + +\ **Note:** The returned array is copied and any changes to it will not update the original property value. To update the value you need to modify the returned array, and then set it to the property again. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationPathQueryParameters3D_property_included_regions: + +.. rst-class:: classref-property + +:ref:`Array`\[:ref:`RID`\] **included_regions** = ``[]`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_included_regions**\ (\ value\: :ref:`Array`\[:ref:`RID`\]\ ) +- :ref:`Array`\[:ref:`RID`\] **get_included_regions**\ (\ ) + +The list of region :ref:`RID`\ s that will be included by the path query. Use :ref:`NavigationRegion3D.get_rid()` to get the :ref:`RID` associated with a :ref:`NavigationRegion3D` node. If left empty all regions are included. If a region ends up being both included and excluded at the same time it will be excluded. + +\ **Note:** The returned array is copied and any changes to it will not update the original property value. To update the value you need to modify the returned array, and then set it to the property again. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationPathQueryParameters3D_property_map: .. rst-class:: classref-property diff --git a/classes/class_navigationserver2d.rst b/classes/class_navigationserver2d.rst index ce8ce19f6..f69f24a5f 100644 --- a/classes/class_navigationserver2d.rst +++ b/classes/class_navigationserver2d.rst @@ -131,6 +131,8 @@ Methods +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`RID`\] | :ref:`get_maps`\ (\ ) |const| | +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_process_info`\ (\ process_info\: :ref:`ProcessInfo`\ ) |const| | + +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_baking_navigation_polygon`\ (\ navigation_polygon\: :ref:`NavigationPolygon`\ ) |const| | +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID` | :ref:`link_create`\ (\ ) | @@ -305,6 +307,8 @@ Methods +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`region_set_use_edge_connections`\ (\ region\: :ref:`RID`, enabled\: :ref:`bool`\ ) | +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_active`\ (\ active\: :ref:`bool`\ ) | + +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_debug_enabled`\ (\ enabled\: :ref:`bool`\ ) | +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector2Array` | :ref:`simplify_path`\ (\ path\: :ref:`PackedVector2Array`, epsilon\: :ref:`float`\ ) | @@ -323,6 +327,18 @@ Methods Signals ------- +.. _class_NavigationServer2D_signal_avoidance_debug_changed: + +.. rst-class:: classref-signal + +**avoidance_debug_changed**\ (\ ) :ref:`🔗` + +Emitted when avoidance debug settings are changed. Only available in debug builds. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer2D_signal_map_changed: .. rst-class:: classref-signal @@ -349,6 +365,101 @@ Emitted when navigation debug settings are changed. Only available in debug buil .. rst-class:: classref-descriptions-group +Enumerations +------------ + +.. _enum_NavigationServer2D_ProcessInfo: + +.. rst-class:: classref-enumeration + +enum **ProcessInfo**: :ref:`🔗` + +.. _class_NavigationServer2D_constant_INFO_ACTIVE_MAPS: + +.. rst-class:: classref-enumeration-constant + +:ref:`ProcessInfo` **INFO_ACTIVE_MAPS** = ``0`` + +Constant to get the number of active navigation maps. + +.. _class_NavigationServer2D_constant_INFO_REGION_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`ProcessInfo` **INFO_REGION_COUNT** = ``1`` + +Constant to get the number of active navigation regions. + +.. _class_NavigationServer2D_constant_INFO_AGENT_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`ProcessInfo` **INFO_AGENT_COUNT** = ``2`` + +Constant to get the number of active navigation agents processing avoidance. + +.. _class_NavigationServer2D_constant_INFO_LINK_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`ProcessInfo` **INFO_LINK_COUNT** = ``3`` + +Constant to get the number of active navigation links. + +.. _class_NavigationServer2D_constant_INFO_POLYGON_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`ProcessInfo` **INFO_POLYGON_COUNT** = ``4`` + +Constant to get the number of navigation mesh polygons. + +.. _class_NavigationServer2D_constant_INFO_EDGE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`ProcessInfo` **INFO_EDGE_COUNT** = ``5`` + +Constant to get the number of navigation mesh polygon edges. + +.. _class_NavigationServer2D_constant_INFO_EDGE_MERGE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`ProcessInfo` **INFO_EDGE_MERGE_COUNT** = ``6`` + +Constant to get the number of navigation mesh polygon edges that were merged due to edge key overlap. + +.. _class_NavigationServer2D_constant_INFO_EDGE_CONNECTION_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`ProcessInfo` **INFO_EDGE_CONNECTION_COUNT** = ``7`` + +Constant to get the number of navigation mesh polygon edges that are considered connected by edge proximity. + +.. _class_NavigationServer2D_constant_INFO_EDGE_FREE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`ProcessInfo` **INFO_EDGE_FREE_COUNT** = ``8`` + +Constant to get the number of navigation mesh polygon edges that could not be merged but may be still connected by edge proximity or with links. + +.. _class_NavigationServer2D_constant_INFO_OBSTACLE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`ProcessInfo` **INFO_OBSTACLE_COUNT** = ``9`` + +Constant to get the number of active navigation obstacles. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + Method Descriptions ------------------- @@ -812,6 +923,18 @@ Returns all created navigation map :ref:`RID`\ s on the NavigationSer ---- +.. _class_NavigationServer2D_method_get_process_info: + +.. rst-class:: classref-method + +:ref:`int` **get_process_info**\ (\ process_info\: :ref:`ProcessInfo`\ ) |const| :ref:`🔗` + +Returns information about the current state of the NavigationServer. See :ref:`ProcessInfo` for a list of available states. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer2D_method_is_baking_navigation_polygon: .. rst-class:: classref-method @@ -1070,6 +1193,8 @@ Create a new map. |void| **map_force_update**\ (\ map\: :ref:`RID`\ ) :ref:`🔗` +**Deprecated:** This method is no longer supported, as it is incompatible with asynchronous updates. It can only be used in a single-threaded context, at your own risk. + This function immediately forces synchronization of the specified navigation ``map`` :ref:`RID`. By default navigation maps are only synchronized at the end of each physics frame. This function can be used to immediately (re)calculate all the navigation meshes and region connections of the navigation map. This makes it possible to query a navigation path for a changed map immediately and in the same frame (multiple times if needed). Due to technical restrictions the current NavigationServer command queue will be flushed. This means all already queued update commands for this physics frame will be executed, even those intended for other maps, regions and agents not part of the specified map. The expensive computation of the navigation meshes and region connections of a map will only be done for the specified map. Other maps will receive the normal synchronization at the end of the physics frame. Should the specified map receive changes after the forced update it will update again as well when the other maps receive their update. @@ -1880,6 +2005,18 @@ If ``enabled`` is ``true``, the navigation ``region`` will use edge connections ---- +.. _class_NavigationServer2D_method_set_active: + +.. rst-class:: classref-method + +|void| **set_active**\ (\ active\: :ref:`bool`\ ) :ref:`🔗` + +Control activation of this server. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer2D_method_set_debug_enabled: .. rst-class:: classref-method diff --git a/classes/class_navigationserver3d.rst b/classes/class_navigationserver3d.rst index 5b4231125..6bc2da800 100644 --- a/classes/class_navigationserver3d.rst +++ b/classes/class_navigationserver3d.rst @@ -1283,6 +1283,8 @@ Create a new map. |void| **map_force_update**\ (\ map\: :ref:`RID`\ ) :ref:`🔗` +**Deprecated:** This method is no longer supported, as it is incompatible with asynchronous updates. It can only be used in a single-threaded context, at your own risk. + This function immediately forces synchronization of the specified navigation ``map`` :ref:`RID`. By default navigation maps are only synchronized at the end of each physics frame. This function can be used to immediately (re)calculate all the navigation meshes and region connections of the navigation map. This makes it possible to query a navigation path for a changed map immediately and in the same frame (multiple times if needed). Due to technical restrictions the current NavigationServer command queue will be flushed. This means all already queued update commands for this physics frame will be executed, even those intended for other maps, regions and agents not part of the specified map. The expensive computation of the navigation meshes and region connections of a map will only be done for the specified map. Other maps will receive the normal synchronization at the end of the physics frame. Should the specified map receive changes after the forced update it will update again as well when the other maps receive their update. diff --git a/classes/class_node.rst b/classes/class_node.rst index 9c045ec43..4877ae410 100644 --- a/classes/class_node.rst +++ b/classes/class_node.rst @@ -62,35 +62,49 @@ Properties .. table:: :widths: auto - +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`AutoTranslateMode` | :ref:`auto_translate_mode` | ``0`` | - +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`String` | :ref:`editor_description` | ``""`` | - +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`MultiplayerAPI` | :ref:`multiplayer` | | - +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`StringName` | :ref:`name` | | - +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`Node` | :ref:`owner` | | - +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :ref:`PhysicsInterpolationMode` | :ref:`physics_interpolation_mode` | ``0`` | - +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ - | :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`` | - +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------+-----------+ + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`Array`\[:ref:`NodePath`\] | :ref:`accessibility_controls_nodes` | ``[]`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`Array`\[:ref:`NodePath`\] | :ref:`accessibility_described_by_nodes` | ``[]`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`String` | :ref:`accessibility_description` | ``""`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`Array`\[:ref:`NodePath`\] | :ref:`accessibility_flow_to_nodes` | ``[]`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`Array`\[:ref:`NodePath`\] | :ref:`accessibility_labeled_by_nodes` | ``[]`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`AccessibilityLiveMode` | :ref:`accessibility_live` | ``0`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`String` | :ref:`accessibility_name` | ``""`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`AutoTranslateMode` | :ref:`auto_translate_mode` | ``0`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`String` | :ref:`editor_description` | ``""`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`MultiplayerAPI` | :ref:`multiplayer` | | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`StringName` | :ref:`name` | | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`Node` | :ref:`owner` | | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :ref:`PhysicsInterpolationMode` | :ref:`physics_interpolation_mode` | ``0`` | + +-----------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------+-----------+ + | :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 @@ -105,8 +119,14 @@ Methods +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_exit_tree`\ (\ ) |virtual| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`_get_accessibility_configuration_warnings`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_get_accessibility_container_name`\ (\ node\: :ref:`Node`\ ) |virtual| |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedStringArray` | :ref:`_get_configuration_warnings`\ (\ ) |virtual| |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_get_focused_accessibility_element`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_input`\ (\ event\: :ref:`InputEvent`\ ) |virtual| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_physics_process`\ (\ delta\: :ref:`float`\ ) |virtual| | @@ -147,6 +167,8 @@ Methods +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Node` | :ref:`find_parent`\ (\ pattern\: :ref:`String`\ ) |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_accessibility_element`\ (\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Node` | :ref:`get_child`\ (\ idx\: :ref:`int`, include_internal\: :ref:`bool` = false\ ) |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_child_count`\ (\ include_internal\: :ref:`bool` = false\ ) |const| | @@ -249,6 +271,8 @@ Methods +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`propagate_notification`\ (\ what\: :ref:`int`\ ) | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`queue_accessibility_update`\ (\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`queue_free`\ (\ ) | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`remove_child`\ (\ node\: :ref:`Node`\ ) | @@ -624,7 +648,7 @@ enum **DuplicateFlags**: :ref:`🔗` :ref:`DuplicateFlags` **DUPLICATE_SIGNALS** = ``1`` -Duplicate the node's signal connections. +Duplicate the node's signal connections that are connected with the :ref:`Object.CONNECT_PERSIST` flag. .. _class_Node_constant_DUPLICATE_GROUPS: @@ -1023,6 +1047,14 @@ Notification received when the mouse cursor enters the :ref:`Viewport`'s visible area, that is not occluded behind other :ref:`Control`\ s or :ref:`Window`\ s, provided its :ref:`Viewport.gui_disable_input` is ``false`` and regardless if it's currently focused or not. +.. _class_Node_constant_NOTIFICATION_WM_POSITION_CHANGED: + +.. rst-class:: classref-constant + +**NOTIFICATION_WM_POSITION_CHANGED** = ``1012`` :ref:`🔗` + +Notification received when the window is moved. + .. _class_Node_constant_NOTIFICATION_OS_MEMORY_WARNING: .. rst-class:: classref-constant @@ -1131,6 +1163,22 @@ Implemented on desktop and mobile platforms. Notification received when the :ref:`TextServer` is changed. +.. _class_Node_constant_NOTIFICATION_ACCESSIBILITY_UPDATE: + +.. rst-class:: classref-constant + +**NOTIFICATION_ACCESSIBILITY_UPDATE** = ``3000`` :ref:`🔗` + +Notification received when an accessibility information update is required. + +.. _class_Node_constant_NOTIFICATION_ACCESSIBILITY_INVALIDATE: + +.. rst-class:: classref-constant + +**NOTIFICATION_ACCESSIBILITY_INVALIDATE** = ``3001`` :ref:`🔗` + +Notification received when accessibility elements are invalidated. All node accessibility elements are automatically deleted after receiving this message, therefore all existing references to such elements should be discarded. + .. rst-class:: classref-section-separator ---- @@ -1140,6 +1188,125 @@ Notification received when the :ref:`TextServer` is changed. Property Descriptions --------------------- +.. _class_Node_property_accessibility_controls_nodes: + +.. rst-class:: classref-property + +:ref:`Array`\[:ref:`NodePath`\] **accessibility_controls_nodes** = ``[]`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_accessibility_controls_nodes**\ (\ value\: :ref:`Array`\[:ref:`NodePath`\]\ ) +- :ref:`Array`\[:ref:`NodePath`\] **get_accessibility_controls_nodes**\ (\ ) + +The list of nodes which are controlled by this node. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Node_property_accessibility_described_by_nodes: + +.. rst-class:: classref-property + +:ref:`Array`\[:ref:`NodePath`\] **accessibility_described_by_nodes** = ``[]`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_accessibility_described_by_nodes**\ (\ value\: :ref:`Array`\[:ref:`NodePath`\]\ ) +- :ref:`Array`\[:ref:`NodePath`\] **get_accessibility_described_by_nodes**\ (\ ) + +The list of nodes which are describing this node. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Node_property_accessibility_description: + +.. rst-class:: classref-property + +:ref:`String` **accessibility_description** = ``""`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_accessibility_description**\ (\ value\: :ref:`String`\ ) +- :ref:`String` **get_accessibility_description**\ (\ ) + +The human-readable node description that is reported to assistive apps. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Node_property_accessibility_flow_to_nodes: + +.. rst-class:: classref-property + +:ref:`Array`\[:ref:`NodePath`\] **accessibility_flow_to_nodes** = ``[]`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_accessibility_flow_to_nodes**\ (\ value\: :ref:`Array`\[:ref:`NodePath`\]\ ) +- :ref:`Array`\[:ref:`NodePath`\] **get_accessibility_flow_to_nodes**\ (\ ) + +The list of nodes which this node flows into. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Node_property_accessibility_labeled_by_nodes: + +.. rst-class:: classref-property + +:ref:`Array`\[:ref:`NodePath`\] **accessibility_labeled_by_nodes** = ``[]`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_accessibility_labeled_by_nodes**\ (\ value\: :ref:`Array`\[:ref:`NodePath`\]\ ) +- :ref:`Array`\[:ref:`NodePath`\] **get_accessibility_labeled_by_nodes**\ (\ ) + +The list of nodes which label this node. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Node_property_accessibility_live: + +.. rst-class:: classref-property + +:ref:`AccessibilityLiveMode` **accessibility_live** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_accessibility_live**\ (\ value\: :ref:`AccessibilityLiveMode`\ ) +- :ref:`AccessibilityLiveMode` **get_accessibility_live**\ (\ ) + +Live region update mode, a live region is **Node** that is updated as a result of an external event when user focus may be elsewhere. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Node_property_accessibility_name: + +.. rst-class:: classref-property + +:ref:`String` **accessibility_name** = ``""`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_accessibility_name**\ (\ value\: :ref:`String`\ ) +- :ref:`String` **get_accessibility_name**\ (\ ) + +The human-readable node name that is reported to assistive apps. + +.. rst-class:: classref-item-separator + +---- + .. _class_Node_property_auto_translate_mode: .. rst-class:: classref-property @@ -1428,6 +1595,32 @@ Corresponds to the :ref:`NOTIFICATION_EXIT_TREE` **_get_accessibility_configuration_warnings**\ (\ ) |virtual| |const| :ref:`🔗` + +The elements in the array returned from this method are displayed as warnings in the Scene dock if the script that overrides it is a ``tool`` script, and accessibility warnings are enabled in the editor settings. + +Returning an empty array produces no warnings. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Node_private_method__get_accessibility_container_name: + +.. rst-class:: classref-method + +:ref:`String` **_get_accessibility_container_name**\ (\ node\: :ref:`Node`\ ) |virtual| |const| :ref:`🔗` + +Return a human-readable description of the position of ``node`` child in the custom container, added to the node name. + +.. rst-class:: classref-item-separator + +---- + .. _class_Node_private_method__get_configuration_warnings: .. rst-class:: classref-method @@ -1457,6 +1650,18 @@ Call :ref:`update_configuration_warnings()` **_get_focused_accessibility_element**\ (\ ) |virtual| |const| :ref:`🔗` + +Called during accessibility information updates to determine the currently focused sub-element, should return a sub-element RID or the value returned by :ref:`get_accessibility_element()`. + +.. rst-class:: classref-item-separator + +---- + .. _class_Node_private_method__input: .. rst-class:: classref-method @@ -1611,7 +1816,7 @@ Adds a child ``node``. Nodes can have any number of children, but every child mu If ``force_readable_name`` is ``true``, improves the readability of the added ``node``. If not named, the ``node`` is renamed to its type, and if it shares :ref:`name` with a sibling, a number is suffixed more appropriately. This operation is very slow. As such, it is recommended leaving this to ``false``, which assigns a dummy name featuring ``@`` in both situations. -If ``internal`` is different than :ref:`INTERNAL_MODE_DISABLED`, the child will be added as internal node. These nodes are ignored by methods like :ref:`get_children()`, unless their parameter ``include_internal`` is ``true``. The intended usage is to hide the internal nodes from the user, so the user won't accidentally delete or modify them. Used by some GUI nodes, e.g. :ref:`ColorPicker`. See :ref:`InternalMode` for available modes. +If ``internal`` is different than :ref:`INTERNAL_MODE_DISABLED`, the child will be added as internal node. These nodes are ignored by methods like :ref:`get_children()`, unless their parameter ``include_internal`` is ``true``. It also prevents these nodes being duplicated with their parent. The intended usage is to hide the internal nodes from the user, so the user won't accidentally delete or modify them. Used by some GUI nodes, e.g. :ref:`ColorPicker`. See :ref:`InternalMode` for available modes. \ **Note:** If ``node`` already has a parent, this method will fail. Use :ref:`remove_child()` first to remove ``node`` from its current parent. For example: @@ -1805,7 +2010,7 @@ The Tween will start automatically on the next process frame or physics frame (d :ref:`Node` **duplicate**\ (\ flags\: :ref:`int` = 15\ ) |const| :ref:`🔗` -Duplicates the node, returning a new node with all of its properties, signals, groups, and children copied from the original. The behavior can be tweaked through the ``flags`` (see :ref:`DuplicateFlags`). +Duplicates the node, returning a new node with all of its properties, signals, groups, and children copied from the original. The behavior can be tweaked through the ``flags`` (see :ref:`DuplicateFlags`). Internal nodes are not duplicated. \ **Note:** For nodes with a :ref:`Script` attached, if :ref:`Object._init()` has been defined with required parameters, the duplicated node will not have a :ref:`Script`. @@ -1869,6 +2074,20 @@ Finds the first ancestor of this node whose :ref:`name ---- +.. _class_Node_method_get_accessibility_element: + +.. rst-class:: classref-method + +:ref:`RID` **get_accessibility_element**\ (\ ) |const| :ref:`🔗` + +Returns main accessibility element RID. + +\ **Note:** This method should be called only during accessibility information updates (:ref:`NOTIFICATION_ACCESSIBILITY_UPDATE`). + +.. rst-class:: classref-item-separator + +---- + .. _class_Node_method_get_child: .. rst-class:: classref-method @@ -2679,6 +2898,18 @@ Calls :ref:`Object.notification()` with ``what ---- +.. _class_Node_method_queue_accessibility_update: + +.. rst-class:: classref-method + +|void| **queue_accessibility_update**\ (\ ) :ref:`🔗` + +Queues an accessibility information update for this node. + +.. rst-class:: classref-item-separator + +---- + .. _class_Node_method_queue_free: .. rst-class:: classref-method diff --git a/classes/class_node3d.rst b/classes/class_node3d.rst index 8ba021f5f..1735cf425 100644 --- a/classes/class_node3d.rst +++ b/classes/class_node3d.rst @@ -1,5 +1,8 @@ :github_url: hide +.. meta:: + :keywords: spatial + .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py. @@ -14,20 +17,20 @@ Node3D **Inherited By:** :ref:`AudioListener3D`, :ref:`AudioStreamPlayer3D`, :ref:`BoneAttachment3D`, :ref:`Camera3D`, :ref:`CollisionObject3D`, :ref:`CollisionPolygon3D`, :ref:`CollisionShape3D`, :ref:`GridMap`, :ref:`ImporterMeshInstance3D`, :ref:`Joint3D`, :ref:`LightmapProbe`, :ref:`Marker3D`, :ref:`NavigationLink3D`, :ref:`NavigationObstacle3D`, :ref:`NavigationRegion3D`, :ref:`OpenXRCompositionLayer`, :ref:`OpenXRHand`, :ref:`Path3D`, :ref:`PathFollow3D`, :ref:`RayCast3D`, :ref:`RemoteTransform3D`, :ref:`ShapeCast3D`, :ref:`Skeleton3D`, :ref:`SkeletonModifier3D`, :ref:`SpringArm3D`, :ref:`SpringBoneCollision3D`, :ref:`VehicleWheel3D`, :ref:`VisualInstance3D`, :ref:`XRFaceModifier3D`, :ref:`XRNode3D`, :ref:`XROrigin3D` -Most basic 3D game object, parent of all 3D-related nodes. +Base object in 3D space, inherited by all 3D nodes. .. rst-class:: classref-introduction-group Description ----------- -Most basic 3D game object, with a :ref:`Transform3D` and visibility settings. All other 3D game objects inherit from **Node3D**. Use **Node3D** as a parent node to move, scale, rotate and show/hide children in a 3D project. +The **Node3D** node is the base representation of a node in 3D space. All other 3D nodes inherit from this class. -Affine operations (rotate, scale, translate) happen in parent's local coordinate system, unless the **Node3D** object is set as top-level. Affine operations in this coordinate system correspond to direct affine operations on the **Node3D**'s transform. The word local below refers to this coordinate system. The coordinate system that is attached to the **Node3D** object itself is referred to as object-local coordinate system. +Affine operations (translation, rotation, scale) are calculated in the coordinate system relative to the parent, unless the **Node3D**'s :ref:`top_level` is ``true``. In this coordinate system, affine operations correspond to direct affine operations on the **Node3D**'s :ref:`transform`. The term *parent space* refers to this coordinate system. The coordinate system that is attached to the **Node3D** itself is referred to as object-local coordinate system, or *local space*. -\ **Note:** Unless otherwise specified, all methods that have angle parameters must have angles specified as *radians*. To convert degrees to radians, use :ref:`@GlobalScope.deg_to_rad()`. +\ **Note:** Unless otherwise specified, all methods that need angle parameters must receive angles in *radians*. To convert degrees to radians, use :ref:`@GlobalScope.deg_to_rad()`. -\ **Note:** Be aware that "Spatial" nodes are now called "Node3D" starting with Godot 4. Any Godot 3.x references to "Spatial" nodes refer to "Node3D" in Godot 4. +\ **Note:** In Godot 3 and older, **Node3D** was named *Spatial*. .. rst-class:: classref-introduction-group @@ -181,7 +184,9 @@ Signals **visibility_changed**\ (\ ) :ref:`🔗` -Emitted when node visibility changes. +Emitted when this node's visibility changes (see :ref:`visible` and :ref:`is_visible_in_tree()`). + +This signal is emitted *after* the related :ref:`NOTIFICATION_VISIBILITY_CHANGED` notification. .. rst-class:: classref-section-separator @@ -204,7 +209,7 @@ enum **RotationEditMode**: :ref:`🔗` :ref:`RotationEditMode` **ROTATION_EDIT_MODE_EULER** = ``0`` -The rotation is edited using :ref:`Vector3` Euler angles. +The rotation is edited using a :ref:`Vector3` in `Euler angles `__. .. _class_Node3D_constant_ROTATION_EDIT_MODE_QUATERNION: @@ -220,7 +225,7 @@ The rotation is edited using a :ref:`Quaternion`. :ref:`RotationEditMode` **ROTATION_EDIT_MODE_BASIS** = ``2`` -The rotation is edited using a :ref:`Basis`. In this mode, :ref:`scale` can't be edited separately. +The rotation is edited using a :ref:`Basis`. In this mode, the raw :ref:`basis`'s axes can be freely modified, but the :ref:`scale` property is not available. .. rst-class:: classref-section-separator @@ -237,9 +242,11 @@ Constants **NOTIFICATION_TRANSFORM_CHANGED** = ``2000`` :ref:`🔗` -**Node3D** nodes receive this notification when their global transform changes. This means that either the current or a parent node changed its transform. +Notification received when this node's :ref:`global_transform` changes, if :ref:`is_transform_notification_enabled()` is ``true``. See also :ref:`set_notify_transform()`. -In order for :ref:`NOTIFICATION_TRANSFORM_CHANGED` to work, users first need to ask for it, with :ref:`set_notify_transform()`. The notification is also sent if the node is in the editor context and it has at least one valid gizmo. +\ **Note:** Most 3D nodes such as :ref:`VisualInstance3D` or :ref:`CollisionObject3D` automatically enable this to function correctly. + +\ **Note:** In the editor, nodes will propagate this notification to their children if a gizmo is attached (see :ref:`add_gizmo()`). .. _class_Node3D_constant_NOTIFICATION_ENTER_WORLD: @@ -247,7 +254,7 @@ In order for :ref:`NOTIFICATION_TRANSFORM_CHANGED` -**Node3D** nodes receive this notification when they are registered to new :ref:`World3D` resource. +Notification received when this node is registered to a new :ref:`World3D` (see :ref:`get_world_3d()`). .. _class_Node3D_constant_NOTIFICATION_EXIT_WORLD: @@ -255,7 +262,7 @@ In order for :ref:`NOTIFICATION_TRANSFORM_CHANGED` -**Node3D** nodes receive this notification when they are unregistered from current :ref:`World3D` resource. +Notification received when this node is unregistered from the current :ref:`World3D` (see :ref:`get_world_3d()`). .. _class_Node3D_constant_NOTIFICATION_VISIBILITY_CHANGED: @@ -263,7 +270,9 @@ In order for :ref:`NOTIFICATION_TRANSFORM_CHANGED` -**Node3D** nodes receive this notification when their visibility changes. +Notification received when this node's visibility changes (see :ref:`visible` and :ref:`is_visible_in_tree()`). + +This notification is received *before* the related :ref:`visibility_changed` signal. .. _class_Node3D_constant_NOTIFICATION_LOCAL_TRANSFORM_CHANGED: @@ -271,9 +280,9 @@ In order for :ref:`NOTIFICATION_TRANSFORM_CHANGED` -**Node3D** nodes receive this notification when their local transform changes. This is not received when the transform of a parent node is changed. +Notification received when this node's :ref:`transform` changes, if :ref:`is_local_transform_notification_enabled()` is ``true``. This is not received when a parent **Node3D**'s :ref:`transform` changes. See also :ref:`set_notify_local_transform()`. -In order for :ref:`NOTIFICATION_LOCAL_TRANSFORM_CHANGED` to work, users first need to ask for it, with :ref:`set_notify_local_transform()`. +\ **Note:** Some 3D nodes such as :ref:`CSGShape3D` or :ref:`CollisionShape3D` automatically enable this to function correctly. .. rst-class:: classref-section-separator @@ -295,7 +304,7 @@ Property Descriptions - |void| **set_basis**\ (\ value\: :ref:`Basis`\ ) - :ref:`Basis` **get_basis**\ (\ ) -Basis of the :ref:`transform` property. Represents the rotation, scale, and shear of this node. +Basis of the :ref:`transform` property. Represents the rotation, scale, and shear of this node in parent space (relative to the parent node). .. rst-class:: classref-item-separator @@ -312,7 +321,9 @@ Basis of the :ref:`transform` property. Represe - |void| **set_global_basis**\ (\ value\: :ref:`Basis`\ ) - :ref:`Basis` **get_global_basis**\ (\ ) -Global basis of this node. This is equivalent to ``global_transform.basis``. +Basis of the :ref:`global_transform` property. Represents the rotation, scale, and shear of this node in global space (relative to the world). + +\ **Note:** If the node is not inside the tree, getting this property fails and returns :ref:`Basis.IDENTITY`. .. rst-class:: classref-item-separator @@ -329,7 +340,9 @@ Global basis of this node. This is equivalent to ``global_transform.basis``. - |void| **set_global_position**\ (\ value\: :ref:`Vector3`\ ) - :ref:`Vector3` **get_global_position**\ (\ ) -Global position of this node. This is equivalent to ``global_transform.origin``. +Global position (translation) of this node in global space (relative to the world). This is equivalent to the :ref:`global_transform`'s :ref:`Transform3D.origin`. + +\ **Note:** If the node is not inside the tree, getting this property fails and returns :ref:`Vector3.ZERO`. .. rst-class:: classref-item-separator @@ -346,9 +359,17 @@ Global position of this node. This is equivalent to ``global_transform.origin``. - |void| **set_global_rotation**\ (\ value\: :ref:`Vector3`\ ) - :ref:`Vector3` **get_global_rotation**\ (\ ) -Rotation part of the global transformation in radians, specified in terms of YXZ-Euler angles in the format (X angle, Y angle, Z angle). +Global rotation of this node as `Euler angles `__, in radians and in global space (relative to the world). This value is obtained from :ref:`global_basis`'s rotation. -\ **Note:** In the mathematical sense, rotation is a matrix and not a vector. The three Euler angles, which are the three independent parameters of the Euler-angle parametrization of the rotation matrix, are stored in a :ref:`Vector3` data structure not because the rotation is a vector, but only because :ref:`Vector3` exists as a convenient data-structure to store 3 floating-point numbers. Therefore, applying affine operations on the rotation "vector" is not meaningful. +- The :ref:`Vector3.x` is the angle around the global X axis (pitch); + +- The :ref:`Vector3.y` is the angle around the global Y axis (yaw); + +- The :ref:`Vector3.z` is the angle around the global Z axis (roll). + +\ **Note:** Unlike :ref:`rotation`, this property always follows the YXZ convention (:ref:`@GlobalScope.EULER_ORDER_YXZ`). + +\ **Note:** If the node is not inside the tree, getting this property fails and returns :ref:`Vector3.ZERO`. .. rst-class:: classref-item-separator @@ -365,7 +386,9 @@ Rotation part of the global transformation in radians, specified in terms of YXZ - |void| **set_global_rotation_degrees**\ (\ value\: :ref:`Vector3`\ ) - :ref:`Vector3` **get_global_rotation_degrees**\ (\ ) -Helper property to access :ref:`global_rotation` in degrees instead of radians. +The :ref:`global_rotation` of this node, in degrees instead of radians. + +\ **Note:** If the node is not inside the tree, getting this property fails and returns :ref:`Vector3.ZERO`. .. rst-class:: classref-item-separator @@ -382,7 +405,9 @@ Helper property to access :ref:`global_rotation`\ ) - :ref:`Transform3D` **get_global_transform**\ (\ ) -World3D space (global) :ref:`Transform3D` of this node. +The transformation of this node, in global space (relative to the world). Contains and represents this node's :ref:`global_position`, :ref:`global_rotation`, and global scale. + +\ **Note:** If the node is not inside the tree, getting this property fails and returns :ref:`Transform3D.IDENTITY`. .. rst-class:: classref-item-separator @@ -399,7 +424,7 @@ World3D space (global) :ref:`Transform3D` of this node. - |void| **set_position**\ (\ value\: :ref:`Vector3`\ ) - :ref:`Vector3` **get_position**\ (\ ) -Local position or translation of this node relative to the parent. This is equivalent to ``transform.origin``. +Position (translation) of this node in parent space (relative to the parent node). This is equivalent to the :ref:`transform`'s :ref:`Transform3D.origin`. .. rst-class:: classref-item-separator @@ -416,7 +441,9 @@ Local position or translation of this node relative to the parent. This is equiv - |void| **set_quaternion**\ (\ value\: :ref:`Quaternion`\ ) - :ref:`Quaternion` **get_quaternion**\ (\ ) -Access to the node rotation as a :ref:`Quaternion`. This property is ideal for tweening complex rotations. +Rotation of this node represented as a :ref:`Quaternion` in parent space (relative to the parent node). This value is obtained from :ref:`basis`'s rotation. + +\ **Note:** Quaternions are much more suitable for 3D math but are less intuitive. Setting this property can be useful for interpolation (see :ref:`Quaternion.slerp()`). .. rst-class:: classref-item-separator @@ -433,11 +460,17 @@ Access to the node rotation as a :ref:`Quaternion`. This prope - |void| **set_rotation**\ (\ value\: :ref:`Vector3`\ ) - :ref:`Vector3` **get_rotation**\ (\ ) -Rotation part of the local transformation in radians, specified in terms of Euler angles. The angles construct a rotation in the order specified by the :ref:`rotation_order` property. +Rotation of this node as `Euler angles `__, in radians and in parent space (relative to the parent node). This value is obtained from :ref:`basis`'s rotation. -\ **Note:** In the mathematical sense, rotation is a matrix and not a vector. The three Euler angles, which are the three independent parameters of the Euler-angle parametrization of the rotation matrix, are stored in a :ref:`Vector3` data structure not because the rotation is a vector, but only because :ref:`Vector3` exists as a convenient data-structure to store 3 floating-point numbers. Therefore, applying affine operations on the rotation "vector" is not meaningful. +- The :ref:`Vector3.x` is the angle around the local X axis (pitch); -\ **Note:** This property is edited in the inspector in degrees. If you want to use degrees in a script, use :ref:`rotation_degrees`. +- The :ref:`Vector3.y` is the angle around the local Y axis (yaw); + +- The :ref:`Vector3.z` is the angle around the local Z axis (roll). + +The order of each consecutive rotation can be changed with :ref:`rotation_order` (see :ref:`EulerOrder` constants). By default, the YXZ convention is used (:ref:`@GlobalScope.EULER_ORDER_YXZ`). + +\ **Note:** This property is edited in degrees in the inspector. If you want to use degrees in a script, use :ref:`rotation_degrees`. .. rst-class:: classref-item-separator @@ -454,7 +487,9 @@ Rotation part of the local transformation in radians, specified in terms of Eule - |void| **set_rotation_degrees**\ (\ value\: :ref:`Vector3`\ ) - :ref:`Vector3` **get_rotation_degrees**\ (\ ) -Helper property to access :ref:`rotation` in degrees instead of radians. +The :ref:`rotation` of this node, in degrees instead of radians. + +\ **Note:** This is **not** the property available in the Inspector dock. .. rst-class:: classref-item-separator @@ -471,7 +506,7 @@ Helper property to access :ref:`rotation` in deg - |void| **set_rotation_edit_mode**\ (\ value\: :ref:`RotationEditMode`\ ) - :ref:`RotationEditMode` **get_rotation_edit_mode**\ (\ ) -Specify how rotation (and scale) will be presented in the editor. +How this node's rotation and scale are displayed in the Inspector dock. .. rst-class:: classref-item-separator @@ -488,7 +523,7 @@ Specify how rotation (and scale) will be presented in the editor. - |void| **set_rotation_order**\ (\ value\: :ref:`EulerOrder`\ ) - :ref:`EulerOrder` **get_rotation_order**\ (\ ) -Specify the axis rotation order of the :ref:`rotation` property. The final orientation is constructed by rotating the Euler angles in the order specified by this property. +The axis rotation order of the :ref:`rotation` property. The final orientation is calculated by rotating around the local X, Y, and Z axis in this order. .. rst-class:: classref-item-separator @@ -505,11 +540,11 @@ Specify the axis rotation order of the :ref:`rotation`\ ) - :ref:`Vector3` **get_scale**\ (\ ) -Scale part of the local transformation. +Scale of this node in local space (relative to this node). This value is obtained from :ref:`basis`'s scale. -\ **Note:** Mixed negative scales in 3D are not decomposable from the transformation matrix. Due to the way scale is represented with transformation matrices in Godot, the scale values will either be all positive or all negative. +\ **Note:** The behavior of some 3D node types is not affected by this property. These include :ref:`Light3D`, :ref:`Camera3D`, :ref:`AudioStreamPlayer3D`, and more. -\ **Note:** Not all nodes are visually scaled by the :ref:`scale` property. For example, :ref:`Light3D`\ s are not visually affected by :ref:`scale`. +\ **Warning:** The scale's components must either be all positive or all negative, and **not** exactly ``0.0``. Otherwise, it won't be possible to obtain the scale from the :ref:`basis`. This may cause the intended scale to be lost when reloaded from disk, and potentially other unstable behavior. .. rst-class:: classref-item-separator @@ -526,7 +561,7 @@ Scale part of the local transformation. - |void| **set_as_top_level**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_set_as_top_level**\ (\ ) -If ``true``, the node will not inherit its transformations from its parent. Node transformations are only in global space. +If ``true``, the node does not inherit its transformations from its parent. As such, node transformations will only be in global space, which also means that :ref:`global_transform` and :ref:`transform` will be identical. .. rst-class:: classref-item-separator @@ -543,7 +578,7 @@ If ``true``, the node will not inherit its transformations from its parent. Node - |void| **set_transform**\ (\ value\: :ref:`Transform3D`\ ) - :ref:`Transform3D` **get_transform**\ (\ ) -Local space :ref:`Transform3D` of this node, with respect to the parent node. +The local transformation of this node, in parent space (relative to the parent node). Contains and represents this node's :ref:`position`, :ref:`rotation`, and :ref:`scale`. .. rst-class:: classref-item-separator @@ -560,7 +595,9 @@ Local space :ref:`Transform3D` of this node, with respect to - |void| **set_visibility_parent**\ (\ value\: :ref:`NodePath`\ ) - :ref:`NodePath` **get_visibility_parent**\ (\ ) -Defines the visibility range parent for this node and its subtree. The visibility parent must be a GeometryInstance3D. Any visual instance will only be visible if the visibility parent (and all of its visibility ancestors) is hidden by being closer to the camera than its own :ref:`GeometryInstance3D.visibility_range_begin`. Nodes hidden via the :ref:`visible` property are essentially removed from the visibility dependency tree, so dependent instances will not take the hidden node or its ancestors into account. +Path to the visibility range parent for this node and its descendants. The visibility parent must be a :ref:`GeometryInstance3D`. + +Any visual instance will only be visible if the visibility parent (and all of its visibility ancestors) is hidden by being closer to the camera than its own :ref:`GeometryInstance3D.visibility_range_begin`. Nodes hidden via the :ref:`visible` property are essentially removed from the visibility dependency tree, so dependent instances will not take the hidden node or its descendants into account. .. rst-class:: classref-item-separator @@ -577,7 +614,7 @@ Defines the visibility range parent for this node and its subtree. The visibilit - |void| **set_visible**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_visible**\ (\ ) -If ``true``, this node is drawn. The node is only visible if all of its ancestors are visible as well (in other words, :ref:`is_visible_in_tree()` must return ``true``). +If ``true``, this node can be visible. The node is only rendered when all of its ancestors are visible, as well. That means :ref:`is_visible_in_tree()` must return ``true``. .. rst-class:: classref-section-separator @@ -594,9 +631,9 @@ Method Descriptions |void| **add_gizmo**\ (\ gizmo\: :ref:`Node3DGizmo`\ ) :ref:`🔗` -Attach an editor gizmo to this **Node3D**. +Attaches the given ``gizmo`` to this node. Only works in the editor. -\ **Note:** The gizmo object would typically be an instance of :ref:`EditorNode3DGizmo`, but the argument type is kept generic to avoid creating a dependency on editor classes in **Node3D**. +\ **Note:** ``gizmo`` should be an :ref:`EditorNode3DGizmo`. The argument type is :ref:`Node3DGizmo` to avoid depending on editor classes in **Node3D**. .. rst-class:: classref-item-separator @@ -608,7 +645,7 @@ Attach an editor gizmo to this **Node3D**. |void| **clear_gizmos**\ (\ ) :ref:`🔗` -Clear all gizmos attached to this **Node3D**. +Clears all :ref:`EditorNode3DGizmo` objects attached to this node. Only works in the editor. .. rst-class:: classref-item-separator @@ -620,7 +657,7 @@ Clear all gizmos attached to this **Node3D**. |void| **clear_subgizmo_selection**\ (\ ) :ref:`🔗` -Clears subgizmo selection for this node in the editor. Useful when subgizmo IDs become invalid after a property change. +Deselects all subgizmos for this node. Useful to call when the selected subgizmo may no longer exist after a property change. Only works in the editor. .. rst-class:: classref-item-separator @@ -632,7 +669,9 @@ Clears subgizmo selection for this node in the editor. Useful when subgizmo IDs |void| **force_update_transform**\ (\ ) :ref:`🔗` -Forces the transform to update. Transform changes in physics are not instant for performance reasons. Transforms are accumulated and then set. Use this if you need an up-to-date transform when doing physics operations. +Forces the node's :ref:`global_transform` to update, by sending :ref:`NOTIFICATION_TRANSFORM_CHANGED`. Fails if the node is not inside the tree. + +\ **Note:** For performance reasons, transform changes are usually accumulated and applied *once* at the end of the frame. The update propagates through **Node3D** children, as well. Therefore, use this method only when you need an up-to-date transform (such as during physics operations). .. rst-class:: classref-item-separator @@ -644,7 +683,7 @@ Forces the transform to update. Transform changes in physics are not instant for :ref:`Array`\[:ref:`Node3DGizmo`\] **get_gizmos**\ (\ ) |const| :ref:`🔗` -Returns all the gizmos attached to this **Node3D**. +Returns all the :ref:`EditorNode3DGizmo` objects attached to this node. Only works in the editor. .. rst-class:: classref-item-separator @@ -672,9 +711,9 @@ This is particularly important for frame-based operations that take place in :re :ref:`Node3D` **get_parent_node_3d**\ (\ ) |const| :ref:`🔗` -Returns the parent **Node3D**, or ``null`` if no parent exists, the parent is not of type **Node3D**, or :ref:`top_level` is ``true``. +Returns the parent **Node3D** that directly affects this node's :ref:`global_transform`. Returns ``null`` if no parent exists, the parent is not a **Node3D**, or :ref:`top_level` is ``true``. -\ **Note:** Calling this method is not equivalent to ``get_parent() as Node3D``, which does not take :ref:`top_level` into account. +\ **Note:** This method is not always equivalent to :ref:`Node.get_parent()`, which does not take :ref:`top_level` into account. .. rst-class:: classref-item-separator @@ -686,7 +725,9 @@ Returns the parent **Node3D**, or ``null`` if no parent exists, the parent is no :ref:`World3D` **get_world_3d**\ (\ ) |const| :ref:`🔗` -Returns the current :ref:`World3D` resource this **Node3D** node is registered to. +Returns the :ref:`World3D` this node is registered to. + +Usually, this is the same as the world used by this node's viewport (see :ref:`Node.get_viewport()` and :ref:`Viewport.find_world_3d()`). .. rst-class:: classref-item-separator @@ -698,7 +739,7 @@ Returns the current :ref:`World3D` resource this **Node3D** node |void| **global_rotate**\ (\ axis\: :ref:`Vector3`, angle\: :ref:`float`\ ) :ref:`🔗` -Rotates the global (world) transformation around axis, a unit :ref:`Vector3`, by specified angle in radians. The rotation axis is in global coordinate system. +Rotates this node's :ref:`global_basis` around the global ``axis`` by the given ``angle``, in radians. This operation is calculated in global space (relative to the world) and preserves the :ref:`global_position`. .. rst-class:: classref-item-separator @@ -710,7 +751,9 @@ Rotates the global (world) transformation around axis, a unit :ref:`Vector3`\ ) :ref:`🔗` -Scales the global (world) transformation by the given :ref:`Vector3` scale factors. +Scales this node's :ref:`global_basis` by the given ``scale`` factor. This operation is calculated in global space (relative to the world) and preserves the :ref:`global_position`. + +\ **Note:** This method is not to be confused with the :ref:`scale` property. .. rst-class:: classref-item-separator @@ -722,7 +765,7 @@ Scales the global (world) transformation by the given :ref:`Vector3`\ ) :ref:`🔗` -Moves the global (world) transformation by :ref:`Vector3` offset. The offset is in global coordinate system. +Adds the given translation ``offset`` to the node's :ref:`global_position` in global space (relative to the world). .. rst-class:: classref-item-separator @@ -734,7 +777,7 @@ Moves the global (world) transformation by :ref:`Vector3` offset. |void| **hide**\ (\ ) :ref:`🔗` -Disables rendering of this node. Changes :ref:`visible` to ``false``. +Prevents this node from being rendered. Equivalent to setting :ref:`visible` to ``false``. This is the opposite of :ref:`show()`. .. rst-class:: classref-item-separator @@ -746,7 +789,7 @@ Disables rendering of this node. Changes :ref:`visible` **is_local_transform_notification_enabled**\ (\ ) |const| :ref:`🔗` -Returns whether node notifies about its local transformation changes. **Node3D** will not propagate this by default. +Returns ``true`` if the node receives :ref:`NOTIFICATION_LOCAL_TRANSFORM_CHANGED` whenever :ref:`transform` changes. This is enabled with :ref:`set_notify_local_transform()`. .. rst-class:: classref-item-separator @@ -758,7 +801,9 @@ Returns whether node notifies about its local transformation changes. **Node3D** :ref:`bool` **is_scale_disabled**\ (\ ) |const| :ref:`🔗` -Returns whether this node uses a scale of ``(1, 1, 1)`` or its local transformation scale. +Returns ``true`` if this node's :ref:`global_transform` is automatically orthonormalized. This results in this node not appearing distorted, as if its global scale were set to :ref:`Vector3.ONE` (or its negative counterpart). See also :ref:`set_disable_scale()` and :ref:`orthonormalize()`. + +\ **Note:** :ref:`transform` is not affected by this setting. .. rst-class:: classref-item-separator @@ -770,7 +815,7 @@ Returns whether this node uses a scale of ``(1, 1, 1)`` or its local transformat :ref:`bool` **is_transform_notification_enabled**\ (\ ) |const| :ref:`🔗` -Returns whether the node notifies about its global and local transformation changes. **Node3D** will not propagate this by default. +Returns ``true`` if the node receives :ref:`NOTIFICATION_TRANSFORM_CHANGED` whenever :ref:`global_transform` changes. This is enabled with :ref:`set_notify_transform()`. .. rst-class:: classref-item-separator @@ -782,11 +827,9 @@ Returns whether the node notifies about its global and local transformation chan :ref:`bool` **is_visible_in_tree**\ (\ ) |const| :ref:`🔗` -Returns ``true`` if the node is present in the :ref:`SceneTree`, its :ref:`visible` property is ``true`` and all its ancestors are also visible. If any ancestor is hidden, this node will not be visible in the scene tree. +Returns ``true`` if this node is inside the scene tree and the :ref:`visible` property is ``true`` for this node and all of its **Node3D** ancestors *in sequence*. An ancestor of any other type (such as :ref:`Node` or :ref:`Node2D`) breaks the sequence. See also :ref:`Node.get_parent()`. -Visibility is checked only in parent nodes that inherit from **Node3D**. If the parent is of any other type (such as :ref:`Node`, :ref:`AnimationPlayer`, or :ref:`Node2D`), it is assumed to be visible. - -\ **Note:** This method does not take :ref:`VisualInstance3D.layers` into account, so even if this method returns ``true``, the node might end up not being rendered. +\ **Note:** This method cannot take :ref:`VisualInstance3D.layers` into account, so even if this method returns ``true``, the node may not be rendered. .. rst-class:: classref-item-separator @@ -798,18 +841,16 @@ Visibility is checked only in parent nodes that inherit from **Node3D**. If the |void| **look_at**\ (\ target\: :ref:`Vector3`, up\: :ref:`Vector3` = Vector3(0, 1, 0), use_model_front\: :ref:`bool` = false\ ) :ref:`🔗` -Rotates the node so that the local forward axis (-Z, :ref:`Vector3.FORWARD`) points toward the ``target`` position. +Rotates the node so that the local forward axis (-Z, :ref:`Vector3.FORWARD`) points toward the ``target`` position. This operation is calculated in global space (relative to the world). The local up axis (+Y) points as close to the ``up`` vector as possible while staying perpendicular to the local forward axis. The resulting transform is orthogonal, and the scale is preserved. Non-uniform scaling may not work correctly. -The ``target`` position cannot be the same as the node's position, the ``up`` vector cannot be zero. - -The ``target`` and the ``up`` cannot be :ref:`Vector3.ZERO`, and shouldn't be colinear to avoid unintended rotation around local Z axis. - -Operations take place in global space, which means that the node must be in the scene tree. +The ``target`` position cannot be the same as the node's position, the ``up`` vector cannot be :ref:`Vector3.ZERO`. Furthermore, the direction from the node's position to the ``target`` position cannot be parallel to the ``up`` vector, to avoid an unintended rotation around the local Z axis. If ``use_model_front`` is ``true``, the +Z axis (asset front) is treated as forward (implies +X is left) and points toward the ``target`` position. By default, the -Z axis (camera forward) is treated as forward (implies +X is right). +\ **Note:** This method fails if the node is not in the scene tree. If necessary, use :ref:`look_at_from_position()` instead. + .. rst-class:: classref-item-separator ---- @@ -820,7 +861,7 @@ If ``use_model_front`` is ``true``, the +Z axis (asset front) is treated as forw |void| **look_at_from_position**\ (\ position\: :ref:`Vector3`, target\: :ref:`Vector3`, up\: :ref:`Vector3` = Vector3(0, 1, 0), use_model_front\: :ref:`bool` = false\ ) :ref:`🔗` -Moves the node to the specified ``position``, and then rotates the node to point toward the ``target`` as per :ref:`look_at()`. Operations take place in global space. +Moves the node to the specified ``position``, then rotates the node to point toward the ``target`` position, similar to :ref:`look_at()`. This operation is calculated in global space (relative to the world). .. rst-class:: classref-item-separator @@ -832,7 +873,7 @@ Moves the node to the specified ``position``, and then rotates the node to point |void| **orthonormalize**\ (\ ) :ref:`🔗` -Resets this node's transformations (like scale, skew and taper) preserving its rotation and translation by performing Gram-Schmidt orthonormalization on this node's :ref:`Transform3D`. +Orthonormalizes this node's :ref:`basis`. This method sets this node's :ref:`scale` to :ref:`Vector3.ONE` (or its negative counterpart), but preserves the :ref:`position` and :ref:`rotation`. See also :ref:`Transform3D.orthonormalized()`. .. rst-class:: classref-item-separator @@ -844,7 +885,7 @@ Resets this node's transformations (like scale, skew and taper) preserving its r |void| **rotate**\ (\ axis\: :ref:`Vector3`, angle\: :ref:`float`\ ) :ref:`🔗` -Rotates the local transformation around axis, a unit :ref:`Vector3`, by specified angle in radians. +Rotates this node's :ref:`basis` around the ``axis`` by the given ``angle``, in radians. This operation is calculated in parent space (relative to the parent) and preserves the :ref:`position`. .. rst-class:: classref-item-separator @@ -856,7 +897,7 @@ Rotates the local transformation around axis, a unit :ref:`Vector3`, angle\: :ref:`float`\ ) :ref:`🔗` -Rotates the local transformation around axis, a unit :ref:`Vector3`, by specified angle in radians. The rotation axis is in object-local coordinate system. +Rotates this node's :ref:`basis` around the ``axis`` by the given ``angle``, in radians. This operation is calculated in local space (relative to this node) and preserves the :ref:`position`. .. rst-class:: classref-item-separator @@ -868,7 +909,7 @@ Rotates the local transformation around axis, a unit :ref:`Vector3`\ ) :ref:`🔗` -Rotates the local transformation around the X axis by angle in radians. +Rotates this node's :ref:`basis` around the X axis by the given ``angle``, in radians. This operation is calculated in parent space (relative to the parent) and preserves the :ref:`position`. .. rst-class:: classref-item-separator @@ -880,7 +921,7 @@ Rotates the local transformation around the X axis by angle in radians. |void| **rotate_y**\ (\ angle\: :ref:`float`\ ) :ref:`🔗` -Rotates the local transformation around the Y axis by angle in radians. +Rotates this node's :ref:`basis` around the Y axis by the given ``angle``, in radians. This operation is calculated in parent space (relative to the parent) and preserves the :ref:`position`. .. rst-class:: classref-item-separator @@ -892,7 +933,7 @@ Rotates the local transformation around the Y axis by angle in radians. |void| **rotate_z**\ (\ angle\: :ref:`float`\ ) :ref:`🔗` -Rotates the local transformation around the Z axis by angle in radians. +Rotates this node's :ref:`basis` around the Z axis by the given ``angle``, in radians. This operation is calculated in parent space (relative to the parent) and preserves the :ref:`position`. .. rst-class:: classref-item-separator @@ -904,7 +945,7 @@ Rotates the local transformation around the Z axis by angle in radians. |void| **scale_object_local**\ (\ scale\: :ref:`Vector3`\ ) :ref:`🔗` -Scales the local transformation by given 3D scale factors in object-local coordinate system. +Scales this node's :ref:`basis` by the given ``scale`` factor. This operation is calculated in local space (relative to this node) and preserves the :ref:`position`. .. rst-class:: classref-item-separator @@ -916,7 +957,9 @@ Scales the local transformation by given 3D scale factors in object-local coordi |void| **set_disable_scale**\ (\ disable\: :ref:`bool`\ ) :ref:`🔗` -Sets whether the node uses a scale of ``(1, 1, 1)`` or its local transformation scale. Changes to the local transformation scale are preserved. +If ``true``, this node's :ref:`global_transform` is automatically orthonormalized. This results in this node not appearing distorted, as if its global scale were set to :ref:`Vector3.ONE` (or its negative counterpart). See also :ref:`is_scale_disabled()` and :ref:`orthonormalize()`. + +\ **Note:** :ref:`transform` is not affected by this setting. .. rst-class:: classref-item-separator @@ -928,7 +971,7 @@ Sets whether the node uses a scale of ``(1, 1, 1)`` or its local transformation |void| **set_identity**\ (\ ) :ref:`🔗` -Reset all transformations for this node (sets its :ref:`Transform3D` to the identity matrix). +Sets this node's :ref:`transform` to :ref:`Transform3D.IDENTITY`, which resets all transformations in parent space (:ref:`position`, :ref:`rotation`, and :ref:`scale`). .. rst-class:: classref-item-separator @@ -940,7 +983,9 @@ Reset all transformations for this node (sets its :ref:`Transform3D`\ ) :ref:`🔗` -Sets whether the node ignores notification that its transformation (global or local) changed. +If ``true``, the node will not receive :ref:`NOTIFICATION_TRANSFORM_CHANGED` or :ref:`NOTIFICATION_LOCAL_TRANSFORM_CHANGED`. + +It may useful to call this method when handling these notifications to prevent infinite recursion. .. rst-class:: classref-item-separator @@ -952,7 +997,9 @@ Sets whether the node ignores notification that its transformation (global or lo |void| **set_notify_local_transform**\ (\ enable\: :ref:`bool`\ ) :ref:`🔗` -Sets whether the node notifies about its local transformation changes. **Node3D** will not propagate this by default. +If ``true``, the node will receive :ref:`NOTIFICATION_LOCAL_TRANSFORM_CHANGED` whenever :ref:`transform` changes. + +\ **Note:** Some 3D nodes such as :ref:`CSGShape3D` or :ref:`CollisionShape3D` automatically enable this to function correctly. .. rst-class:: classref-item-separator @@ -964,7 +1011,11 @@ Sets whether the node notifies about its local transformation changes. **Node3D* |void| **set_notify_transform**\ (\ enable\: :ref:`bool`\ ) :ref:`🔗` -Sets whether the node notifies about its global and local transformation changes. **Node3D** will not propagate this by default, unless it is in the editor context and it has a valid gizmo. +If ``true``, the node will receive :ref:`NOTIFICATION_TRANSFORM_CHANGED` whenever :ref:`global_transform` changes. + +\ **Note:** Most 3D nodes such as :ref:`VisualInstance3D` or :ref:`CollisionObject3D` automatically enable this to function correctly. + +\ **Note:** In the editor, nodes will propagate this notification to their children if a gizmo is attached (see :ref:`add_gizmo()`). .. rst-class:: classref-item-separator @@ -976,7 +1027,7 @@ Sets whether the node notifies about its global and local transformation changes |void| **set_subgizmo_selection**\ (\ gizmo\: :ref:`Node3DGizmo`, id\: :ref:`int`, transform\: :ref:`Transform3D`\ ) :ref:`🔗` -Set subgizmo selection for this node in the editor. +Selects the ``gizmo``'s subgizmo with the given ``id`` and sets its transform. Only works in the editor. \ **Note:** The gizmo object would typically be an instance of :ref:`EditorNode3DGizmo`, but the argument type is kept generic to avoid creating a dependency on editor classes in **Node3D**. @@ -990,7 +1041,7 @@ Set subgizmo selection for this node in the editor. |void| **show**\ (\ ) :ref:`🔗` -Enables rendering of this node. Changes :ref:`visible` to ``true``. +Allows this node to be rendered. Equivalent to setting :ref:`visible` to ``true``. This is the opposite of :ref:`hide()`. .. rst-class:: classref-item-separator @@ -1002,7 +1053,7 @@ Enables rendering of this node. Changes :ref:`visible` **to_global**\ (\ local_point\: :ref:`Vector3`\ ) |const| :ref:`🔗` -Transforms ``local_point`` from this node's local space to world space. +Returns the ``local_point`` converted from this node's local space to global space. This is the opposite of :ref:`to_local()`. .. rst-class:: classref-item-separator @@ -1014,7 +1065,7 @@ Transforms ``local_point`` from this node's local space to world space. :ref:`Vector3` **to_local**\ (\ global_point\: :ref:`Vector3`\ ) |const| :ref:`🔗` -Transforms ``global_point`` from world space to this node's local space. +Returns the ``global_point`` converted from global space to this node's local space. This is the opposite of :ref:`to_global()`. .. rst-class:: classref-item-separator @@ -1026,9 +1077,11 @@ Transforms ``global_point`` from world space to this node's local space. |void| **translate**\ (\ offset\: :ref:`Vector3`\ ) :ref:`🔗` -Changes the node's position by the given offset :ref:`Vector3`. +Adds the given translation ``offset`` to the node's position, in local space (relative to this node). -Note that the translation ``offset`` is affected by the node's scale, so if scaled by e.g. ``(10, 1, 1)``, a translation by an offset of ``(2, 0, 0)`` would actually add 20 (``2 * 10``) to the X coordinate. +\ **Note:** Prefer using :ref:`translate_object_local()`, instead, as this method may be changed in a future release. + +\ **Note:** Despite the naming convention, this operation is **not** calculated in parent space for compatibility reasons. To translate in parent space, add ``offset`` to the :ref:`position` (``node_3d.position += offset``). .. rst-class:: classref-item-separator @@ -1040,7 +1093,7 @@ Note that the translation ``offset`` is affected by the node's scale, so if scal |void| **translate_object_local**\ (\ offset\: :ref:`Vector3`\ ) :ref:`🔗` -Changes the node's position by the given offset :ref:`Vector3` in local space. +Adds the given translation ``offset`` to the node's position, in local space (relative to this node). .. rst-class:: classref-item-separator @@ -1052,7 +1105,7 @@ Changes the node's position by the given offset :ref:`Vector3` in |void| **update_gizmos**\ (\ ) :ref:`🔗` -Updates all the **Node3D** gizmos attached to this node. +Updates all the :ref:`EditorNode3DGizmo` objects attached to this node. Only works in the editor. .. |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.)` diff --git a/classes/class_object.rst b/classes/class_object.rst index 3e5daeab0..4e27301d3 100644 --- a/classes/class_object.rst +++ b/classes/class_object.rst @@ -10,7 +10,7 @@ Object ====== -**Inherited By:** :ref:`AudioServer`, :ref:`CameraServer`, :ref:`ClassDB`, :ref:`DisplayServer`, :ref:`EditorFileSystemDirectory`, :ref:`EditorInterface`, :ref:`EditorPaths`, :ref:`EditorSelection`, :ref:`EditorUndoRedoManager`, :ref:`EditorVCSInterface`, :ref:`Engine`, :ref:`EngineDebugger`, :ref:`FramebufferCacheRD`, :ref:`GDExtensionManager`, :ref:`Geometry2D`, :ref:`Geometry3D`, :ref:`Input`, :ref:`InputMap`, :ref:`IP`, :ref:`JavaClassWrapper`, :ref:`JavaScriptBridge`, :ref:`JNISingleton`, :ref:`JSONRPC`, :ref:`MainLoop`, :ref:`Marshalls`, :ref:`MovieWriter`, :ref:`NativeMenu`, :ref:`NavigationMeshGenerator`, :ref:`NavigationServer2D`, :ref:`NavigationServer3D`, :ref:`Node`, :ref:`OpenXRExtensionWrapperExtension`, :ref:`OpenXRInteractionProfileMetadata`, :ref:`OS`, :ref:`Performance`, :ref:`PhysicsDirectBodyState2D`, :ref:`PhysicsDirectBodyState3D`, :ref:`PhysicsDirectSpaceState2D`, :ref:`PhysicsDirectSpaceState3D`, :ref:`PhysicsServer2D`, :ref:`PhysicsServer2DManager`, :ref:`PhysicsServer3D`, :ref:`PhysicsServer3DManager`, :ref:`PhysicsServer3DRenderingServerHandler`, :ref:`ProjectSettings`, :ref:`RefCounted`, :ref:`RenderData`, :ref:`RenderingDevice`, :ref:`RenderingServer`, :ref:`RenderSceneData`, :ref:`ResourceLoader`, :ref:`ResourceSaver`, :ref:`ResourceUID`, :ref:`ScriptLanguage`, :ref:`ShaderIncludeDB`, :ref:`TextServerManager`, :ref:`ThemeDB`, :ref:`TileData`, :ref:`Time`, :ref:`TranslationServer`, :ref:`TreeItem`, :ref:`UndoRedo`, :ref:`UniformSetCacheRD`, :ref:`WorkerThreadPool`, :ref:`XRServer`, :ref:`XRVRS` +**Inherited By:** :ref:`AudioServer`, :ref:`CameraServer`, :ref:`ClassDB`, :ref:`DisplayServer`, :ref:`EditorFileSystemDirectory`, :ref:`EditorInterface`, :ref:`EditorPaths`, :ref:`EditorSelection`, :ref:`EditorUndoRedoManager`, :ref:`EditorVCSInterface`, :ref:`Engine`, :ref:`EngineDebugger`, :ref:`FramebufferCacheRD`, :ref:`GDExtensionManager`, :ref:`Geometry2D`, :ref:`Geometry3D`, :ref:`Input`, :ref:`InputMap`, :ref:`IP`, :ref:`JavaClassWrapper`, :ref:`JavaScriptBridge`, :ref:`JNISingleton`, :ref:`JSONRPC`, :ref:`MainLoop`, :ref:`Marshalls`, :ref:`MovieWriter`, :ref:`NativeMenu`, :ref:`NavigationMeshGenerator`, :ref:`NavigationServer2D`, :ref:`NavigationServer3D`, :ref:`Node`, :ref:`OpenXRExtensionWrapper`, :ref:`OpenXRInteractionProfileMetadata`, :ref:`OS`, :ref:`Performance`, :ref:`PhysicsDirectBodyState2D`, :ref:`PhysicsDirectBodyState3D`, :ref:`PhysicsDirectSpaceState2D`, :ref:`PhysicsDirectSpaceState3D`, :ref:`PhysicsServer2D`, :ref:`PhysicsServer2DManager`, :ref:`PhysicsServer3D`, :ref:`PhysicsServer3DManager`, :ref:`PhysicsServer3DRenderingServerHandler`, :ref:`ProjectSettings`, :ref:`RefCounted`, :ref:`RenderData`, :ref:`RenderingDevice`, :ref:`RenderingServer`, :ref:`RenderSceneData`, :ref:`ResourceLoader`, :ref:`ResourceSaver`, :ref:`ResourceUID`, :ref:`ScriptLanguage`, :ref:`ShaderIncludeDB`, :ref:`TextServerManager`, :ref:`ThemeDB`, :ref:`TileData`, :ref:`Time`, :ref:`TranslationServer`, :ref:`TreeItem`, :ref:`UndoRedo`, :ref:`UniformSetCacheRD`, :ref:`WorkerThreadPool`, :ref:`XRServer`, :ref:`XRVRS` Base class for all other classes in the engine. @@ -533,8 +533,6 @@ Returns the current iterable value. ``iter`` stores the iteration state, but unl Initializes the iterator. ``iter`` stores the iteration state. Since GDScript does not support passing arguments by reference, a single-element array is used as a wrapper. Returns ``true`` so long as the iterator has not reached the end. -Example: - :: class MyRange: @@ -966,155 +964,11 @@ If this method is called during :ref:`NOTIFICATION_PREDELETE` constants). -A signal can only be connected once to the same :ref:`Callable`. If the signal is already connected, this method returns :ref:`@GlobalScope.ERR_INVALID_PARAMETER` and pushes an error message, unless the signal is connected with :ref:`CONNECT_REFERENCE_COUNTED`. To prevent this, use :ref:`is_connected()` first to check for existing connections. - -If the ``callable``'s object is freed, the connection will be lost. - -\ **Examples with recommended syntax:**\ - -Connecting signals is one of the most common operations in Godot and the API gives many options to do so, which are described further down. The code block below shows the recommended approach. - - -.. tabs:: - - .. code-tab:: gdscript - - func _ready(): - var button = Button.new() - # `button_down` here is a Signal variant type, and we thus call the Signal.connect() method, not Object.connect(). - # See discussion below for a more in-depth overview of the API. - button.button_down.connect(_on_button_down) - - # This assumes that a `Player` class exists, which defines a `hit` signal. - var player = Player.new() - # We use Signal.connect() again, and we also use the Callable.bind() method, - # which returns a new Callable with the parameter binds. - player.hit.connect(_on_player_hit.bind("sword", 100)) - - func _on_button_down(): - print("Button down!") - - func _on_player_hit(weapon_type, damage): - print("Hit with weapon %s for %d damage." % [weapon_type, damage]) - - .. code-tab:: csharp - - public override void _Ready() - { - var button = new Button(); - // C# supports passing signals as events, so we can use this idiomatic construct: - button.ButtonDown += OnButtonDown; - - // This assumes that a `Player` class exists, which defines a `Hit` signal. - var player = new Player(); - // We can use lambdas when we need to bind additional parameters. - player.Hit += () => OnPlayerHit("sword", 100); - } - - private void OnButtonDown() - { - GD.Print("Button down!"); - } - - private void OnPlayerHit(string weaponType, int damage) - { - GD.Print($"Hit with weapon {weaponType} for {damage} damage."); - } - - - -\ **\ ``Object.connect()`` or ``Signal.connect()``?**\ - -As seen above, the recommended method to connect signals is not :ref:`connect()`. The code block below shows the four options for connecting signals, using either this legacy method or the recommended :ref:`Signal.connect()`, and using either an implicit :ref:`Callable` or a manually defined one. - - -.. tabs:: - - .. code-tab:: gdscript - - func _ready(): - var button = Button.new() - # Option 1: Object.connect() with an implicit Callable for the defined function. - button.connect("button_down", _on_button_down) - # Option 2: Object.connect() with a constructed Callable using a target object and method name. - button.connect("button_down", Callable(self, "_on_button_down")) - # Option 3: Signal.connect() with an implicit Callable for the defined function. - button.button_down.connect(_on_button_down) - # Option 4: Signal.connect() with a constructed Callable using a target object and method name. - button.button_down.connect(Callable(self, "_on_button_down")) - - func _on_button_down(): - print("Button down!") - - .. code-tab:: csharp - - public override void _Ready() - { - var button = new Button(); - // Option 1: In C#, we can use signals as events and connect with this idiomatic syntax: - button.ButtonDown += OnButtonDown; - // Option 2: GodotObject.Connect() with a constructed Callable from a method group. - button.Connect(Button.SignalName.ButtonDown, Callable.From(OnButtonDown)); - // Option 3: GodotObject.Connect() with a constructed Callable using a target object and method name. - button.Connect(Button.SignalName.ButtonDown, new Callable(this, MethodName.OnButtonDown)); - } - - private void OnButtonDown() - { - GD.Print("Button down!"); - } - - - -While all options have the same outcome (``button``'s :ref:`BaseButton.button_down` signal will be connected to ``_on_button_down``), **option 3** offers the best validation: it will print a compile-time error if either the ``button_down`` :ref:`Signal` or the ``_on_button_down`` :ref:`Callable` are not defined. On the other hand, **option 2** only relies on string names and will only be able to validate either names at runtime: it will print a runtime error if ``"button_down"`` doesn't correspond to a signal, or if ``"_on_button_down"`` is not a registered method in the object ``self``. The main reason for using options 1, 2, or 4 would be if you actually need to use strings (e.g. to connect signals programmatically based on strings read from a configuration file). Otherwise, option 3 is the recommended (and fastest) method. - -\ **Binding and passing parameters:**\ - -The syntax to bind parameters is through :ref:`Callable.bind()`, which returns a copy of the :ref:`Callable` with its parameters bound. - -When calling :ref:`emit_signal()` or :ref:`Signal.emit()`, the signal parameters can be also passed. The examples below show the relationship between these signal parameters and bound parameters. - - -.. tabs:: - - .. code-tab:: gdscript - - func _ready(): - # This assumes that a `Player` class exists, which defines a `hit` signal. - var player = Player.new() - # Using Callable.bind(). - player.hit.connect(_on_player_hit.bind("sword", 100)) - - # Parameters added when emitting the signal are passed first. - player.hit.emit("Dark lord", 5) - - # We pass two arguments when emitting (`hit_by`, `level`), - # and bind two more arguments when connecting (`weapon_type`, `damage`). - func _on_player_hit(hit_by, level, weapon_type, damage): - print("Hit by %s (level %d) with weapon %s for %d damage." % [hit_by, level, weapon_type, damage]) - - .. code-tab:: csharp - - public override void _Ready() - { - // This assumes that a `Player` class exists, which defines a `Hit` signal. - var player = new Player(); - // Using lambda expressions that create a closure that captures the additional parameters. - // The lambda only receives the parameters defined by the signal's delegate. - player.Hit += (hitBy, level) => OnPlayerHit(hitBy, level, "sword", 100); - - // Parameters added when emitting the signal are passed first. - player.EmitSignal(SignalName.Hit, "Dark lord", 5); - } - - // We pass two arguments when emitting (`hit_by`, `level`), - // and bind two more arguments when connecting (`weapon_type`, `damage`). - private void OnPlayerHit(string hitBy, int level, string weaponType, int damage) - { - GD.Print($"Hit by {hitBy} (level {level}) with weapon {weaponType} for {damage} damage."); - } +A signal can only be connected once to the same :ref:`Callable`. If the signal is already connected, this method returns :ref:`@GlobalScope.ERR_INVALID_PARAMETER` and generates an error, unless the signal is connected with :ref:`CONNECT_REFERENCE_COUNTED`. To prevent this, use :ref:`is_connected()` first to check for existing connections. +\ **Note:** If the ``callable``'s object is freed, the connection will be lost. +\ **Note:** In GDScript, it is generally recommended to connect signals with :ref:`Signal.connect()` instead. .. rst-class:: classref-item-separator diff --git a/classes/class_openxranalogthresholdmodifier.rst b/classes/class_openxranalogthresholdmodifier.rst index ad5abb504..8c09c5b7b 100644 --- a/classes/class_openxranalogthresholdmodifier.rst +++ b/classes/class_openxranalogthresholdmodifier.rst @@ -78,7 +78,7 @@ Haptic pulse to emit when the user releases the input. - |void| **set_off_threshold**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_off_threshold**\ (\ ) -When our input value falls below this, our output becomes false. +When our input value falls below this, our output becomes ``false``. .. rst-class:: classref-item-separator @@ -112,7 +112,7 @@ Haptic pulse to emit when the user presses the input. - |void| **set_on_threshold**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_on_threshold**\ (\ ) -When our input value is equal or larger than this value, our output becomes true. It stays true until it falls under the :ref:`off_threshold` value. +When our input value is equal or larger than this value, our output becomes ``true``. It stays ``true`` until it falls under the :ref:`off_threshold` value. .. |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.)` diff --git a/classes/class_openxrapiextension.rst b/classes/class_openxrapiextension.rst index bba2401bd..656f89e5d 100644 --- a/classes/class_openxrapiextension.rst +++ b/classes/class_openxrapiextension.rst @@ -111,9 +111,13 @@ Methods +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`openxr_swapchain_release`\ (\ swapchain\: :ref:`int`\ ) | +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`register_composition_layer_provider`\ (\ extension\: :ref:`OpenXRExtensionWrapperExtension`\ ) | + | |void| | :ref:`register_composition_layer_provider`\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) | +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`register_projection_views_extension`\ (\ extension\: :ref:`OpenXRExtensionWrapperExtension`\ ) | + | |void| | :ref:`register_frame_info_extension`\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) | + +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`register_projection_views_extension`\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) | + +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_custom_play_space`\ (\ space\: ``const void*``\ ) | +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_emulate_environment_blend_mode_alpha_blend`\ (\ enabled\: :ref:`bool`\ ) | +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -129,9 +133,11 @@ Methods +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Transform3D` | :ref:`transform_from_pose`\ (\ pose\: ``const void*``\ ) | +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`unregister_composition_layer_provider`\ (\ extension\: :ref:`OpenXRExtensionWrapperExtension`\ ) | + | |void| | :ref:`unregister_composition_layer_provider`\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) | +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`unregister_projection_views_extension`\ (\ extension\: :ref:`OpenXRExtensionWrapperExtension`\ ) | + | |void| | :ref:`unregister_frame_info_extension`\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) | + +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`unregister_projection_views_extension`\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) | +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`xr_result`\ (\ result\: :ref:`int`, format\: :ref:`String`, args\: :ref:`Array`\ ) | +-----------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -556,7 +562,7 @@ Releases the image of the provided swapchain. .. rst-class:: classref-method -|void| **register_composition_layer_provider**\ (\ extension\: :ref:`OpenXRExtensionWrapperExtension`\ ) :ref:`🔗` +|void| **register_composition_layer_provider**\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) :ref:`🔗` Registers the given extension as a composition layer provider. @@ -564,11 +570,23 @@ Registers the given extension as a composition layer provider. ---- +.. _class_OpenXRAPIExtension_method_register_frame_info_extension: + +.. rst-class:: classref-method + +|void| **register_frame_info_extension**\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) :ref:`🔗` + +Registers the given extension as modifying frame info via the :ref:`OpenXRExtensionWrapper._set_frame_wait_info_and_get_next_pointer()`, :ref:`OpenXRExtensionWrapper._set_view_locate_info_and_get_next_pointer()`, or :ref:`OpenXRExtensionWrapper._set_frame_end_info_and_get_next_pointer()` virtual methods. + +.. rst-class:: classref-item-separator + +---- + .. _class_OpenXRAPIExtension_method_register_projection_views_extension: .. rst-class:: classref-method -|void| **register_projection_views_extension**\ (\ extension\: :ref:`OpenXRExtensionWrapperExtension`\ ) :ref:`🔗` +|void| **register_projection_views_extension**\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) :ref:`🔗` Registers the given extension as a provider of additional data structures to projections views. @@ -576,6 +594,18 @@ Registers the given extension as a provider of additional data structures to pro ---- +.. _class_OpenXRAPIExtension_method_set_custom_play_space: + +.. rst-class:: classref-method + +|void| **set_custom_play_space**\ (\ space\: ``const void*``\ ) :ref:`🔗` + +Sets the reference space used by OpenXR to the given `XrSpace `__ (cast to a ``void *``). + +.. rst-class:: classref-item-separator + +---- + .. _class_OpenXRAPIExtension_method_set_emulate_environment_blend_mode_alpha_blend: .. rst-class:: classref-method @@ -664,7 +694,7 @@ Creates a :ref:`Transform3D` from an `XrPosef `\ ) :ref:`🔗` +|void| **unregister_composition_layer_provider**\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) :ref:`🔗` Unregisters the given extension as a composition layer provider. @@ -672,11 +702,23 @@ Unregisters the given extension as a composition layer provider. ---- +.. _class_OpenXRAPIExtension_method_unregister_frame_info_extension: + +.. rst-class:: classref-method + +|void| **unregister_frame_info_extension**\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) :ref:`🔗` + +Unregisters the given extension as modifying frame info. + +.. rst-class:: classref-item-separator + +---- + .. _class_OpenXRAPIExtension_method_unregister_projection_views_extension: .. rst-class:: classref-method -|void| **unregister_projection_views_extension**\ (\ extension\: :ref:`OpenXRExtensionWrapperExtension`\ ) :ref:`🔗` +|void| **unregister_projection_views_extension**\ (\ extension\: :ref:`OpenXRExtensionWrapper`\ ) :ref:`🔗` Unregisters the given extension as a provider of additional data structures to projections views. diff --git a/classes/class_openxrcompositionlayer.rst b/classes/class_openxrcompositionlayer.rst index 2dc780167..b2f90d3ff 100644 --- a/classes/class_openxrcompositionlayer.rst +++ b/classes/class_openxrcompositionlayer.rst @@ -35,19 +35,41 @@ Properties .. table:: :widths: auto - +---------------------------------------+-----------------------------------------------------------------------------------------+--------------------------+ - | :ref:`bool` | :ref:`alpha_blend` | ``false`` | - +---------------------------------------+-----------------------------------------------------------------------------------------+--------------------------+ - | :ref:`Vector2i` | :ref:`android_surface_size` | ``Vector2i(1024, 1024)`` | - +---------------------------------------+-----------------------------------------------------------------------------------------+--------------------------+ - | :ref:`bool` | :ref:`enable_hole_punch` | ``false`` | - +---------------------------------------+-----------------------------------------------------------------------------------------+--------------------------+ - | :ref:`SubViewport` | :ref:`layer_viewport` | | - +---------------------------------------+-----------------------------------------------------------------------------------------+--------------------------+ - | :ref:`int` | :ref:`sort_order` | ``1`` | - +---------------------------------------+-----------------------------------------------------------------------------------------+--------------------------+ - | :ref:`bool` | :ref:`use_android_surface` | ``false`` | - +---------------------------------------+-----------------------------------------------------------------------------------------+--------------------------+ + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`alpha_blend` | ``false`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Vector2i` | :ref:`android_surface_size` | ``Vector2i(1024, 1024)`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`enable_hole_punch` | ``false`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`SubViewport` | :ref:`layer_viewport` | | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`int` | :ref:`sort_order` | ``1`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Swizzle` | :ref:`swapchain_state_alpha_swizzle` | ``3`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Swizzle` | :ref:`swapchain_state_blue_swizzle` | ``2`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Color` | :ref:`swapchain_state_border_color` | ``Color(0, 0, 0, 0)`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Swizzle` | :ref:`swapchain_state_green_swizzle` | ``1`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Wrap` | :ref:`swapchain_state_horizontal_wrap` | ``0`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Filter` | :ref:`swapchain_state_mag_filter` | ``1`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`float` | :ref:`swapchain_state_max_anisotropy` | ``1.0`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Filter` | :ref:`swapchain_state_min_filter` | ``1`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`MipmapMode` | :ref:`swapchain_state_mipmap_mode` | ``2`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Swizzle` | :ref:`swapchain_state_red_swizzle` | ``0`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Wrap` | :ref:`swapchain_state_vertical_wrap` | ``0`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`use_android_surface` | ``false`` | + +-----------------------------------------------------------+---------------------------------------------------------------------------------------------------------------+--------------------------+ .. rst-class:: classref-reftable-group @@ -71,6 +93,191 @@ Methods .. rst-class:: classref-descriptions-group +Enumerations +------------ + +.. _enum_OpenXRCompositionLayer_Filter: + +.. rst-class:: classref-enumeration + +enum **Filter**: :ref:`🔗` + +.. _class_OpenXRCompositionLayer_constant_FILTER_NEAREST: + +.. rst-class:: classref-enumeration-constant + +:ref:`Filter` **FILTER_NEAREST** = ``0`` + +Perform nearest-neighbor filtering when sampling the texture. + +.. _class_OpenXRCompositionLayer_constant_FILTER_LINEAR: + +.. rst-class:: classref-enumeration-constant + +:ref:`Filter` **FILTER_LINEAR** = ``1`` + +Perform linear filtering when sampling the texture. + +.. _class_OpenXRCompositionLayer_constant_FILTER_CUBIC: + +.. rst-class:: classref-enumeration-constant + +:ref:`Filter` **FILTER_CUBIC** = ``2`` + +Perform cubic filtering when sampling the texture. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_OpenXRCompositionLayer_MipmapMode: + +.. rst-class:: classref-enumeration + +enum **MipmapMode**: :ref:`🔗` + +.. _class_OpenXRCompositionLayer_constant_MIPMAP_MODE_DISABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`MipmapMode` **MIPMAP_MODE_DISABLED** = ``0`` + +Disable mipmapping. + +\ **Note:** Mipmapping can only be disabled in the compatibility renderer. + +.. _class_OpenXRCompositionLayer_constant_MIPMAP_MODE_NEAREST: + +.. rst-class:: classref-enumeration-constant + +:ref:`MipmapMode` **MIPMAP_MODE_NEAREST** = ``1`` + +Use the mipmap of the nearest resolution. + +.. _class_OpenXRCompositionLayer_constant_MIPMAP_MODE_LINEAR: + +.. rst-class:: classref-enumeration-constant + +:ref:`MipmapMode` **MIPMAP_MODE_LINEAR** = ``2`` + +Use linear interpolation of the two mipmaps of the nearest resolution. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_OpenXRCompositionLayer_Wrap: + +.. rst-class:: classref-enumeration + +enum **Wrap**: :ref:`🔗` + +.. _class_OpenXRCompositionLayer_constant_WRAP_CLAMP_TO_BORDER: + +.. rst-class:: classref-enumeration-constant + +:ref:`Wrap` **WRAP_CLAMP_TO_BORDER** = ``0`` + +Clamp the texture to its specified border color. + +.. _class_OpenXRCompositionLayer_constant_WRAP_CLAMP_TO_EDGE: + +.. rst-class:: classref-enumeration-constant + +:ref:`Wrap` **WRAP_CLAMP_TO_EDGE** = ``1`` + +Clamp the texture to its edge color. + +.. _class_OpenXRCompositionLayer_constant_WRAP_REPEAT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Wrap` **WRAP_REPEAT** = ``2`` + +Repeat the texture infinitely. + +.. _class_OpenXRCompositionLayer_constant_WRAP_MIRRORED_REPEAT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Wrap` **WRAP_MIRRORED_REPEAT** = ``3`` + +Repeat the texture infinitely, mirroring it on each repeat. + +.. _class_OpenXRCompositionLayer_constant_WRAP_MIRROR_CLAMP_TO_EDGE: + +.. rst-class:: classref-enumeration-constant + +:ref:`Wrap` **WRAP_MIRROR_CLAMP_TO_EDGE** = ``4`` + +Mirror the texture once and then clamp the texture to its edge color. + +\ **Note:** This wrap mode is not available in the compatibility renderer. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_OpenXRCompositionLayer_Swizzle: + +.. rst-class:: classref-enumeration + +enum **Swizzle**: :ref:`🔗` + +.. _class_OpenXRCompositionLayer_constant_SWIZZLE_RED: + +.. rst-class:: classref-enumeration-constant + +:ref:`Swizzle` **SWIZZLE_RED** = ``0`` + +Maps a color channel to the value of the red channel. + +.. _class_OpenXRCompositionLayer_constant_SWIZZLE_GREEN: + +.. rst-class:: classref-enumeration-constant + +:ref:`Swizzle` **SWIZZLE_GREEN** = ``1`` + +Maps a color channel to the value of the green channel. + +.. _class_OpenXRCompositionLayer_constant_SWIZZLE_BLUE: + +.. rst-class:: classref-enumeration-constant + +:ref:`Swizzle` **SWIZZLE_BLUE** = ``2`` + +Maps a color channel to the value of the blue channel. + +.. _class_OpenXRCompositionLayer_constant_SWIZZLE_ALPHA: + +.. rst-class:: classref-enumeration-constant + +:ref:`Swizzle` **SWIZZLE_ALPHA** = ``3`` + +Maps a color channel to the value of the alpha channel. + +.. _class_OpenXRCompositionLayer_constant_SWIZZLE_ZERO: + +.. rst-class:: classref-enumeration-constant + +:ref:`Swizzle` **SWIZZLE_ZERO** = ``4`` + +Maps a color channel to the value of zero. + +.. _class_OpenXRCompositionLayer_constant_SWIZZLE_ONE: + +.. rst-class:: classref-enumeration-constant + +:ref:`Swizzle` **SWIZZLE_ONE** = ``5`` + +Maps a color channel to the value of one. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + Property Descriptions --------------------- @@ -165,6 +372,215 @@ The sort order for this composition layer. Higher numbers will be shown in front ---- +.. _class_OpenXRCompositionLayer_property_swapchain_state_alpha_swizzle: + +.. rst-class:: classref-property + +:ref:`Swizzle` **swapchain_state_alpha_swizzle** = ``3`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_alpha_swizzle**\ (\ value\: :ref:`Swizzle`\ ) +- :ref:`Swizzle` **get_alpha_swizzle**\ (\ ) + +The swizzle value for the alpha channel of the swapchain state. + +\ **Note:** This property only has an effect on devices that support the OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan extensions. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRCompositionLayer_property_swapchain_state_blue_swizzle: + +.. rst-class:: classref-property + +:ref:`Swizzle` **swapchain_state_blue_swizzle** = ``2`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_blue_swizzle**\ (\ value\: :ref:`Swizzle`\ ) +- :ref:`Swizzle` **get_blue_swizzle**\ (\ ) + +The swizzle value for the blue channel of the swapchain state. + +\ **Note:** This property only has an effect on devices that support the OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan extensions. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRCompositionLayer_property_swapchain_state_border_color: + +.. rst-class:: classref-property + +:ref:`Color` **swapchain_state_border_color** = ``Color(0, 0, 0, 0)`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_border_color**\ (\ value\: :ref:`Color`\ ) +- :ref:`Color` **get_border_color**\ (\ ) + +The border color of the swapchain state that is used when the wrap mode clamps to the border. + +\ **Note:** This property only has an effect on devices that support the OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan extensions. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRCompositionLayer_property_swapchain_state_green_swizzle: + +.. rst-class:: classref-property + +:ref:`Swizzle` **swapchain_state_green_swizzle** = ``1`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_green_swizzle**\ (\ value\: :ref:`Swizzle`\ ) +- :ref:`Swizzle` **get_green_swizzle**\ (\ ) + +The swizzle value for the green channel of the swapchain state. + +\ **Note:** This property only has an effect on devices that support the OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan extensions. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRCompositionLayer_property_swapchain_state_horizontal_wrap: + +.. rst-class:: classref-property + +:ref:`Wrap` **swapchain_state_horizontal_wrap** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_horizontal_wrap**\ (\ value\: :ref:`Wrap`\ ) +- :ref:`Wrap` **get_horizontal_wrap**\ (\ ) + +The horizontal wrap mode of the swapchain state. + +\ **Note:** This property only has an effect on devices that support the OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan extensions. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRCompositionLayer_property_swapchain_state_mag_filter: + +.. rst-class:: classref-property + +:ref:`Filter` **swapchain_state_mag_filter** = ``1`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_mag_filter**\ (\ value\: :ref:`Filter`\ ) +- :ref:`Filter` **get_mag_filter**\ (\ ) + +The magnification filter of the swapchain state. + +\ **Note:** This property only has an effect on devices that support the OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan extensions. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRCompositionLayer_property_swapchain_state_max_anisotropy: + +.. rst-class:: classref-property + +:ref:`float` **swapchain_state_max_anisotropy** = ``1.0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_max_anisotropy**\ (\ value\: :ref:`float`\ ) +- :ref:`float` **get_max_anisotropy**\ (\ ) + +The max anisotropy of the swapchain state. + +\ **Note:** This property only has an effect on devices that support the OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan extensions. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRCompositionLayer_property_swapchain_state_min_filter: + +.. rst-class:: classref-property + +:ref:`Filter` **swapchain_state_min_filter** = ``1`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_min_filter**\ (\ value\: :ref:`Filter`\ ) +- :ref:`Filter` **get_min_filter**\ (\ ) + +The minification filter of the swapchain state. + +\ **Note:** This property only has an effect on devices that support the OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan extensions. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRCompositionLayer_property_swapchain_state_mipmap_mode: + +.. rst-class:: classref-property + +:ref:`MipmapMode` **swapchain_state_mipmap_mode** = ``2`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_mipmap_mode**\ (\ value\: :ref:`MipmapMode`\ ) +- :ref:`MipmapMode` **get_mipmap_mode**\ (\ ) + +The mipmap mode of the swapchain state. + +\ **Note:** This property only has an effect on devices that support the OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan extensions. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRCompositionLayer_property_swapchain_state_red_swizzle: + +.. rst-class:: classref-property + +:ref:`Swizzle` **swapchain_state_red_swizzle** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_red_swizzle**\ (\ value\: :ref:`Swizzle`\ ) +- :ref:`Swizzle` **get_red_swizzle**\ (\ ) + +The swizzle value for the red channel of the swapchain state. + +\ **Note:** This property only has an effect on devices that support the OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan extensions. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRCompositionLayer_property_swapchain_state_vertical_wrap: + +.. rst-class:: classref-property + +:ref:`Wrap` **swapchain_state_vertical_wrap** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_vertical_wrap**\ (\ value\: :ref:`Wrap`\ ) +- :ref:`Wrap` **get_vertical_wrap**\ (\ ) + +The vertical wrap mode of the swapchain state. + +\ **Note:** This property only has an effect on devices that support the OpenXR XR_FB_swapchain_update_state OpenGLES/Vulkan extensions. + +.. rst-class:: classref-item-separator + +---- + .. _class_OpenXRCompositionLayer_property_use_android_surface: .. rst-class:: classref-property diff --git a/classes/class_openxrdpadbindingmodifier.rst b/classes/class_openxrdpadbindingmodifier.rst index d2b4872f9..12ab9ba41 100644 --- a/classes/class_openxrdpadbindingmodifier.rst +++ b/classes/class_openxrdpadbindingmodifier.rst @@ -124,9 +124,9 @@ Input path for this dpad binding modifier. - |void| **set_is_sticky**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **get_is_sticky**\ (\ ) -If ``false``, when the joystick enters a new dpad zone this becomes true. +If ``false``, when the joystick enters a new dpad zone this becomes ``true``. -If ``true``, when the joystick remains in active dpad zone, this remains true even if we overlap with another zone. +If ``true``, when the joystick remains in active dpad zone, this remains ``true`` even if we overlap with another zone. .. rst-class:: classref-item-separator @@ -177,7 +177,7 @@ Haptic pulse to emit when the user presses the input. - |void| **set_threshold**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_threshold**\ (\ ) -When our input value is equal or larger than this value, our dpad in that direction becomes true. It stays true until it falls under the :ref:`threshold_released` value. +When our input value is equal or larger than this value, our dpad in that direction becomes ``true``. It stays ``true`` until it falls under the :ref:`threshold_released` value. .. rst-class:: classref-item-separator @@ -194,7 +194,7 @@ When our input value is equal or larger than this value, our dpad in that direct - |void| **set_threshold_released**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_threshold_released**\ (\ ) -When our input value falls below this, our output becomes false. +When our input value falls below this, our output becomes ``false``. .. rst-class:: classref-item-separator diff --git a/classes/class_openxrextensionwrapper.rst b/classes/class_openxrextensionwrapper.rst new file mode 100644 index 000000000..cada68bf9 --- /dev/null +++ b/classes/class_openxrextensionwrapper.rst @@ -0,0 +1,664 @@ +: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/modules/openxr/doc_classes/OpenXRExtensionWrapper.xml. + +.. _class_OpenXRExtensionWrapper: + +OpenXRExtensionWrapper +====================== + +**Inherits:** :ref:`Object` + +**Inherited By:** :ref:`OpenXRExtensionWrapperExtension`, :ref:`OpenXRFutureExtension` + +Allows implementing OpenXR extensions with GDExtension. + +.. rst-class:: classref-introduction-group + +Description +----------- + +**OpenXRExtensionWrapper** allows implementing OpenXR extensions with GDExtension. The extension should be registered with :ref:`register_extension_wrapper()`. + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_get_composition_layer`\ (\ index\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_get_composition_layer_count`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_get_composition_layer_order`\ (\ index\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_get_requested_extensions`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`_get_suggested_tracker_names`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`_get_viewport_composition_layer_extension_properties`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_get_viewport_composition_layer_extension_property_defaults`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_before_instance_created`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_on_event_polled`\ (\ event\: ``const void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_instance_created`\ (\ instance\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_instance_destroyed`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_main_swapchains_created`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_post_draw_viewport`\ (\ viewport\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_pre_draw_viewport`\ (\ viewport\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_pre_render`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_process`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_register_metadata`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_session_created`\ (\ session\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_session_destroyed`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_state_exiting`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_state_focused`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_state_idle`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_state_loss_pending`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_state_ready`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_state_stopping`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_state_synchronized`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_state_visible`\ (\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_on_viewport_composition_layer_destroyed`\ (\ layer\: ``const void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_android_surface_swapchain_create_info_and_get_next_pointer`\ (\ property_values\: :ref:`Dictionary`, next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_frame_end_info_and_get_next_pointer`\ (\ next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_frame_wait_info_and_get_next_pointer`\ (\ next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_hand_joint_locations_and_get_next_pointer`\ (\ hand_index\: :ref:`int`, next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_instance_create_info_and_get_next_pointer`\ (\ next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_projection_views_and_get_next_pointer`\ (\ view_index\: :ref:`int`, next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_reference_space_create_info_and_get_next_pointer`\ (\ reference_space_type\: :ref:`int`, next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_session_create_and_get_next_pointer`\ (\ next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_swapchain_create_info_and_get_next_pointer`\ (\ next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_system_properties_and_get_next_pointer`\ (\ next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_view_locate_info_and_get_next_pointer`\ (\ next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_set_viewport_composition_layer_and_get_next_pointer`\ (\ layer\: ``const void*``, property_values\: :ref:`Dictionary`, next_pointer\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`OpenXRAPIExtension` | :ref:`get_openxr_api`\ (\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`register_extension_wrapper`\ (\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_OpenXRExtensionWrapper_private_method__get_composition_layer: + +.. rst-class:: classref-method + +:ref:`int` **_get_composition_layer**\ (\ index\: :ref:`int`\ ) |virtual| :ref:`🔗` + +Returns a pointer to an ``XrCompositionLayerBaseHeader`` struct to provide the given composition layer. + +This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_composition_layer_provider()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__get_composition_layer_count: + +.. rst-class:: classref-method + +:ref:`int` **_get_composition_layer_count**\ (\ ) |virtual| :ref:`🔗` + +Returns the number of composition layers this extension wrapper provides via :ref:`_get_composition_layer()`. + +This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_composition_layer_provider()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__get_composition_layer_order: + +.. rst-class:: classref-method + +:ref:`int` **_get_composition_layer_order**\ (\ index\: :ref:`int`\ ) |virtual| :ref:`🔗` + +Returns an integer that will be used to sort the given composition layer provided via :ref:`_get_composition_layer()`. Lower numbers will move the layer to the front of the list, and higher numbers to the end. The default projection layer has an order of ``0``, so layers provided by this method should probably be above or below (but not exactly) ``0``. + +This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_composition_layer_provider()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__get_requested_extensions: + +.. rst-class:: classref-method + +:ref:`Dictionary` **_get_requested_extensions**\ (\ ) |virtual| :ref:`🔗` + +Returns a :ref:`Dictionary` of OpenXR extensions related to this extension. The :ref:`Dictionary` should contain the name of the extension, mapped to a ``bool *`` cast to an integer: + +- If the ``bool *`` is a ``nullptr`` this extension is mandatory. + +- If the ``bool *`` points to a boolean, the boolean will be updated to ``true`` if the extension is enabled. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__get_suggested_tracker_names: + +.. rst-class:: classref-method + +:ref:`PackedStringArray` **_get_suggested_tracker_names**\ (\ ) |virtual| :ref:`🔗` + +Returns a :ref:`PackedStringArray` of positional tracker names that are used within the extension wrapper. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__get_viewport_composition_layer_extension_properties: + +.. rst-class:: classref-method + +:ref:`Array`\[:ref:`Dictionary`\] **_get_viewport_composition_layer_extension_properties**\ (\ ) |virtual| :ref:`🔗` + +Gets an array of :ref:`Dictionary`\ s that represent properties, just like :ref:`Object._get_property_list()`, that will be added to :ref:`OpenXRCompositionLayer` nodes. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__get_viewport_composition_layer_extension_property_defaults: + +.. rst-class:: classref-method + +:ref:`Dictionary` **_get_viewport_composition_layer_extension_property_defaults**\ (\ ) |virtual| :ref:`🔗` + +Gets a :ref:`Dictionary` containing the default values for the properties returned by :ref:`_get_viewport_composition_layer_extension_properties()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_before_instance_created: + +.. rst-class:: classref-method + +|void| **_on_before_instance_created**\ (\ ) |virtual| :ref:`🔗` + +Called before the OpenXR instance is created. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_event_polled: + +.. rst-class:: classref-method + +:ref:`bool` **_on_event_polled**\ (\ event\: ``const void*``\ ) |virtual| :ref:`🔗` + +Called when there is an OpenXR event to process. When implementing, return ``true`` if the event was handled, return ``false`` otherwise. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_instance_created: + +.. rst-class:: classref-method + +|void| **_on_instance_created**\ (\ instance\: :ref:`int`\ ) |virtual| :ref:`🔗` + +Called right after the OpenXR instance is created. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_instance_destroyed: + +.. rst-class:: classref-method + +|void| **_on_instance_destroyed**\ (\ ) |virtual| :ref:`🔗` + +Called right before the OpenXR instance is destroyed. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_main_swapchains_created: + +.. rst-class:: classref-method + +|void| **_on_main_swapchains_created**\ (\ ) |virtual| :ref:`🔗` + +Called right after the main swapchains are (re)created. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_post_draw_viewport: + +.. rst-class:: classref-method + +|void| **_on_post_draw_viewport**\ (\ viewport\: :ref:`RID`\ ) |virtual| :ref:`🔗` + +Called right after the given viewport is rendered. + +\ **Note:** The draw commands might only be queued at this point, not executed. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_pre_draw_viewport: + +.. rst-class:: classref-method + +|void| **_on_pre_draw_viewport**\ (\ viewport\: :ref:`RID`\ ) |virtual| :ref:`🔗` + +Called right before the given viewport is rendered. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_pre_render: + +.. rst-class:: classref-method + +|void| **_on_pre_render**\ (\ ) |virtual| :ref:`🔗` + +Called right before the XR viewports begin their rendering step. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_process: + +.. rst-class:: classref-method + +|void| **_on_process**\ (\ ) |virtual| :ref:`🔗` + +Called as part of the OpenXR process handling. This happens right before general and physics processing steps of the main loop. During this step controller data is queried and made available to game logic. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_register_metadata: + +.. rst-class:: classref-method + +|void| **_on_register_metadata**\ (\ ) |virtual| :ref:`🔗` + +Allows extensions to register additional controller metadata. This function is called even when the OpenXR API is not constructed as the metadata needs to be available to the editor. + +Extensions should also provide metadata regardless of whether they are supported on the host system. The controller data is used to setup action maps for users who may have access to the relevant hardware. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_session_created: + +.. rst-class:: classref-method + +|void| **_on_session_created**\ (\ session\: :ref:`int`\ ) |virtual| :ref:`🔗` + +Called right after the OpenXR session is created. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_session_destroyed: + +.. rst-class:: classref-method + +|void| **_on_session_destroyed**\ (\ ) |virtual| :ref:`🔗` + +Called right before the OpenXR session is destroyed. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_state_exiting: + +.. rst-class:: classref-method + +|void| **_on_state_exiting**\ (\ ) |virtual| :ref:`🔗` + +Called when the OpenXR session state is changed to exiting. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_state_focused: + +.. rst-class:: classref-method + +|void| **_on_state_focused**\ (\ ) |virtual| :ref:`🔗` + +Called when the OpenXR session state is changed to focused. This state is the active state when the game runs. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_state_idle: + +.. rst-class:: classref-method + +|void| **_on_state_idle**\ (\ ) |virtual| :ref:`🔗` + +Called when the OpenXR session state is changed to idle. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_state_loss_pending: + +.. rst-class:: classref-method + +|void| **_on_state_loss_pending**\ (\ ) |virtual| :ref:`🔗` + +Called when the OpenXR session state is changed to loss pending. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_state_ready: + +.. rst-class:: classref-method + +|void| **_on_state_ready**\ (\ ) |virtual| :ref:`🔗` + +Called when the OpenXR session state is changed to ready. This means OpenXR is ready to set up the session. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_state_stopping: + +.. rst-class:: classref-method + +|void| **_on_state_stopping**\ (\ ) |virtual| :ref:`🔗` + +Called when the OpenXR session state is changed to stopping. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_state_synchronized: + +.. rst-class:: classref-method + +|void| **_on_state_synchronized**\ (\ ) |virtual| :ref:`🔗` + +Called when the OpenXR session state is changed to synchronized. OpenXR also returns to this state when the application loses focus. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_state_visible: + +.. rst-class:: classref-method + +|void| **_on_state_visible**\ (\ ) |virtual| :ref:`🔗` + +Called when the OpenXR session state is changed to visible. This means OpenXR is now ready to receive frames. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__on_viewport_composition_layer_destroyed: + +.. rst-class:: classref-method + +|void| **_on_viewport_composition_layer_destroyed**\ (\ layer\: ``const void*``\ ) |virtual| :ref:`🔗` + +Called when a composition layer created via :ref:`OpenXRCompositionLayer` is destroyed. + +\ ``layer`` is a pointer to an ``XrCompositionLayerBaseHeader`` struct. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_android_surface_swapchain_create_info_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_android_surface_swapchain_create_info_and_get_next_pointer**\ (\ property_values\: :ref:`Dictionary`, next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures to Android surface swapchains created by :ref:`OpenXRCompositionLayer`. + +\ ``property_values`` contains the values of the properties returned by :ref:`_get_viewport_composition_layer_extension_properties()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_frame_end_info_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_frame_end_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures to ``XrFrameEndInfo``. + +This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_frame_info_extension()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_frame_wait_info_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_frame_wait_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures to ``XrFrameWaitInfo``. + +This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_frame_info_extension()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_hand_joint_locations_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_hand_joint_locations_and_get_next_pointer**\ (\ hand_index\: :ref:`int`, next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures when each hand tracker is created. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_instance_create_info_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_instance_create_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures when the OpenXR instance is created. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_projection_views_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_projection_views_and_get_next_pointer**\ (\ view_index\: :ref:`int`, next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures to the projection view of the given ``view_index``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_reference_space_create_info_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_reference_space_create_info_and_get_next_pointer**\ (\ reference_space_type\: :ref:`int`, next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures to ``XrReferenceSpaceCreateInfo``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_session_create_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_session_create_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures when the OpenXR session is created. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_swapchain_create_info_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_swapchain_create_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures when creating OpenXR swapchains. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_system_properties_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_system_properties_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures when querying OpenXR system abilities. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_view_locate_info_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_view_locate_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures to ``XrViewLocateInfo``. + +This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_frame_info_extension()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_private_method__set_viewport_composition_layer_and_get_next_pointer: + +.. rst-class:: classref-method + +:ref:`int` **_set_viewport_composition_layer_and_get_next_pointer**\ (\ layer\: ``const void*``, property_values\: :ref:`Dictionary`, next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` + +Adds additional data structures to composition layers created by :ref:`OpenXRCompositionLayer`. + +\ ``property_values`` contains the values of the properties returned by :ref:`_get_viewport_composition_layer_extension_properties()`. + +\ ``layer`` is a pointer to an ``XrCompositionLayerBaseHeader`` struct. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_method_get_openxr_api: + +.. rst-class:: classref-method + +:ref:`OpenXRAPIExtension` **get_openxr_api**\ (\ ) :ref:`🔗` + +Returns the created :ref:`OpenXRAPIExtension`, which can be used to access the OpenXR API. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRExtensionWrapper_method_register_extension_wrapper: + +.. rst-class:: classref-method + +|void| **register_extension_wrapper**\ (\ ) :ref:`🔗` + +Registers the extension. This should happen at core module initialization level. + +.. |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.)` +.. |void| replace:: :abbr:`void (No return value.)` diff --git a/classes/class_openxrextensionwrapperextension.rst b/classes/class_openxrextensionwrapperextension.rst index 626e323ef..17086f0f4 100644 --- a/classes/class_openxrextensionwrapperextension.rst +++ b/classes/class_openxrextensionwrapperextension.rst @@ -10,585 +10,18 @@ OpenXRExtensionWrapperExtension =============================== -**Inherits:** :ref:`Object` +**Deprecated:** Use :ref:`OpenXRExtensionWrapper` instead. -Allows clients to implement OpenXR extensions with GDExtension. +**Inherits:** :ref:`OpenXRExtensionWrapper` **<** :ref:`Object` + +Allows implementing OpenXR extensions with GDExtension. .. rst-class:: classref-introduction-group Description ----------- -**OpenXRExtensionWrapperExtension** allows clients to implement OpenXR extensions with GDExtension. The extension should be registered with :ref:`register_extension_wrapper()`. - -.. rst-class:: classref-reftable-group - -Methods -------- - -.. table:: - :widths: auto - - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_get_composition_layer`\ (\ index\: :ref:`int`\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_get_composition_layer_count`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_get_composition_layer_order`\ (\ index\: :ref:`int`\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_get_requested_extensions`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`_get_suggested_tracker_names`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`_get_viewport_composition_layer_extension_properties`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_get_viewport_composition_layer_extension_property_defaults`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_before_instance_created`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_on_event_polled`\ (\ event\: ``const void*``\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_instance_created`\ (\ instance\: :ref:`int`\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_instance_destroyed`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_main_swapchains_created`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_post_draw_viewport`\ (\ viewport\: :ref:`RID`\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_pre_draw_viewport`\ (\ viewport\: :ref:`RID`\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_pre_render`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_process`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_register_metadata`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_session_created`\ (\ session\: :ref:`int`\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_session_destroyed`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_state_exiting`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_state_focused`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_state_idle`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_state_loss_pending`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_state_ready`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_state_stopping`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_state_synchronized`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_state_visible`\ (\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_on_viewport_composition_layer_destroyed`\ (\ layer\: ``const void*``\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_set_android_surface_swapchain_create_info_and_get_next_pointer`\ (\ property_values\: :ref:`Dictionary`, next_pointer\: ``void*``\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_set_hand_joint_locations_and_get_next_pointer`\ (\ hand_index\: :ref:`int`, next_pointer\: ``void*``\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_set_instance_create_info_and_get_next_pointer`\ (\ next_pointer\: ``void*``\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_set_projection_views_and_get_next_pointer`\ (\ view_index\: :ref:`int`, next_pointer\: ``void*``\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_set_session_create_and_get_next_pointer`\ (\ next_pointer\: ``void*``\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_set_swapchain_create_info_and_get_next_pointer`\ (\ next_pointer\: ``void*``\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_set_system_properties_and_get_next_pointer`\ (\ next_pointer\: ``void*``\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_set_viewport_composition_layer_and_get_next_pointer`\ (\ layer\: ``const void*``, property_values\: :ref:`Dictionary`, next_pointer\: ``void*``\ ) |virtual| | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`OpenXRAPIExtension` | :ref:`get_openxr_api`\ (\ ) | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`register_extension_wrapper`\ (\ ) | - +------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - -.. rst-class:: classref-section-separator - ----- - -.. rst-class:: classref-descriptions-group - -Method Descriptions -------------------- - -.. _class_OpenXRExtensionWrapperExtension_private_method__get_composition_layer: - -.. rst-class:: classref-method - -:ref:`int` **_get_composition_layer**\ (\ index\: :ref:`int`\ ) |virtual| :ref:`🔗` - -Returns a pointer to an ``XrCompositionLayerBaseHeader`` struct to provide the given composition layer. - -This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_composition_layer_provider()`. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__get_composition_layer_count: - -.. rst-class:: classref-method - -:ref:`int` **_get_composition_layer_count**\ (\ ) |virtual| :ref:`🔗` - -Returns the number of composition layers this extension wrapper provides via :ref:`_get_composition_layer()`. - -This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_composition_layer_provider()`. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__get_composition_layer_order: - -.. rst-class:: classref-method - -:ref:`int` **_get_composition_layer_order**\ (\ index\: :ref:`int`\ ) |virtual| :ref:`🔗` - -Returns an integer that will be used to sort the given composition layer provided via :ref:`_get_composition_layer()`. Lower numbers will move the layer to the front of the list, and higher numbers to the end. The default projection layer has an order of ``0``, so layers provided by this method should probably be above or below (but not exactly) ``0``. - -This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_composition_layer_provider()`. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__get_requested_extensions: - -.. rst-class:: classref-method - -:ref:`Dictionary` **_get_requested_extensions**\ (\ ) |virtual| :ref:`🔗` - -Returns a :ref:`Dictionary` of OpenXR extensions related to this extension. The :ref:`Dictionary` should contain the name of the extension, mapped to a ``bool *`` cast to an integer: - -- If the ``bool *`` is a ``nullptr`` this extension is mandatory. - -- If the ``bool *`` points to a boolean, the boolean will be updated to ``true`` if the extension is enabled. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__get_suggested_tracker_names: - -.. rst-class:: classref-method - -:ref:`PackedStringArray` **_get_suggested_tracker_names**\ (\ ) |virtual| :ref:`🔗` - -Returns a :ref:`PackedStringArray` of positional tracker names that are used within the extension wrapper. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__get_viewport_composition_layer_extension_properties: - -.. rst-class:: classref-method - -:ref:`Array`\[:ref:`Dictionary`\] **_get_viewport_composition_layer_extension_properties**\ (\ ) |virtual| :ref:`🔗` - -Gets an array of :ref:`Dictionary`\ s that represent properties, just like :ref:`Object._get_property_list()`, that will be added to :ref:`OpenXRCompositionLayer` nodes. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__get_viewport_composition_layer_extension_property_defaults: - -.. rst-class:: classref-method - -:ref:`Dictionary` **_get_viewport_composition_layer_extension_property_defaults**\ (\ ) |virtual| :ref:`🔗` - -Gets a :ref:`Dictionary` containing the default values for the properties returned by :ref:`_get_viewport_composition_layer_extension_properties()`. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_before_instance_created: - -.. rst-class:: classref-method - -|void| **_on_before_instance_created**\ (\ ) |virtual| :ref:`🔗` - -Called before the OpenXR instance is created. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_event_polled: - -.. rst-class:: classref-method - -:ref:`bool` **_on_event_polled**\ (\ event\: ``const void*``\ ) |virtual| :ref:`🔗` - -Called when there is an OpenXR event to process. When implementing, return ``true`` if the event was handled, return ``false`` otherwise. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_instance_created: - -.. rst-class:: classref-method - -|void| **_on_instance_created**\ (\ instance\: :ref:`int`\ ) |virtual| :ref:`🔗` - -Called right after the OpenXR instance is created. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_instance_destroyed: - -.. rst-class:: classref-method - -|void| **_on_instance_destroyed**\ (\ ) |virtual| :ref:`🔗` - -Called right before the OpenXR instance is destroyed. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_main_swapchains_created: - -.. rst-class:: classref-method - -|void| **_on_main_swapchains_created**\ (\ ) |virtual| :ref:`🔗` - -Called right after the main swapchains are (re)created. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_post_draw_viewport: - -.. rst-class:: classref-method - -|void| **_on_post_draw_viewport**\ (\ viewport\: :ref:`RID`\ ) |virtual| :ref:`🔗` - -Called right after the given viewport is rendered. - -\ **Note:** The draw commands might only be queued at this point, not executed. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_pre_draw_viewport: - -.. rst-class:: classref-method - -|void| **_on_pre_draw_viewport**\ (\ viewport\: :ref:`RID`\ ) |virtual| :ref:`🔗` - -Called right before the given viewport is rendered. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_pre_render: - -.. rst-class:: classref-method - -|void| **_on_pre_render**\ (\ ) |virtual| :ref:`🔗` - -Called right before the XR viewports begin their rendering step. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_process: - -.. rst-class:: classref-method - -|void| **_on_process**\ (\ ) |virtual| :ref:`🔗` - -Called as part of the OpenXR process handling. This happens right before general and physics processing steps of the main loop. During this step controller data is queried and made available to game logic. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_register_metadata: - -.. rst-class:: classref-method - -|void| **_on_register_metadata**\ (\ ) |virtual| :ref:`🔗` - -Allows extensions to register additional controller metadata. This function is called even when the OpenXR API is not constructed as the metadata needs to be available to the editor. - -Extensions should also provide metadata regardless of whether they are supported on the host system. The controller data is used to setup action maps for users who may have access to the relevant hardware. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_session_created: - -.. rst-class:: classref-method - -|void| **_on_session_created**\ (\ session\: :ref:`int`\ ) |virtual| :ref:`🔗` - -Called right after the OpenXR session is created. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_session_destroyed: - -.. rst-class:: classref-method - -|void| **_on_session_destroyed**\ (\ ) |virtual| :ref:`🔗` - -Called right before the OpenXR session is destroyed. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_state_exiting: - -.. rst-class:: classref-method - -|void| **_on_state_exiting**\ (\ ) |virtual| :ref:`🔗` - -Called when the OpenXR session state is changed to exiting. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_state_focused: - -.. rst-class:: classref-method - -|void| **_on_state_focused**\ (\ ) |virtual| :ref:`🔗` - -Called when the OpenXR session state is changed to focused. This state is the active state when the game runs. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_state_idle: - -.. rst-class:: classref-method - -|void| **_on_state_idle**\ (\ ) |virtual| :ref:`🔗` - -Called when the OpenXR session state is changed to idle. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_state_loss_pending: - -.. rst-class:: classref-method - -|void| **_on_state_loss_pending**\ (\ ) |virtual| :ref:`🔗` - -Called when the OpenXR session state is changed to loss pending. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_state_ready: - -.. rst-class:: classref-method - -|void| **_on_state_ready**\ (\ ) |virtual| :ref:`🔗` - -Called when the OpenXR session state is changed to ready. This means OpenXR is ready to set up the session. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_state_stopping: - -.. rst-class:: classref-method - -|void| **_on_state_stopping**\ (\ ) |virtual| :ref:`🔗` - -Called when the OpenXR session state is changed to stopping. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_state_synchronized: - -.. rst-class:: classref-method - -|void| **_on_state_synchronized**\ (\ ) |virtual| :ref:`🔗` - -Called when the OpenXR session state is changed to synchronized. OpenXR also returns to this state when the application loses focus. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_state_visible: - -.. rst-class:: classref-method - -|void| **_on_state_visible**\ (\ ) |virtual| :ref:`🔗` - -Called when the OpenXR session state is changed to visible. This means OpenXR is now ready to receive frames. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__on_viewport_composition_layer_destroyed: - -.. rst-class:: classref-method - -|void| **_on_viewport_composition_layer_destroyed**\ (\ layer\: ``const void*``\ ) |virtual| :ref:`🔗` - -Called when a composition layer created via :ref:`OpenXRCompositionLayer` is destroyed. - -\ ``layer`` is a pointer to an ``XrCompositionLayerBaseHeader`` struct. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__set_android_surface_swapchain_create_info_and_get_next_pointer: - -.. rst-class:: classref-method - -:ref:`int` **_set_android_surface_swapchain_create_info_and_get_next_pointer**\ (\ property_values\: :ref:`Dictionary`, next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` - -Adds additional data structures to Android surface swapchains created by :ref:`OpenXRCompositionLayer`. - -\ ``property_values`` contains the values of the properties returned by :ref:`_get_viewport_composition_layer_extension_properties()`. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__set_hand_joint_locations_and_get_next_pointer: - -.. rst-class:: classref-method - -:ref:`int` **_set_hand_joint_locations_and_get_next_pointer**\ (\ hand_index\: :ref:`int`, next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` - -Adds additional data structures when each hand tracker is created. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__set_instance_create_info_and_get_next_pointer: - -.. rst-class:: classref-method - -:ref:`int` **_set_instance_create_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` - -Adds additional data structures when the OpenXR instance is created. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__set_projection_views_and_get_next_pointer: - -.. rst-class:: classref-method - -:ref:`int` **_set_projection_views_and_get_next_pointer**\ (\ view_index\: :ref:`int`, next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` - -Adds additional data structures to the projection view of the given ``view_index``. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__set_session_create_and_get_next_pointer: - -.. rst-class:: classref-method - -:ref:`int` **_set_session_create_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` - -Adds additional data structures when the OpenXR session is created. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__set_swapchain_create_info_and_get_next_pointer: - -.. rst-class:: classref-method - -:ref:`int` **_set_swapchain_create_info_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` - -Adds additional data structures when creating OpenXR swapchains. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__set_system_properties_and_get_next_pointer: - -.. rst-class:: classref-method - -:ref:`int` **_set_system_properties_and_get_next_pointer**\ (\ next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` - -Adds additional data structures when querying OpenXR system abilities. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_private_method__set_viewport_composition_layer_and_get_next_pointer: - -.. rst-class:: classref-method - -:ref:`int` **_set_viewport_composition_layer_and_get_next_pointer**\ (\ layer\: ``const void*``, property_values\: :ref:`Dictionary`, next_pointer\: ``void*``\ ) |virtual| :ref:`🔗` - -Adds additional data structures to composition layers created by :ref:`OpenXRCompositionLayer`. - -\ ``property_values`` contains the values of the properties returned by :ref:`_get_viewport_composition_layer_extension_properties()`. - -\ ``layer`` is a pointer to an ``XrCompositionLayerBaseHeader`` struct. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_method_get_openxr_api: - -.. rst-class:: classref-method - -:ref:`OpenXRAPIExtension` **get_openxr_api**\ (\ ) :ref:`🔗` - -Returns the created :ref:`OpenXRAPIExtension`, which can be used to access the OpenXR API. - -.. rst-class:: classref-item-separator - ----- - -.. _class_OpenXRExtensionWrapperExtension_method_register_extension_wrapper: - -.. rst-class:: classref-method - -|void| **register_extension_wrapper**\ (\ ) :ref:`🔗` - -Registers the extension. This should happen at core module initialization level. +**OpenXRExtensionWrapperExtension** allows implementing OpenXR extensions with GDExtension. The extension should be registered with :ref:`OpenXRExtensionWrapper.register_extension_wrapper()`. .. |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.)` diff --git a/classes/class_openxrfutureextension.rst b/classes/class_openxrfutureextension.rst new file mode 100644 index 000000000..ea9eb242e --- /dev/null +++ b/classes/class_openxrfutureextension.rst @@ -0,0 +1,100 @@ +: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/modules/openxr/doc_classes/OpenXRFutureExtension.xml. + +.. _class_OpenXRFutureExtension: + +OpenXRFutureExtension +===================== + +**Inherits:** :ref:`OpenXRExtensionWrapper` **<** :ref:`Object` + +The OpenXR Future extension allows for asynchronous APIs to be used. + +.. rst-class:: classref-introduction-group + +Description +----------- + +This is a support extension in OpenXR that allows other OpenXR extensions to start asynchronous functions and get a callback after this function finishes. It is not intended for consumption within GDScript but can be accessed from GDExtension. + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`cancel_future`\ (\ future\: :ref:`int`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_active`\ (\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`OpenXRFutureResult` | :ref:`register_future`\ (\ future\: :ref:`int`, on_success\: :ref:`Callable` = Callable()\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_OpenXRFutureExtension_method_cancel_future: + +.. rst-class:: classref-method + +|void| **cancel_future**\ (\ future\: :ref:`int`\ ) :ref:`🔗` + +Cancels an in-progress future. ``future`` must be an ``XrFutureEXT`` value previously returned by an API that started an asynchronous function. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRFutureExtension_method_is_active: + +.. rst-class:: classref-method + +:ref:`bool` **is_active**\ (\ ) |const| :ref:`🔗` + +Returns ``true`` if futures are available in the OpenXR runtime used. This function will only return a usable result after OpenXR has been initialized. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRFutureExtension_method_register_future: + +.. rst-class:: classref-method + +:ref:`OpenXRFutureResult` **register_future**\ (\ future\: :ref:`int`, on_success\: :ref:`Callable` = Callable()\ ) :ref:`🔗` + +Register an OpenXR Future object so we monitor for completion. ``future`` must be an ``XrFutureEXT`` value previously returned by an API that started an asynchronous function. + +You can optionally specify ``on_success``, it will be invoked on successful completion of the future. + +Or you can use the returned :ref:`OpenXRFutureResult` object to ``await`` its :ref:`OpenXRFutureResult.completed` signal. + +:: + + var future_result = OpenXRFutureExtension.register_future(future) + await future_result.completed + if future_result.get_status() == OpenXRFutureResult.RESULT_FINISHED: + # Handle your success + pass + +.. |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.)` +.. |void| replace:: :abbr:`void (No return value.)` diff --git a/classes/class_openxrfutureresult.rst b/classes/class_openxrfutureresult.rst new file mode 100644 index 000000000..100699f8f --- /dev/null +++ b/classes/class_openxrfutureresult.rst @@ -0,0 +1,144 @@ +: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/modules/openxr/doc_classes/OpenXRFutureResult.xml. + +.. _class_OpenXRFutureResult: + +OpenXRFutureResult +================== + +**Inherits:** :ref:`RefCounted` **<** :ref:`Object` + +Result object tracking the asynchronous result of an OpenXR Future object. + +.. rst-class:: classref-introduction-group + +Description +----------- + +Result object tracking the asynchronous result of an OpenXR Future object, you can use this object to track the result status. + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +-----------------------------------------------------------+-----------------------------------------------------------------------------+ + | |void| | :ref:`cancel_future`\ (\ ) | + +-----------------------------------------------------------+-----------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_future`\ (\ ) |const| | + +-----------------------------------------------------------+-----------------------------------------------------------------------------+ + | :ref:`ResultStatus` | :ref:`get_status`\ (\ ) |const| | + +-----------------------------------------------------------+-----------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Signals +------- + +.. _class_OpenXRFutureResult_signal_completed: + +.. rst-class:: classref-signal + +**completed**\ (\ result\: :ref:`OpenXRFutureResult`\ ) :ref:`🔗` + +Emitted when the asynchronous function is finished or has been cancelled. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Enumerations +------------ + +.. _enum_OpenXRFutureResult_ResultStatus: + +.. rst-class:: classref-enumeration + +enum **ResultStatus**: :ref:`🔗` + +.. _class_OpenXRFutureResult_constant_RESULT_RUNNING: + +.. rst-class:: classref-enumeration-constant + +:ref:`ResultStatus` **RESULT_RUNNING** = ``0`` + +The asynchronous function is running. + +.. _class_OpenXRFutureResult_constant_RESULT_FINISHED: + +.. rst-class:: classref-enumeration-constant + +:ref:`ResultStatus` **RESULT_FINISHED** = ``1`` + +The asynchronous function has finished. + +.. _class_OpenXRFutureResult_constant_RESULT_CANCELLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`ResultStatus` **RESULT_CANCELLED** = ``2`` + +The asynchronous function has been cancelled. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_OpenXRFutureResult_method_cancel_future: + +.. rst-class:: classref-method + +|void| **cancel_future**\ (\ ) :ref:`🔗` + +Cancel this future, this will interrupt and stop the asynchronous function. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRFutureResult_method_get_future: + +.. rst-class:: classref-method + +:ref:`int` **get_future**\ (\ ) |const| :ref:`🔗` + +Return the ``XrFutureEXT`` value this result relates to. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRFutureResult_method_get_status: + +.. rst-class:: classref-method + +:ref:`ResultStatus` **get_status**\ (\ ) |const| :ref:`🔗` + +Returns the status of this result. + +.. |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.)` +.. |void| replace:: :abbr:`void (No return value.)` diff --git a/classes/class_openxrinterface.rst b/classes/class_openxrinterface.rst index b20aacaec..64f3c6e4a 100644 --- a/classes/class_openxrinterface.rst +++ b/classes/class_openxrinterface.rst @@ -93,6 +93,10 @@ Methods +--------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_action_set_active`\ (\ name\: :ref:`String`, active\: :ref:`bool`\ ) | +--------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_cpu_level`\ (\ level\: :ref:`PerfSettingsLevel`\ ) | + +--------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_gpu_level`\ (\ level\: :ref:`PerfSettingsLevel`\ ) | + +--------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_motion_range`\ (\ hand\: :ref:`Hand`, motion_range\: :ref:`HandMotionRange`\ ) | +--------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -105,6 +109,30 @@ Methods Signals ------- +.. _class_OpenXRInterface_signal_cpu_level_changed: + +.. rst-class:: classref-signal + +**cpu_level_changed**\ (\ sub_domain\: :ref:`int`, from_level\: :ref:`int`, to_level\: :ref:`int`\ ) :ref:`🔗` + +Informs the device CPU performance level has changed in the specified subdomain. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRInterface_signal_gpu_level_changed: + +.. rst-class:: classref-signal + +**gpu_level_changed**\ (\ sub_domain\: :ref:`int`, from_level\: :ref:`int`, to_level\: :ref:`int`\ ) :ref:`🔗` + +Informs the device GPU performance level has changed in the specified subdomain. + +.. rst-class:: classref-item-separator + +---- + .. _class_OpenXRInterface_signal_instance_exiting: .. rst-class:: classref-signal @@ -312,7 +340,7 @@ The source of hand tracking is a controller, bone positions are inferred from co :ref:`HandTrackedSource` **HAND_TRACKED_SOURCE_MAX** = ``3`` -Maximum value for the hand tracked source enum. +Represents the size of the :ref:`HandTrackedSource` enum. .. rst-class:: classref-item-separator @@ -378,7 +406,7 @@ Thumb tip joint. :ref:`HandJoints` **HAND_JOINT_INDEX_METACARPAL** = ``6`` -Index metacarpal joint. +Index finger metacarpal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_INDEX_PROXIMAL: @@ -386,7 +414,7 @@ Index metacarpal joint. :ref:`HandJoints` **HAND_JOINT_INDEX_PROXIMAL** = ``7`` -Index proximal joint. +Index finger phalanx proximal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_INDEX_INTERMEDIATE: @@ -394,7 +422,7 @@ Index proximal joint. :ref:`HandJoints` **HAND_JOINT_INDEX_INTERMEDIATE** = ``8`` -Index intermediate joint. +Index finger phalanx intermediate joint. .. _class_OpenXRInterface_constant_HAND_JOINT_INDEX_DISTAL: @@ -402,7 +430,7 @@ Index intermediate joint. :ref:`HandJoints` **HAND_JOINT_INDEX_DISTAL** = ``9`` -Index distal joint. +Index finger phalanx distal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_INDEX_TIP: @@ -410,7 +438,7 @@ Index distal joint. :ref:`HandJoints` **HAND_JOINT_INDEX_TIP** = ``10`` -Index tip joint. +Index finger tip joint. .. _class_OpenXRInterface_constant_HAND_JOINT_MIDDLE_METACARPAL: @@ -418,7 +446,7 @@ Index tip joint. :ref:`HandJoints` **HAND_JOINT_MIDDLE_METACARPAL** = ``11`` -Middle metacarpal joint. +Middle finger metacarpal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_MIDDLE_PROXIMAL: @@ -426,7 +454,7 @@ Middle metacarpal joint. :ref:`HandJoints` **HAND_JOINT_MIDDLE_PROXIMAL** = ``12`` -Middle proximal joint. +Middle finger phalanx proximal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_MIDDLE_INTERMEDIATE: @@ -434,7 +462,7 @@ Middle proximal joint. :ref:`HandJoints` **HAND_JOINT_MIDDLE_INTERMEDIATE** = ``13`` -Middle intermediate joint. +Middle finger phalanx intermediate joint. .. _class_OpenXRInterface_constant_HAND_JOINT_MIDDLE_DISTAL: @@ -442,7 +470,7 @@ Middle intermediate joint. :ref:`HandJoints` **HAND_JOINT_MIDDLE_DISTAL** = ``14`` -Middle distal joint. +Middle finger phalanx distal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_MIDDLE_TIP: @@ -450,7 +478,7 @@ Middle distal joint. :ref:`HandJoints` **HAND_JOINT_MIDDLE_TIP** = ``15`` -Middle tip joint. +Middle finger tip joint. .. _class_OpenXRInterface_constant_HAND_JOINT_RING_METACARPAL: @@ -458,7 +486,7 @@ Middle tip joint. :ref:`HandJoints` **HAND_JOINT_RING_METACARPAL** = ``16`` -Ring metacarpal joint. +Ring finger metacarpal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_RING_PROXIMAL: @@ -466,7 +494,7 @@ Ring metacarpal joint. :ref:`HandJoints` **HAND_JOINT_RING_PROXIMAL** = ``17`` -Ring proximal joint. +Ring finger phalanx proximal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_RING_INTERMEDIATE: @@ -474,7 +502,7 @@ Ring proximal joint. :ref:`HandJoints` **HAND_JOINT_RING_INTERMEDIATE** = ``18`` -Ring intermediate joint. +Ring finger phalanx intermediate joint. .. _class_OpenXRInterface_constant_HAND_JOINT_RING_DISTAL: @@ -482,7 +510,7 @@ Ring intermediate joint. :ref:`HandJoints` **HAND_JOINT_RING_DISTAL** = ``19`` -Ring distal joint. +Ring finger phalanx distal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_RING_TIP: @@ -490,7 +518,7 @@ Ring distal joint. :ref:`HandJoints` **HAND_JOINT_RING_TIP** = ``20`` -Ring tip joint. +Ring finger tip joint. .. _class_OpenXRInterface_constant_HAND_JOINT_LITTLE_METACARPAL: @@ -498,7 +526,7 @@ Ring tip joint. :ref:`HandJoints` **HAND_JOINT_LITTLE_METACARPAL** = ``21`` -Little metacarpal joint. +Pinky finger metacarpal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_LITTLE_PROXIMAL: @@ -506,7 +534,7 @@ Little metacarpal joint. :ref:`HandJoints` **HAND_JOINT_LITTLE_PROXIMAL** = ``22`` -Little proximal joint. +Pinky finger phalanx proximal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_LITTLE_INTERMEDIATE: @@ -514,7 +542,7 @@ Little proximal joint. :ref:`HandJoints` **HAND_JOINT_LITTLE_INTERMEDIATE** = ``23`` -Little intermediate joint. +Pinky finger phalanx intermediate joint. .. _class_OpenXRInterface_constant_HAND_JOINT_LITTLE_DISTAL: @@ -522,7 +550,7 @@ Little intermediate joint. :ref:`HandJoints` **HAND_JOINT_LITTLE_DISTAL** = ``24`` -Little distal joint. +Pinky finger phalanx distal joint. .. _class_OpenXRInterface_constant_HAND_JOINT_LITTLE_TIP: @@ -530,7 +558,7 @@ Little distal joint. :ref:`HandJoints` **HAND_JOINT_LITTLE_TIP** = ``25`` -Little tip joint. +Pinky finger tip joint. .. _class_OpenXRInterface_constant_HAND_JOINT_MAX: @@ -538,7 +566,117 @@ Little tip joint. :ref:`HandJoints` **HAND_JOINT_MAX** = ``26`` -Maximum value for the hand joint enum. +Represents the size of the :ref:`HandJoints` enum. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_OpenXRInterface_PerfSettingsLevel: + +.. rst-class:: classref-enumeration + +enum **PerfSettingsLevel**: :ref:`🔗` + +.. _class_OpenXRInterface_constant_PERF_SETTINGS_LEVEL_POWER_SAVINGS: + +.. rst-class:: classref-enumeration-constant + +:ref:`PerfSettingsLevel` **PERF_SETTINGS_LEVEL_POWER_SAVINGS** = ``0`` + +The application has entered a non-XR section (head-locked / static screen), during which power savings are to be prioritized. + +.. _class_OpenXRInterface_constant_PERF_SETTINGS_LEVEL_SUSTAINED_LOW: + +.. rst-class:: classref-enumeration-constant + +:ref:`PerfSettingsLevel` **PERF_SETTINGS_LEVEL_SUSTAINED_LOW** = ``1`` + +The application has entered a low and stable complexity section, during which reducing power is more important than occasional late rendering frames. + +.. _class_OpenXRInterface_constant_PERF_SETTINGS_LEVEL_SUSTAINED_HIGH: + +.. rst-class:: classref-enumeration-constant + +:ref:`PerfSettingsLevel` **PERF_SETTINGS_LEVEL_SUSTAINED_HIGH** = ``2`` + +The application has entered a high or dynamic complexity section, during which the XR Runtime strives for consistent XR compositing and frame rendering within a thermally sustainable range. + +.. _class_OpenXRInterface_constant_PERF_SETTINGS_LEVEL_BOOST: + +.. rst-class:: classref-enumeration-constant + +:ref:`PerfSettingsLevel` **PERF_SETTINGS_LEVEL_BOOST** = ``3`` + +The application has entered a section with very high complexity, during which the XR Runtime is allowed to step up beyond the thermally sustainable range. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_OpenXRInterface_PerfSettingsSubDomain: + +.. rst-class:: classref-enumeration + +enum **PerfSettingsSubDomain**: :ref:`🔗` + +.. _class_OpenXRInterface_constant_PERF_SETTINGS_SUB_DOMAIN_COMPOSITING: + +.. rst-class:: classref-enumeration-constant + +:ref:`PerfSettingsSubDomain` **PERF_SETTINGS_SUB_DOMAIN_COMPOSITING** = ``0`` + +The compositing performance within the runtime has reached a new level. + +.. _class_OpenXRInterface_constant_PERF_SETTINGS_SUB_DOMAIN_RENDERING: + +.. rst-class:: classref-enumeration-constant + +:ref:`PerfSettingsSubDomain` **PERF_SETTINGS_SUB_DOMAIN_RENDERING** = ``1`` + +The application rendering performance has reached a new level. + +.. _class_OpenXRInterface_constant_PERF_SETTINGS_SUB_DOMAIN_THERMAL: + +.. rst-class:: classref-enumeration-constant + +:ref:`PerfSettingsSubDomain` **PERF_SETTINGS_SUB_DOMAIN_THERMAL** = ``2`` + +The temperature of the device has reached a new level. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_OpenXRInterface_PerfSettingsNotificationLevel: + +.. rst-class:: classref-enumeration + +enum **PerfSettingsNotificationLevel**: :ref:`🔗` + +.. _class_OpenXRInterface_constant_PERF_SETTINGS_NOTIF_LEVEL_NORMAL: + +.. rst-class:: classref-enumeration-constant + +:ref:`PerfSettingsNotificationLevel` **PERF_SETTINGS_NOTIF_LEVEL_NORMAL** = ``0`` + +The sub-domain has reached a level where no further actions other than currently applied are necessary. + +.. _class_OpenXRInterface_constant_PERF_SETTINGS_NOTIF_LEVEL_WARNING: + +.. rst-class:: classref-enumeration-constant + +:ref:`PerfSettingsNotificationLevel` **PERF_SETTINGS_NOTIF_LEVEL_WARNING** = ``1`` + +The sub-domain has reached an early warning level where the application should start proactive mitigation actions. + +.. _class_OpenXRInterface_constant_PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED: + +.. rst-class:: classref-enumeration-constant + +:ref:`PerfSettingsNotificationLevel` **PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED** = ``2`` + +The sub-domain has reached a critical level where the application should start drastic mitigation actions. .. rst-class:: classref-item-separator @@ -944,6 +1082,30 @@ Sets the given action set as active or inactive. ---- +.. _class_OpenXRInterface_method_set_cpu_level: + +.. rst-class:: classref-method + +|void| **set_cpu_level**\ (\ level\: :ref:`PerfSettingsLevel`\ ) :ref:`🔗` + +Sets the CPU performance level of the OpenXR device. + +.. rst-class:: classref-item-separator + +---- + +.. _class_OpenXRInterface_method_set_gpu_level: + +.. rst-class:: classref-method + +|void| **set_gpu_level**\ (\ level\: :ref:`PerfSettingsLevel`\ ) :ref:`🔗` + +Sets the GPU performance level of the OpenXR device. + +.. rst-class:: classref-item-separator + +---- + .. _class_OpenXRInterface_method_set_motion_range: .. rst-class:: classref-method diff --git a/classes/class_optionbutton.rst b/classes/class_optionbutton.rst index fb78fbafe..25d5f6383 100644 --- a/classes/class_optionbutton.rst +++ b/classes/class_optionbutton.rst @@ -62,61 +62,65 @@ Methods .. table:: :widths: auto - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_icon_item`\ (\ texture\: :ref:`Texture2D`, label\: :ref:`String`, id\: :ref:`int` = -1\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_item`\ (\ label\: :ref:`String`, id\: :ref:`int` = -1\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_separator`\ (\ text\: :ref:`String` = ""\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear`\ (\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Texture2D` | :ref:`get_item_icon`\ (\ idx\: :ref:`int`\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_item_id`\ (\ idx\: :ref:`int`\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_item_index`\ (\ id\: :ref:`int`\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`get_item_metadata`\ (\ idx\: :ref:`int`\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_item_text`\ (\ idx\: :ref:`int`\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_item_tooltip`\ (\ idx\: :ref:`int`\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PopupMenu` | :ref:`get_popup`\ (\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_selectable_item`\ (\ from_last\: :ref:`bool` = false\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_selected_id`\ (\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`get_selected_metadata`\ (\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_selectable_items`\ (\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_item_disabled`\ (\ idx\: :ref:`int`\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_item_separator`\ (\ idx\: :ref:`int`\ ) |const| | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`remove_item`\ (\ idx\: :ref:`int`\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`select`\ (\ idx\: :ref:`int`\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_disable_shortcuts`\ (\ disabled\: :ref:`bool`\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_disabled`\ (\ idx\: :ref:`int`, disabled\: :ref:`bool`\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_icon`\ (\ idx\: :ref:`int`, texture\: :ref:`Texture2D`\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_id`\ (\ idx\: :ref:`int`, id\: :ref:`int`\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_metadata`\ (\ idx\: :ref:`int`, metadata\: :ref:`Variant`\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_text`\ (\ idx\: :ref:`int`, text\: :ref:`String`\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_tooltip`\ (\ idx\: :ref:`int`, tooltip\: :ref:`String`\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`show_popup`\ (\ ) | - +-----------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_icon_item`\ (\ texture\: :ref:`Texture2D`, label\: :ref:`String`, id\: :ref:`int` = -1\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_item`\ (\ label\: :ref:`String`, id\: :ref:`int` = -1\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_separator`\ (\ text\: :ref:`String` = ""\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear`\ (\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`AutoTranslateMode` | :ref:`get_item_auto_translate_mode`\ (\ idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Texture2D` | :ref:`get_item_icon`\ (\ idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_item_id`\ (\ idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_item_index`\ (\ id\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`get_item_metadata`\ (\ idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_item_text`\ (\ idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_item_tooltip`\ (\ idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PopupMenu` | :ref:`get_popup`\ (\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_selectable_item`\ (\ from_last\: :ref:`bool` = false\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_selected_id`\ (\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`get_selected_metadata`\ (\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_selectable_items`\ (\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_item_disabled`\ (\ idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_item_separator`\ (\ idx\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`remove_item`\ (\ idx\: :ref:`int`\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`select`\ (\ idx\: :ref:`int`\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_disable_shortcuts`\ (\ disabled\: :ref:`bool`\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_auto_translate_mode`\ (\ idx\: :ref:`int`, mode\: :ref:`AutoTranslateMode`\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_disabled`\ (\ idx\: :ref:`int`, disabled\: :ref:`bool`\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_icon`\ (\ idx\: :ref:`int`, texture\: :ref:`Texture2D`\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_id`\ (\ idx\: :ref:`int`, id\: :ref:`int`\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_metadata`\ (\ idx\: :ref:`int`, metadata\: :ref:`Variant`\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_text`\ (\ idx\: :ref:`int`, text\: :ref:`String`\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_tooltip`\ (\ idx\: :ref:`int`, tooltip\: :ref:`String`\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`show_popup`\ (\ ) | + +-------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -296,6 +300,18 @@ Clears all the items in the **OptionButton**. ---- +.. _class_OptionButton_method_get_item_auto_translate_mode: + +.. rst-class:: classref-method + +:ref:`AutoTranslateMode` **get_item_auto_translate_mode**\ (\ idx\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the auto translate mode of the item at index ``idx``. + +.. rst-class:: classref-item-separator + +---- + .. _class_OptionButton_method_get_item_icon: .. rst-class:: classref-method @@ -494,6 +510,20 @@ If ``true``, shortcuts are disabled and cannot be used to trigger the button. ---- +.. _class_OptionButton_method_set_item_auto_translate_mode: + +.. rst-class:: classref-method + +|void| **set_item_auto_translate_mode**\ (\ idx\: :ref:`int`, mode\: :ref:`AutoTranslateMode`\ ) :ref:`🔗` + +Sets the auto translate mode of the item at index ``idx``. + +Items use :ref:`Node.AUTO_TRANSLATE_MODE_INHERIT` by default, which uses the same auto translate mode as the **OptionButton** itself. + +.. rst-class:: classref-item-separator + +---- + .. _class_OptionButton_method_set_item_disabled: .. rst-class:: classref-method diff --git a/classes/class_os.rst b/classes/class_os.rst index 654f21f52..a1c9ca211 100644 --- a/classes/class_os.rst +++ b/classes/class_os.rst @@ -179,9 +179,9 @@ Methods +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`open_midi_inputs`\ (\ ) | +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedByteArray` | :ref:`read_buffer_from_stdin`\ (\ buffer_size\: :ref:`int`\ ) | + | :ref:`PackedByteArray` | :ref:`read_buffer_from_stdin`\ (\ buffer_size\: :ref:`int` = 1024\ ) | +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`read_string_from_stdin`\ (\ buffer_size\: :ref:`int`\ ) | + | :ref:`String` | :ref:`read_string_from_stdin`\ (\ buffer_size\: :ref:`int` = 1024\ ) | +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`request_permission`\ (\ name\: :ref:`String`\ ) | +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -1223,7 +1223,9 @@ Returns the amount of static memory being used by the program in bytes. Only wor :ref:`StdHandleType` **get_stderr_type**\ (\ ) |const| :ref:`🔗` -Returns type of the standard error device. +Returns the type of the standard error device. + +\ **Note:** This method is implemented on Linux, macOS, and Windows. .. rst-class:: classref-item-separator @@ -1235,7 +1237,11 @@ Returns type of the standard error device. :ref:`StdHandleType` **get_stdin_type**\ (\ ) |const| :ref:`🔗` -Returns type of the standard input device. +Returns the type of the standard input device. + +\ **Note:** This method is implemented on Linux, macOS, and Windows. + +\ **Note:** On exported Windows builds, run the console wrapper executable to access the standard input. If you need a single executable with full console support, use a custom build compiled with the ``windows_subsystem=console`` flag. .. rst-class:: classref-item-separator @@ -1247,7 +1253,9 @@ Returns type of the standard input device. :ref:`StdHandleType` **get_stdout_type**\ (\ ) |const| :ref:`🔗` -Returns type of the standard output device. +Returns the type of the standard output device. + +\ **Note:** This method is implemented on Linux, macOS, and Windows. .. rst-class:: classref-item-separator @@ -1669,9 +1677,9 @@ Initializes the singleton for the system MIDI driver, allowing Godot to receive .. rst-class:: classref-method -:ref:`PackedByteArray` **read_buffer_from_stdin**\ (\ buffer_size\: :ref:`int`\ ) :ref:`🔗` +:ref:`PackedByteArray` **read_buffer_from_stdin**\ (\ buffer_size\: :ref:`int` = 1024\ ) :ref:`🔗` -Reads a user input as raw data from the standard input. This operation can be *blocking*, which causes the window to freeze if :ref:`read_string_from_stdin()` is called on the main thread. +Reads a user input as raw data from the standard input. This operation can be *blocking*, which causes the window to freeze if :ref:`read_buffer_from_stdin()` is called on the main thread. - If standard input is console, this method will block until the program receives a line break in standard input (usually by the user pressing :kbd:`Enter`). @@ -1691,7 +1699,7 @@ Reads a user input as raw data from the standard input. This operation can be *b .. rst-class:: classref-method -:ref:`String` **read_string_from_stdin**\ (\ buffer_size\: :ref:`int`\ ) :ref:`🔗` +:ref:`String` **read_string_from_stdin**\ (\ buffer_size\: :ref:`int` = 1024\ ) :ref:`🔗` Reads a user input as a UTF-8 encoded string from the standard input. This operation can be *blocking*, which causes the window to freeze if :ref:`read_string_from_stdin()` is called on the main thread. diff --git a/classes/class_packedbytearray.rst b/classes/class_packedbytearray.rst index 23d859d29..3fce1518c 100644 --- a/classes/class_packedbytearray.rst +++ b/classes/class_packedbytearray.rst @@ -21,7 +21,7 @@ An array specifically designed to hold bytes. Packs data tightly, so it saves me \ **PackedByteArray** also provides methods to encode/decode various types to/from bytes. The way values are encoded is an implementation detail and shouldn't be relied upon when interacting with external apps. -\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will *not* affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again. +\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. In these cases the returned packed array is a copy, and changing it will *not* affect the original value. To update a built-in property of this type, modify the returned array and then assign it to the property again. .. note:: @@ -58,6 +58,12 @@ Methods +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`bsearch`\ (\ value\: :ref:`int`, before\: :ref:`bool` = true\ ) | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`bswap16`\ (\ offset\: :ref:`int` = 0, count\: :ref:`int` = -1\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`bswap32`\ (\ offset\: :ref:`int` = 0, count\: :ref:`int` = -1\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`bswap64`\ (\ offset\: :ref:`int` = 0, count\: :ref:`int` = -1\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear`\ (\ ) | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedByteArray` | :ref:`compress`\ (\ compression_mode\: :ref:`int` = 0\ ) |const| | @@ -120,6 +126,8 @@ Methods +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`encode_var`\ (\ byte_offset\: :ref:`int`, value\: :ref:`Variant`, allow_objects\: :ref:`bool` = false\ ) | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`int`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`int`\ ) | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`int`, from\: :ref:`int` = 0\ ) |const| | @@ -128,6 +136,8 @@ Methods +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_string_from_ascii`\ (\ ) |const| | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_string_from_multibyte_char`\ (\ encoding\: :ref:`String` = ""\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_string_from_utf8`\ (\ ) |const| | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_string_from_utf16`\ (\ ) |const| | @@ -275,6 +285,42 @@ Finds the index of an existing value (or the insertion index that maintains sort ---- +.. _class_PackedByteArray_method_bswap16: + +.. rst-class:: classref-method + +|void| **bswap16**\ (\ offset\: :ref:`int` = 0, count\: :ref:`int` = -1\ ) :ref:`🔗` + +Swaps the byte order of ``count`` 16-bit segments of the array starting at ``offset``. Swap is done in-place. If ``count`` is less than zero, all segments to the end of array are processed, if processed data size is not a multiple of 2, the byte after the last processed 16-bit segment is not modified. + +.. rst-class:: classref-item-separator + +---- + +.. _class_PackedByteArray_method_bswap32: + +.. rst-class:: classref-method + +|void| **bswap32**\ (\ offset\: :ref:`int` = 0, count\: :ref:`int` = -1\ ) :ref:`🔗` + +Swaps the byte order of ``count`` 32-bit segments of the array starting at ``offset``. Swap is done in-place. If ``count`` is less than zero, all segments to the end of array are processed, if processed data size is not a multiple of 4, bytes after the last processed 32-bit segment are not modified. + +.. rst-class:: classref-item-separator + +---- + +.. _class_PackedByteArray_method_bswap64: + +.. rst-class:: classref-method + +|void| **bswap64**\ (\ offset\: :ref:`int` = 0, count\: :ref:`int` = -1\ ) :ref:`🔗` + +Swaps the byte order of ``count`` 64-bit segments of the array starting at ``offset``. Swap is done in-place. If ``count`` is less than zero, all segments to the end of array are processed, if processed data size is not a multiple of 8, bytes after the last processed 64-bit segment are not modified. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedByteArray_method_clear: .. rst-class:: classref-method @@ -655,6 +701,18 @@ Encodes a :ref:`Variant` at the index of ``byte_offset`` bytes. A ---- +.. _class_PackedByteArray_method_erase: + +.. rst-class:: classref-method + +:ref:`bool` **erase**\ (\ value\: :ref:`int`\ ) :ref:`🔗` + +Removes the first occurrence of a value from the array and returns ``true``. If the value does not exist in the array, nothing happens and ``false`` is returned. To remove an element by index, use :ref:`remove_at()` instead. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedByteArray_method_fill: .. rst-class:: classref-method @@ -703,6 +761,24 @@ Converts ASCII/Latin-1 encoded array to :ref:`String`. Fast altern ---- +.. _class_PackedByteArray_method_get_string_from_multibyte_char: + +.. rst-class:: classref-method + +:ref:`String` **get_string_from_multibyte_char**\ (\ encoding\: :ref:`String` = ""\ ) |const| :ref:`🔗` + +Converts system multibyte code page encoded array to :ref:`String`. If conversion fails, empty string is returned. This is the inverse of :ref:`String.to_multibyte_char_buffer()`. + +The values permitted for ``encoding`` are system dependent. If ``encoding`` is empty string, system default encoding is used. + +- For Windows, see `Code Page Identifiers `__ .NET names. + +- For macOS and Linux/BSD, see ``libiconv`` library documentation and ``iconv --list`` for a list of supported encodings. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedByteArray_method_get_string_from_utf8: .. rst-class:: classref-method @@ -721,7 +797,7 @@ Converts UTF-8 encoded array to :ref:`String`. Slower than :ref:`g :ref:`String` **get_string_from_utf16**\ (\ ) |const| :ref:`🔗` -Converts UTF-16 encoded array to :ref:`String`. If the BOM is missing, system endianness is assumed. Returns empty string if source array is not valid UTF-16 string. This is the inverse of :ref:`String.to_utf16_buffer()`. +Converts UTF-16 encoded array to :ref:`String`. If the BOM is missing, little-endianness is assumed. Returns empty string if source array is not valid UTF-16 string. This is the inverse of :ref:`String.to_utf16_buffer()`. .. rst-class:: classref-item-separator @@ -733,7 +809,7 @@ Converts UTF-16 encoded array to :ref:`String`. If the BOM is miss :ref:`String` **get_string_from_utf32**\ (\ ) |const| :ref:`🔗` -Converts UTF-32 encoded array to :ref:`String`. System endianness is assumed. Returns empty string if source array is not valid UTF-32 string. This is the inverse of :ref:`String.to_utf32_buffer()`. +Converts UTF-32 encoded array to :ref:`String`. Returns empty string if source array is not valid UTF-32 string. This is the inverse of :ref:`String.to_utf32_buffer()`. .. rst-class:: classref-item-separator @@ -858,6 +934,8 @@ Removes an element from the array by index. Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling :ref:`resize()` once and assigning the new values is faster than adding new elements one by one. +Returns :ref:`@GlobalScope.OK` on success, or one of the following :ref:`Error` constants if this method fails: :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the size is negative, or :ref:`@GlobalScope.ERR_OUT_OF_MEMORY` if allocations fail. Use :ref:`size()` to find the actual size of the array after resize. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_packedcolorarray.rst b/classes/class_packedcolorarray.rst index 58b78c991..cf9fea9bc 100644 --- a/classes/class_packedcolorarray.rst +++ b/classes/class_packedcolorarray.rst @@ -21,7 +21,7 @@ An array specifically designed to hold :ref:`Color`. Packs data tig \ **Differences between packed arrays, typed arrays, and untyped arrays:** Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. **PackedColorArray** versus ``Array[Color]``). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as :ref:`Array.map()`. Typed arrays are in turn faster to iterate on and modify than untyped arrays. -\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will *not* affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again. +\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. In these cases the returned packed array is a copy, and changing it will *not* affect the original value. To update a built-in property of this type, modify the returned array and then assign it to the property again. .. note:: @@ -64,6 +64,8 @@ Methods +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedColorArray` | :ref:`duplicate`\ (\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`Color`\ ) | + +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`Color`\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`Color`, from\: :ref:`int` = 0\ ) |const| | @@ -241,6 +243,18 @@ Creates a copy of the array, and returns it. ---- +.. _class_PackedColorArray_method_erase: + +.. rst-class:: classref-method + +:ref:`bool` **erase**\ (\ value\: :ref:`Color`\ ) :ref:`🔗` + +Removes the first occurrence of a value from the array and returns ``true``. If the value does not exist in the array, nothing happens and ``false`` is returned. To remove an element by index, use :ref:`remove_at()` instead. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedColorArray_method_fill: .. rst-class:: classref-method @@ -345,6 +359,8 @@ Removes an element from the array by index. Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling :ref:`resize()` once and assigning the new values is faster than adding new elements one by one. +Returns :ref:`@GlobalScope.OK` on success, or one of the following :ref:`Error` constants if this method fails: :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the size is negative, or :ref:`@GlobalScope.ERR_OUT_OF_MEMORY` if allocations fail. Use :ref:`size()` to find the actual size of the array after resize. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_packedfloat32array.rst b/classes/class_packedfloat32array.rst index 8d107ebb6..d321550b2 100644 --- a/classes/class_packedfloat32array.rst +++ b/classes/class_packedfloat32array.rst @@ -21,7 +21,7 @@ An array specifically designed to hold 32-bit floating-point values (float). Pac If you need to pack 64-bit floats tightly, see :ref:`PackedFloat64Array`. -\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will *not* affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again. +\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. In these cases the returned packed array is a copy, and changing it will *not* affect the original value. To update a built-in property of this type, modify the returned array and then assign it to the property again. .. note:: @@ -64,6 +64,8 @@ Methods +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedFloat32Array` | :ref:`duplicate`\ (\ ) | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`float`\ ) | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`float`\ ) | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`float`, from\: :ref:`int` = 0\ ) |const| | @@ -239,6 +241,20 @@ Creates a copy of the array, and returns it. ---- +.. _class_PackedFloat32Array_method_erase: + +.. rst-class:: classref-method + +:ref:`bool` **erase**\ (\ value\: :ref:`float`\ ) :ref:`🔗` + +Removes the first occurrence of a value from the array and returns ``true``. If the value does not exist in the array, nothing happens and ``false`` is returned. To remove an element by index, use :ref:`remove_at()` instead. + +\ **Note:** :ref:`@GDScript.NAN` doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedFloat32Array_method_fill: .. rst-class:: classref-method @@ -347,6 +363,8 @@ Removes an element from the array by index. Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling :ref:`resize()` once and assigning the new values is faster than adding new elements one by one. +Returns :ref:`@GlobalScope.OK` on success, or one of the following :ref:`Error` constants if this method fails: :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the size is negative, or :ref:`@GlobalScope.ERR_OUT_OF_MEMORY` if allocations fail. Use :ref:`size()` to find the actual size of the array after resize. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_packedfloat64array.rst b/classes/class_packedfloat64array.rst index 749ef0852..d044dfacc 100644 --- a/classes/class_packedfloat64array.rst +++ b/classes/class_packedfloat64array.rst @@ -23,7 +23,7 @@ If you only need to pack 32-bit floats tightly, see :ref:`PackedFloat32Array`. Typed arrays are in turn faster to iterate on and modify than untyped arrays. -\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will *not* affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again. +\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. In these cases the returned packed array is a copy, and changing it will *not* affect the original value. To update a built-in property of this type, modify the returned array and then assign it to the property again. .. note:: @@ -66,6 +66,8 @@ Methods +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedFloat64Array` | :ref:`duplicate`\ (\ ) | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`float`\ ) | + +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`float`\ ) | +-----------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`float`, from\: :ref:`int` = 0\ ) |const| | @@ -241,6 +243,20 @@ Creates a copy of the array, and returns it. ---- +.. _class_PackedFloat64Array_method_erase: + +.. rst-class:: classref-method + +:ref:`bool` **erase**\ (\ value\: :ref:`float`\ ) :ref:`🔗` + +Removes the first occurrence of a value from the array and returns ``true``. If the value does not exist in the array, nothing happens and ``false`` is returned. To remove an element by index, use :ref:`remove_at()` instead. + +\ **Note:** :ref:`@GDScript.NAN` doesn't behave the same as other numbers. Therefore, the results from this method may not be accurate if NaNs are included. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedFloat64Array_method_fill: .. rst-class:: classref-method @@ -349,6 +365,8 @@ Removes an element from the array by index. Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling :ref:`resize()` once and assigning the new values is faster than adding new elements one by one. +Returns :ref:`@GlobalScope.OK` on success, or one of the following :ref:`Error` constants if this method fails: :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the size is negative, or :ref:`@GlobalScope.ERR_OUT_OF_MEMORY` if allocations fail. Use :ref:`size()` to find the actual size of the array after resize. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_packedint32array.rst b/classes/class_packedint32array.rst index d44049d27..ea19595ff 100644 --- a/classes/class_packedint32array.rst +++ b/classes/class_packedint32array.rst @@ -21,7 +21,7 @@ An array specifically designed to hold 32-bit integer values. Packs data tightly \ **Note:** This type stores signed 32-bit integers, which means it can take values in the interval ``[-2^31, 2^31 - 1]``, i.e. ``[-2147483648, 2147483647]``. Exceeding those bounds will wrap around. In comparison, :ref:`int` uses signed 64-bit integers which can hold much larger values. If you need to pack 64-bit integers tightly, see :ref:`PackedInt64Array`. -\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will *not* affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again. +\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. In these cases the returned packed array is a copy, and changing it will *not* affect the original value. To update a built-in property of this type, modify the returned array and then assign it to the property again. .. note:: @@ -64,6 +64,8 @@ Methods +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt32Array` | :ref:`duplicate`\ (\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`int`\ ) | + +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`int`\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`int`, from\: :ref:`int` = 0\ ) |const| | @@ -235,6 +237,18 @@ Creates a copy of the array, and returns it. ---- +.. _class_PackedInt32Array_method_erase: + +.. rst-class:: classref-method + +:ref:`bool` **erase**\ (\ value\: :ref:`int`\ ) :ref:`🔗` + +Removes the first occurrence of a value from the array and returns ``true``. If the value does not exist in the array, nothing happens and ``false`` is returned. To remove an element by index, use :ref:`remove_at()` instead. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedInt32Array_method_fill: .. rst-class:: classref-method @@ -339,6 +353,8 @@ Removes an element from the array by index. Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling :ref:`resize()` once and assigning the new values is faster than adding new elements one by one. +Returns :ref:`@GlobalScope.OK` on success, or one of the following :ref:`Error` constants if this method fails: :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the size is negative, or :ref:`@GlobalScope.ERR_OUT_OF_MEMORY` if allocations fail. Use :ref:`size()` to find the actual size of the array after resize. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_packedint64array.rst b/classes/class_packedint64array.rst index e99896080..7422979dd 100644 --- a/classes/class_packedint64array.rst +++ b/classes/class_packedint64array.rst @@ -23,7 +23,7 @@ An array specifically designed to hold 64-bit integer values. Packs data tightly \ **Differences between packed arrays, typed arrays, and untyped arrays:** Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. **PackedInt64Array** versus ``Array[int]``). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as :ref:`Array.map()`. Typed arrays are in turn faster to iterate on and modify than untyped arrays. -\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will *not* affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again. +\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. In these cases the returned packed array is a copy, and changing it will *not* affect the original value. To update a built-in property of this type, modify the returned array and then assign it to the property again. .. note:: @@ -66,6 +66,8 @@ Methods +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt64Array` | :ref:`duplicate`\ (\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`int`\ ) | + +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`int`\ ) | +-------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`int`, from\: :ref:`int` = 0\ ) |const| | @@ -237,6 +239,18 @@ Creates a copy of the array, and returns it. ---- +.. _class_PackedInt64Array_method_erase: + +.. rst-class:: classref-method + +:ref:`bool` **erase**\ (\ value\: :ref:`int`\ ) :ref:`🔗` + +Removes the first occurrence of a value from the array and returns ``true``. If the value does not exist in the array, nothing happens and ``false`` is returned. To remove an element by index, use :ref:`remove_at()` instead. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedInt64Array_method_fill: .. rst-class:: classref-method @@ -341,6 +355,8 @@ Removes an element from the array by index. Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling :ref:`resize()` once and assigning the new values is faster than adding new elements one by one. +Returns :ref:`@GlobalScope.OK` on success, or one of the following :ref:`Error` constants if this method fails: :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the size is negative, or :ref:`@GlobalScope.ERR_OUT_OF_MEMORY` if allocations fail. Use :ref:`size()` to find the actual size of the array after resize. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_packedstringarray.rst b/classes/class_packedstringarray.rst index 8903963da..d36d25e85 100644 --- a/classes/class_packedstringarray.rst +++ b/classes/class_packedstringarray.rst @@ -29,7 +29,7 @@ If you want to join the strings in the array, use :ref:`String.join()`. Typed arrays are in turn faster to iterate on and modify than untyped arrays. -\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will *not* affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again. +\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. In these cases the returned packed array is a copy, and changing it will *not* affect the original value. To update a built-in property of this type, modify the returned array and then assign it to the property again. .. note:: @@ -79,6 +79,8 @@ Methods +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedStringArray` | :ref:`duplicate`\ (\ ) | +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`String`\ ) | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`String`\ ) | +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`String`, from\: :ref:`int` = 0\ ) |const| | @@ -250,6 +252,18 @@ Creates a copy of the array, and returns it. ---- +.. _class_PackedStringArray_method_erase: + +.. rst-class:: classref-method + +:ref:`bool` **erase**\ (\ value\: :ref:`String`\ ) :ref:`🔗` + +Removes the first occurrence of a value from the array and returns ``true``. If the value does not exist in the array, nothing happens and ``false`` is returned. To remove an element by index, use :ref:`remove_at()` instead. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedStringArray_method_fill: .. rst-class:: classref-method @@ -354,6 +368,8 @@ Removes an element from the array by index. Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling :ref:`resize()` once and assigning the new values is faster than adding new elements one by one. +Returns :ref:`@GlobalScope.OK` on success, or one of the following :ref:`Error` constants if this method fails: :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the size is negative, or :ref:`@GlobalScope.ERR_OUT_OF_MEMORY` if allocations fail. Use :ref:`size()` to find the actual size of the array after resize. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_packedvector2array.rst b/classes/class_packedvector2array.rst index fabd1a9c7..898ce5e8c 100644 --- a/classes/class_packedvector2array.rst +++ b/classes/class_packedvector2array.rst @@ -21,7 +21,7 @@ An array specifically designed to hold :ref:`Vector2`. Packs data \ **Differences between packed arrays, typed arrays, and untyped arrays:** Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. **PackedVector2Array** versus ``Array[Vector2]``). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as :ref:`Array.map()`. Typed arrays are in turn faster to iterate on and modify than untyped arrays. -\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will *not* affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again. +\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. In these cases the returned packed array is a copy, and changing it will *not* affect the original value. To update a built-in property of this type, modify the returned array and then assign it to the property again. .. note:: @@ -71,6 +71,8 @@ Methods +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector2Array` | :ref:`duplicate`\ (\ ) | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`Vector2`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`Vector2`\ ) | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`Vector2`, from\: :ref:`int` = 0\ ) |const| | @@ -254,6 +256,20 @@ Creates a copy of the array, and returns it. ---- +.. _class_PackedVector2Array_method_erase: + +.. rst-class:: classref-method + +:ref:`bool` **erase**\ (\ value\: :ref:`Vector2`\ ) :ref:`🔗` + +Removes the first occurrence of a value from the array and returns ``true``. If the value does not exist in the array, nothing happens and ``false`` is returned. To remove an element by index, use :ref:`remove_at()` instead. + +\ **Note:** Vectors with :ref:`@GDScript.NAN` elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedVector2Array_method_fill: .. rst-class:: classref-method @@ -362,6 +378,8 @@ Removes an element from the array by index. Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling :ref:`resize()` once and assigning the new values is faster than adding new elements one by one. +Returns :ref:`@GlobalScope.OK` on success, or one of the following :ref:`Error` constants if this method fails: :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the size is negative, or :ref:`@GlobalScope.ERR_OUT_OF_MEMORY` if allocations fail. Use :ref:`size()` to find the actual size of the array after resize. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_packedvector3array.rst b/classes/class_packedvector3array.rst index f8cda061e..bb55dac1c 100644 --- a/classes/class_packedvector3array.rst +++ b/classes/class_packedvector3array.rst @@ -21,7 +21,7 @@ An array specifically designed to hold :ref:`Vector3`. Packs data \ **Differences between packed arrays, typed arrays, and untyped arrays:** Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. **PackedVector3Array** versus ``Array[Vector3]``). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as :ref:`Array.map()`. Typed arrays are in turn faster to iterate on and modify than untyped arrays. -\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will *not* affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again. +\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. In these cases the returned packed array is a copy, and changing it will *not* affect the original value. To update a built-in property of this type, modify the returned array and then assign it to the property again. .. note:: @@ -64,6 +64,8 @@ Methods +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector3Array` | :ref:`duplicate`\ (\ ) | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`Vector3`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`Vector3`\ ) | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`Vector3`, from\: :ref:`int` = 0\ ) |const| | @@ -247,6 +249,20 @@ Creates a copy of the array, and returns it. ---- +.. _class_PackedVector3Array_method_erase: + +.. rst-class:: classref-method + +:ref:`bool` **erase**\ (\ value\: :ref:`Vector3`\ ) :ref:`🔗` + +Removes the first occurrence of a value from the array and returns ``true``. If the value does not exist in the array, nothing happens and ``false`` is returned. To remove an element by index, use :ref:`remove_at()` instead. + +\ **Note:** Vectors with :ref:`@GDScript.NAN` elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedVector3Array_method_fill: .. rst-class:: classref-method @@ -355,6 +371,8 @@ Removes an element from the array by index. Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling :ref:`resize()` once and assigning the new values is faster than adding new elements one by one. +Returns :ref:`@GlobalScope.OK` on success, or one of the following :ref:`Error` constants if this method fails: :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the size is negative, or :ref:`@GlobalScope.ERR_OUT_OF_MEMORY` if allocations fail. Use :ref:`size()` to find the actual size of the array after resize. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_packedvector4array.rst b/classes/class_packedvector4array.rst index eefec7bba..cfd0bb4fb 100644 --- a/classes/class_packedvector4array.rst +++ b/classes/class_packedvector4array.rst @@ -21,7 +21,7 @@ An array specifically designed to hold :ref:`Vector4`. Packs data \ **Differences between packed arrays, typed arrays, and untyped arrays:** Packed arrays are generally faster to iterate on and modify compared to a typed array of the same type (e.g. **PackedVector4Array** versus ``Array[Vector4]``). Also, packed arrays consume less memory. As a downside, packed arrays are less flexible as they don't offer as many convenience methods such as :ref:`Array.map()`. Typed arrays are in turn faster to iterate on and modify than untyped arrays. -\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. The returned packed array of these are a copies, and changing it will *not* affect the original value. To update a built-in property you need to modify the returned array, and then assign it to the property again. +\ **Note:** Packed arrays are always passed by reference. To get a copy of an array that can be modified independently of the original array, use :ref:`duplicate()`. This is *not* the case for built-in properties and methods. In these cases the returned packed array is a copy, and changing it will *not* affect the original value. To update a built-in property of this type, modify the returned array and then assign it to the property again. .. note:: @@ -64,6 +64,8 @@ Methods +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedVector4Array` | :ref:`duplicate`\ (\ ) | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`erase`\ (\ value\: :ref:`Vector4`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`fill`\ (\ value\: :ref:`Vector4`\ ) | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`find`\ (\ value\: :ref:`Vector4`, from\: :ref:`int` = 0\ ) |const| | @@ -245,6 +247,20 @@ Creates a copy of the array, and returns it. ---- +.. _class_PackedVector4Array_method_erase: + +.. rst-class:: classref-method + +:ref:`bool` **erase**\ (\ value\: :ref:`Vector4`\ ) :ref:`🔗` + +Removes the first occurrence of a value from the array and returns ``true``. If the value does not exist in the array, nothing happens and ``false`` is returned. To remove an element by index, use :ref:`remove_at()` instead. + +\ **Note:** Vectors with :ref:`@GDScript.NAN` elements don't behave the same as other vectors. Therefore, the results from this method may not be accurate if NaNs are included. + +.. rst-class:: classref-item-separator + +---- + .. _class_PackedVector4Array_method_fill: .. rst-class:: classref-method @@ -351,7 +367,9 @@ Removes an element from the array by index. :ref:`int` **resize**\ (\ new_size\: :ref:`int`\ ) :ref:`🔗` -Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. +Sets the size of the array. If the array is grown, reserves elements at the end of the array. If the array is shrunk, truncates the array to the new size. Calling :ref:`resize()` once and assigning the new values is faster than adding new elements one by one. + +Returns :ref:`@GlobalScope.OK` on success, or one of the following :ref:`Error` constants if this method fails: :ref:`@GlobalScope.ERR_INVALID_PARAMETER` if the size is negative, or :ref:`@GlobalScope.ERR_OUT_OF_MEMORY` if allocations fail. Use :ref:`size()` to find the actual size of the array after resize. .. rst-class:: classref-item-separator diff --git a/classes/class_path3d.rst b/classes/class_path3d.rst index 500c6ba95..cf562f85e 100644 --- a/classes/class_path3d.rst +++ b/classes/class_path3d.rst @@ -31,9 +31,11 @@ Properties .. table:: :widths: auto - +-------------------------------+-------------------------------------------+ - | :ref:`Curve3D` | :ref:`curve` | - +-------------------------------+-------------------------------------------+ + +-------------------------------+---------------------------------------------------------------------+-----------------------+ + | :ref:`Curve3D` | :ref:`curve` | | + +-------------------------------+---------------------------------------------------------------------+-----------------------+ + | :ref:`Color` | :ref:`debug_custom_color` | ``Color(0, 0, 0, 1)`` | + +-------------------------------+---------------------------------------------------------------------+-----------------------+ .. rst-class:: classref-section-separator @@ -52,6 +54,18 @@ Signals Emitted when the :ref:`curve` changes. +.. rst-class:: classref-item-separator + +---- + +.. _class_Path3D_signal_debug_color_changed: + +.. rst-class:: classref-signal + +**debug_color_changed**\ (\ ) :ref:`🔗` + +Emitted when the :ref:`debug_custom_color` changes. + .. rst-class:: classref-section-separator ---- @@ -74,6 +88,25 @@ Property Descriptions A :ref:`Curve3D` describing the path. +.. rst-class:: classref-item-separator + +---- + +.. _class_Path3D_property_debug_custom_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug_custom_color** = ``Color(0, 0, 0, 1)`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_debug_custom_color**\ (\ value\: :ref:`Color`\ ) +- :ref:`Color` **get_debug_custom_color**\ (\ ) + +The custom color to use to draw the shape in the editor. + +If set to ``Color(0.0, 0.0, 0.0)`` (by default), the color set in EditorSettings is used. + .. |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.)` diff --git a/classes/class_performance.rst b/classes/class_performance.rst index a321e1987..03a6869c5 100644 --- a/classes/class_performance.rst +++ b/classes/class_performance.rst @@ -266,7 +266,7 @@ Output latency of the :ref:`AudioServer`. Equivalent to calli :ref:`Monitor` **NAVIGATION_ACTIVE_MAPS** = ``24`` -Number of active navigation maps in the :ref:`NavigationServer3D`. This also includes the two empty default navigation maps created by World2D and World3D. +Number of active navigation maps in :ref:`NavigationServer2D` and :ref:`NavigationServer3D`. This also includes the two empty default navigation maps created by World2D and World3D. .. _class_Performance_constant_NAVIGATION_REGION_COUNT: @@ -274,7 +274,7 @@ Number of active navigation maps in the :ref:`NavigationServer3D` **NAVIGATION_REGION_COUNT** = ``25`` -Number of active navigation regions in the :ref:`NavigationServer3D`. +Number of active navigation regions in :ref:`NavigationServer2D` and :ref:`NavigationServer3D`. .. _class_Performance_constant_NAVIGATION_AGENT_COUNT: @@ -282,7 +282,7 @@ Number of active navigation regions in the :ref:`NavigationServer3D` **NAVIGATION_AGENT_COUNT** = ``26`` -Number of active navigation agents processing avoidance in the :ref:`NavigationServer3D`. +Number of active navigation agents processing avoidance in :ref:`NavigationServer2D` and :ref:`NavigationServer3D`. .. _class_Performance_constant_NAVIGATION_LINK_COUNT: @@ -290,7 +290,7 @@ Number of active navigation agents processing avoidance in the :ref:`NavigationS :ref:`Monitor` **NAVIGATION_LINK_COUNT** = ``27`` -Number of active navigation links in the :ref:`NavigationServer3D`. +Number of active navigation links in :ref:`NavigationServer2D` and :ref:`NavigationServer3D`. .. _class_Performance_constant_NAVIGATION_POLYGON_COUNT: @@ -298,7 +298,7 @@ Number of active navigation links in the :ref:`NavigationServer3D` **NAVIGATION_POLYGON_COUNT** = ``28`` -Number of navigation mesh polygons in the :ref:`NavigationServer3D`. +Number of navigation mesh polygons in :ref:`NavigationServer2D` and :ref:`NavigationServer3D`. .. _class_Performance_constant_NAVIGATION_EDGE_COUNT: @@ -306,7 +306,7 @@ Number of navigation mesh polygons in the :ref:`NavigationServer3D` **NAVIGATION_EDGE_COUNT** = ``29`` -Number of navigation mesh polygon edges in the :ref:`NavigationServer3D`. +Number of navigation mesh polygon edges in :ref:`NavigationServer2D` and :ref:`NavigationServer3D`. .. _class_Performance_constant_NAVIGATION_EDGE_MERGE_COUNT: @@ -314,7 +314,7 @@ Number of navigation mesh polygon edges in the :ref:`NavigationServer3D` **NAVIGATION_EDGE_MERGE_COUNT** = ``30`` -Number of navigation mesh polygon edges that were merged due to edge key overlap in the :ref:`NavigationServer3D`. +Number of navigation mesh polygon edges that were merged due to edge key overlap in :ref:`NavigationServer2D` and :ref:`NavigationServer3D`. .. _class_Performance_constant_NAVIGATION_EDGE_CONNECTION_COUNT: @@ -322,7 +322,7 @@ Number of navigation mesh polygon edges that were merged due to edge key overlap :ref:`Monitor` **NAVIGATION_EDGE_CONNECTION_COUNT** = ``31`` -Number of polygon edges that are considered connected by edge proximity :ref:`NavigationServer3D`. +Number of polygon edges that are considered connected by edge proximity :ref:`NavigationServer2D` and :ref:`NavigationServer3D`. .. _class_Performance_constant_NAVIGATION_EDGE_FREE_COUNT: @@ -330,7 +330,7 @@ Number of polygon edges that are considered connected by edge proximity :ref:`Na :ref:`Monitor` **NAVIGATION_EDGE_FREE_COUNT** = ``32`` -Number of navigation mesh polygon edges that could not be merged in the :ref:`NavigationServer3D`. The edges still may be connected by edge proximity or with links. +Number of navigation mesh polygon edges that could not be merged in :ref:`NavigationServer2D` and :ref:`NavigationServer3D`. The edges still may be connected by edge proximity or with links. .. _class_Performance_constant_NAVIGATION_OBSTACLE_COUNT: @@ -338,7 +338,7 @@ Number of navigation mesh polygon edges that could not be merged in the :ref:`Na :ref:`Monitor` **NAVIGATION_OBSTACLE_COUNT** = ``33`` -Number of active navigation obstacles in the :ref:`NavigationServer3D`. +Number of active navigation obstacles in the :ref:`NavigationServer2D` and :ref:`NavigationServer3D`. .. _class_Performance_constant_PIPELINE_COMPILATIONS_CANVAS: @@ -380,11 +380,171 @@ Number of pipeline compilations that were triggered while drawing the scene. The Number of pipeline compilations that were triggered to optimize the current scene. These compilations are done in the background and should not cause any stutters whatsoever. +.. _class_Performance_constant_NAVIGATION_2D_ACTIVE_MAPS: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_2D_ACTIVE_MAPS** = ``39`` + +Number of active navigation maps in the :ref:`NavigationServer2D`. This also includes the two empty default navigation maps created by World2D. + +.. _class_Performance_constant_NAVIGATION_2D_REGION_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_2D_REGION_COUNT** = ``40`` + +Number of active navigation regions in the :ref:`NavigationServer2D`. + +.. _class_Performance_constant_NAVIGATION_2D_AGENT_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_2D_AGENT_COUNT** = ``41`` + +Number of active navigation agents processing avoidance in the :ref:`NavigationServer2D`. + +.. _class_Performance_constant_NAVIGATION_2D_LINK_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_2D_LINK_COUNT** = ``42`` + +Number of active navigation links in the :ref:`NavigationServer2D`. + +.. _class_Performance_constant_NAVIGATION_2D_POLYGON_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_2D_POLYGON_COUNT** = ``43`` + +Number of navigation mesh polygons in the :ref:`NavigationServer2D`. + +.. _class_Performance_constant_NAVIGATION_2D_EDGE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_2D_EDGE_COUNT** = ``44`` + +Number of navigation mesh polygon edges in the :ref:`NavigationServer2D`. + +.. _class_Performance_constant_NAVIGATION_2D_EDGE_MERGE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_2D_EDGE_MERGE_COUNT** = ``45`` + +Number of navigation mesh polygon edges that were merged due to edge key overlap in the :ref:`NavigationServer2D`. + +.. _class_Performance_constant_NAVIGATION_2D_EDGE_CONNECTION_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_2D_EDGE_CONNECTION_COUNT** = ``46`` + +Number of polygon edges that are considered connected by edge proximity :ref:`NavigationServer2D`. + +.. _class_Performance_constant_NAVIGATION_2D_EDGE_FREE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_2D_EDGE_FREE_COUNT** = ``47`` + +Number of navigation mesh polygon edges that could not be merged in the :ref:`NavigationServer2D`. The edges still may be connected by edge proximity or with links. + +.. _class_Performance_constant_NAVIGATION_2D_OBSTACLE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_2D_OBSTACLE_COUNT** = ``48`` + +Number of active navigation obstacles in the :ref:`NavigationServer2D`. + +.. _class_Performance_constant_NAVIGATION_3D_ACTIVE_MAPS: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_3D_ACTIVE_MAPS** = ``49`` + +Number of active navigation maps in the :ref:`NavigationServer3D`. This also includes the two empty default navigation maps created by World3D. + +.. _class_Performance_constant_NAVIGATION_3D_REGION_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_3D_REGION_COUNT** = ``50`` + +Number of active navigation regions in the :ref:`NavigationServer3D`. + +.. _class_Performance_constant_NAVIGATION_3D_AGENT_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_3D_AGENT_COUNT** = ``51`` + +Number of active navigation agents processing avoidance in the :ref:`NavigationServer3D`. + +.. _class_Performance_constant_NAVIGATION_3D_LINK_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_3D_LINK_COUNT** = ``52`` + +Number of active navigation links in the :ref:`NavigationServer3D`. + +.. _class_Performance_constant_NAVIGATION_3D_POLYGON_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_3D_POLYGON_COUNT** = ``53`` + +Number of navigation mesh polygons in the :ref:`NavigationServer3D`. + +.. _class_Performance_constant_NAVIGATION_3D_EDGE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_3D_EDGE_COUNT** = ``54`` + +Number of navigation mesh polygon edges in the :ref:`NavigationServer3D`. + +.. _class_Performance_constant_NAVIGATION_3D_EDGE_MERGE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_3D_EDGE_MERGE_COUNT** = ``55`` + +Number of navigation mesh polygon edges that were merged due to edge key overlap in the :ref:`NavigationServer3D`. + +.. _class_Performance_constant_NAVIGATION_3D_EDGE_CONNECTION_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_3D_EDGE_CONNECTION_COUNT** = ``56`` + +Number of polygon edges that are considered connected by edge proximity :ref:`NavigationServer3D`. + +.. _class_Performance_constant_NAVIGATION_3D_EDGE_FREE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_3D_EDGE_FREE_COUNT** = ``57`` + +Number of navigation mesh polygon edges that could not be merged in the :ref:`NavigationServer3D`. The edges still may be connected by edge proximity or with links. + +.. _class_Performance_constant_NAVIGATION_3D_OBSTACLE_COUNT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Monitor` **NAVIGATION_3D_OBSTACLE_COUNT** = ``58`` + +Number of active navigation obstacles in the :ref:`NavigationServer3D`. + .. _class_Performance_constant_MONITOR_MAX: .. rst-class:: classref-enumeration-constant -:ref:`Monitor` **MONITOR_MAX** = ``39`` +:ref:`Monitor` **MONITOR_MAX** = ``59`` Represents the size of the :ref:`Monitor` enum. diff --git a/classes/class_physicsdirectspacestate2d.rst b/classes/class_physicsdirectspacestate2d.rst index 46cbfc96c..eea1fadd7 100644 --- a/classes/class_physicsdirectspacestate2d.rst +++ b/classes/class_physicsdirectspacestate2d.rst @@ -99,9 +99,7 @@ Returned points are a list of pairs of contact points. For each pair the first o :ref:`Dictionary` **get_rest_info**\ (\ parameters\: :ref:`PhysicsShapeQueryParameters2D`\ ) :ref:`🔗` -Checks the intersections of a shape, given through a :ref:`PhysicsShapeQueryParameters2D` object, against the space. If it collides with more than one shape, the nearest one is selected. If the shape did not intersect anything, then an empty dictionary is returned instead. - -\ **Note:** This method does not take into account the ``motion`` property of the object. The returned object is a dictionary containing the following fields: +Checks the intersections of a shape, given through a :ref:`PhysicsShapeQueryParameters2D` object, against the space. If it collides with more than one shape, the nearest one is selected. The returned object is a dictionary containing the following fields: \ ``collider_id``: The colliding object's ID. @@ -115,6 +113,8 @@ Checks the intersections of a shape, given through a :ref:`PhysicsShapeQueryPara \ ``shape``: The shape index of the colliding shape. +If the shape did not intersect anything, then an empty dictionary is returned instead. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_physicsdirectspacestate3d.rst b/classes/class_physicsdirectspacestate3d.rst index 11d9e5f03..439383617 100644 --- a/classes/class_physicsdirectspacestate3d.rst +++ b/classes/class_physicsdirectspacestate3d.rst @@ -69,7 +69,7 @@ Method Descriptions :ref:`PackedFloat32Array` **cast_motion**\ (\ parameters\: :ref:`PhysicsShapeQueryParameters3D`\ ) :ref:`🔗` -Checks how far a :ref:`Shape3D` can move without colliding. All the parameters for the query, including the shape, are supplied through a :ref:`PhysicsShapeQueryParameters3D` object. +Checks how far a :ref:`Shape3D` can move without colliding. All the parameters for the query, including the shape and the motion, are supplied through a :ref:`PhysicsShapeQueryParameters3D` object. Returns an array with the safe and unsafe proportions (between 0 and 1) of the motion. The safe proportion is the maximum fraction of the motion that can be made without a collision. The unsafe proportion is the minimum fraction of the distance that must be moved for a collision. If no collision is detected a result of ``[1.0, 1.0]`` will be returned. diff --git a/classes/class_popup.rst b/classes/class_popup.rst index 912e6e85b..5ede05f23 100644 --- a/classes/class_popup.rst +++ b/classes/class_popup.rst @@ -31,19 +31,25 @@ Properties .. table:: :widths: auto - +-------------------------+---------------+-------------------------------------------------------------------------+ - | :ref:`bool` | borderless | ``true`` (overrides :ref:`Window`) | - +-------------------------+---------------+-------------------------------------------------------------------------+ - | :ref:`bool` | popup_window | ``true`` (overrides :ref:`Window`) | - +-------------------------+---------------+-------------------------------------------------------------------------+ - | :ref:`bool` | transient | ``true`` (overrides :ref:`Window`) | - +-------------------------+---------------+-------------------------------------------------------------------------+ - | :ref:`bool` | unresizable | ``true`` (overrides :ref:`Window`) | - +-------------------------+---------------+-------------------------------------------------------------------------+ - | :ref:`bool` | visible | ``false`` (overrides :ref:`Window`) | - +-------------------------+---------------+-------------------------------------------------------------------------+ - | :ref:`bool` | wrap_controls | ``true`` (overrides :ref:`Window`) | - +-------------------------+---------------+-------------------------------------------------------------------------+ + +-------------------------+-------------------+-----------------------------------------------------------------------------+ + | :ref:`bool` | borderless | ``true`` (overrides :ref:`Window`) | + +-------------------------+-------------------+-----------------------------------------------------------------------------+ + | :ref:`bool` | maximize_disabled | ``true`` (overrides :ref:`Window`) | + +-------------------------+-------------------+-----------------------------------------------------------------------------+ + | :ref:`bool` | minimize_disabled | ``true`` (overrides :ref:`Window`) | + +-------------------------+-------------------+-----------------------------------------------------------------------------+ + | :ref:`bool` | popup_window | ``true`` (overrides :ref:`Window`) | + +-------------------------+-------------------+-----------------------------------------------------------------------------+ + | :ref:`bool` | popup_wm_hint | ``true`` (overrides :ref:`Window`) | + +-------------------------+-------------------+-----------------------------------------------------------------------------+ + | :ref:`bool` | transient | ``true`` (overrides :ref:`Window`) | + +-------------------------+-------------------+-----------------------------------------------------------------------------+ + | :ref:`bool` | unresizable | ``true`` (overrides :ref:`Window`) | + +-------------------------+-------------------+-----------------------------------------------------------------------------+ + | :ref:`bool` | visible | ``false`` (overrides :ref:`Window`) | + +-------------------------+-------------------+-----------------------------------------------------------------------------+ + | :ref:`bool` | wrap_controls | ``true`` (overrides :ref:`Window`) | + +-------------------------+-------------------+-----------------------------------------------------------------------------+ .. rst-class:: classref-section-separator diff --git a/classes/class_popupmenu.rst b/classes/class_popupmenu.rst index 1dac31e99..22a3d9635 100644 --- a/classes/class_popupmenu.rst +++ b/classes/class_popupmenu.rst @@ -67,149 +67,153 @@ Methods .. table:: :widths: auto - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`activate_item_by_event`\ (\ event\: :ref:`InputEvent`, for_global_only\: :ref:`bool` = false\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_check_item`\ (\ label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_check_shortcut`\ (\ shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_icon_check_item`\ (\ texture\: :ref:`Texture2D`, label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_icon_check_shortcut`\ (\ texture\: :ref:`Texture2D`, shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_icon_item`\ (\ texture\: :ref:`Texture2D`, label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_icon_radio_check_item`\ (\ texture\: :ref:`Texture2D`, label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_icon_radio_check_shortcut`\ (\ texture\: :ref:`Texture2D`, shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_icon_shortcut`\ (\ texture\: :ref:`Texture2D`, shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false, allow_echo\: :ref:`bool` = false\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_item`\ (\ label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_multistate_item`\ (\ label\: :ref:`String`, max_states\: :ref:`int`, default_state\: :ref:`int` = 0, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_radio_check_item`\ (\ label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_radio_check_shortcut`\ (\ shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_separator`\ (\ label\: :ref:`String` = "", id\: :ref:`int` = -1\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_shortcut`\ (\ shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false, allow_echo\: :ref:`bool` = false\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_submenu_item`\ (\ label\: :ref:`String`, submenu\: :ref:`String`, id\: :ref:`int` = -1\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_submenu_node_item`\ (\ label\: :ref:`String`, submenu\: :ref:`PopupMenu`, id\: :ref:`int` = -1\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear`\ (\ free_submenus\: :ref:`bool` = false\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_focused_item`\ (\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Key` | :ref:`get_item_accelerator`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Texture2D` | :ref:`get_item_icon`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_item_icon_max_width`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`get_item_icon_modulate`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_item_id`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_item_indent`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_item_index`\ (\ id\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_item_language`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`get_item_metadata`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_item_multistate`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_item_multistate_max`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Shortcut` | :ref:`get_item_shortcut`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_item_submenu`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PopupMenu` | :ref:`get_item_submenu_node`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_item_text`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TextDirection` | :ref:`get_item_text_direction`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_item_tooltip`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_item_checkable`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_item_checked`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_item_disabled`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_item_radio_checkable`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_item_separator`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_item_shortcut_disabled`\ (\ index\: :ref:`int`\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_native_menu`\ (\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_system_menu`\ (\ ) |const| | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`remove_item`\ (\ index\: :ref:`int`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`scroll_to_item`\ (\ index\: :ref:`int`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_focused_item`\ (\ index\: :ref:`int`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_accelerator`\ (\ index\: :ref:`int`, accel\: :ref:`Key`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_as_checkable`\ (\ index\: :ref:`int`, enable\: :ref:`bool`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_as_radio_checkable`\ (\ index\: :ref:`int`, enable\: :ref:`bool`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_as_separator`\ (\ index\: :ref:`int`, enable\: :ref:`bool`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_checked`\ (\ index\: :ref:`int`, checked\: :ref:`bool`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_disabled`\ (\ index\: :ref:`int`, disabled\: :ref:`bool`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_icon`\ (\ index\: :ref:`int`, icon\: :ref:`Texture2D`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_icon_max_width`\ (\ index\: :ref:`int`, width\: :ref:`int`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_icon_modulate`\ (\ index\: :ref:`int`, modulate\: :ref:`Color`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_id`\ (\ index\: :ref:`int`, id\: :ref:`int`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_indent`\ (\ index\: :ref:`int`, indent\: :ref:`int`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_language`\ (\ index\: :ref:`int`, language\: :ref:`String`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_metadata`\ (\ index\: :ref:`int`, metadata\: :ref:`Variant`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_multistate`\ (\ index\: :ref:`int`, state\: :ref:`int`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_multistate_max`\ (\ index\: :ref:`int`, max_states\: :ref:`int`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_shortcut`\ (\ index\: :ref:`int`, shortcut\: :ref:`Shortcut`, global\: :ref:`bool` = false\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_shortcut_disabled`\ (\ index\: :ref:`int`, disabled\: :ref:`bool`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_submenu`\ (\ index\: :ref:`int`, submenu\: :ref:`String`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_submenu_node`\ (\ index\: :ref:`int`, submenu\: :ref:`PopupMenu`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_text`\ (\ index\: :ref:`int`, text\: :ref:`String`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_text_direction`\ (\ index\: :ref:`int`, direction\: :ref:`TextDirection`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_item_tooltip`\ (\ index\: :ref:`int`, tooltip\: :ref:`String`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`toggle_item_checked`\ (\ index\: :ref:`int`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`toggle_item_multistate`\ (\ index\: :ref:`int`\ ) | - +--------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`activate_item_by_event`\ (\ event\: :ref:`InputEvent`, for_global_only\: :ref:`bool` = false\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_check_item`\ (\ label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_check_shortcut`\ (\ shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_icon_check_item`\ (\ texture\: :ref:`Texture2D`, label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_icon_check_shortcut`\ (\ texture\: :ref:`Texture2D`, shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_icon_item`\ (\ texture\: :ref:`Texture2D`, label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_icon_radio_check_item`\ (\ texture\: :ref:`Texture2D`, label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_icon_radio_check_shortcut`\ (\ texture\: :ref:`Texture2D`, shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_icon_shortcut`\ (\ texture\: :ref:`Texture2D`, shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false, allow_echo\: :ref:`bool` = false\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_item`\ (\ label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_multistate_item`\ (\ label\: :ref:`String`, max_states\: :ref:`int`, default_state\: :ref:`int` = 0, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_radio_check_item`\ (\ label\: :ref:`String`, id\: :ref:`int` = -1, accel\: :ref:`Key` = 0\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_radio_check_shortcut`\ (\ shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_separator`\ (\ label\: :ref:`String` = "", id\: :ref:`int` = -1\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_shortcut`\ (\ shortcut\: :ref:`Shortcut`, id\: :ref:`int` = -1, global\: :ref:`bool` = false, allow_echo\: :ref:`bool` = false\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_submenu_item`\ (\ label\: :ref:`String`, submenu\: :ref:`String`, id\: :ref:`int` = -1\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_submenu_node_item`\ (\ label\: :ref:`String`, submenu\: :ref:`PopupMenu`, id\: :ref:`int` = -1\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear`\ (\ free_submenus\: :ref:`bool` = false\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_focused_item`\ (\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Key` | :ref:`get_item_accelerator`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`AutoTranslateMode` | :ref:`get_item_auto_translate_mode`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Texture2D` | :ref:`get_item_icon`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_item_icon_max_width`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`get_item_icon_modulate`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_item_id`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_item_indent`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_item_index`\ (\ id\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_item_language`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`get_item_metadata`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_item_multistate`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_item_multistate_max`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Shortcut` | :ref:`get_item_shortcut`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_item_submenu`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PopupMenu` | :ref:`get_item_submenu_node`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_item_text`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TextDirection` | :ref:`get_item_text_direction`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_item_tooltip`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_item_checkable`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_item_checked`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_item_disabled`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_item_radio_checkable`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_item_separator`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_item_shortcut_disabled`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_native_menu`\ (\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_system_menu`\ (\ ) |const| | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`remove_item`\ (\ index\: :ref:`int`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`scroll_to_item`\ (\ index\: :ref:`int`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_focused_item`\ (\ index\: :ref:`int`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_accelerator`\ (\ index\: :ref:`int`, accel\: :ref:`Key`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_as_checkable`\ (\ index\: :ref:`int`, enable\: :ref:`bool`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_as_radio_checkable`\ (\ index\: :ref:`int`, enable\: :ref:`bool`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_as_separator`\ (\ index\: :ref:`int`, enable\: :ref:`bool`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_auto_translate_mode`\ (\ index\: :ref:`int`, mode\: :ref:`AutoTranslateMode`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_checked`\ (\ index\: :ref:`int`, checked\: :ref:`bool`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_disabled`\ (\ index\: :ref:`int`, disabled\: :ref:`bool`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_icon`\ (\ index\: :ref:`int`, icon\: :ref:`Texture2D`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_icon_max_width`\ (\ index\: :ref:`int`, width\: :ref:`int`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_icon_modulate`\ (\ index\: :ref:`int`, modulate\: :ref:`Color`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_id`\ (\ index\: :ref:`int`, id\: :ref:`int`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_indent`\ (\ index\: :ref:`int`, indent\: :ref:`int`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_language`\ (\ index\: :ref:`int`, language\: :ref:`String`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_metadata`\ (\ index\: :ref:`int`, metadata\: :ref:`Variant`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_multistate`\ (\ index\: :ref:`int`, state\: :ref:`int`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_multistate_max`\ (\ index\: :ref:`int`, max_states\: :ref:`int`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_shortcut`\ (\ index\: :ref:`int`, shortcut\: :ref:`Shortcut`, global\: :ref:`bool` = false\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_shortcut_disabled`\ (\ index\: :ref:`int`, disabled\: :ref:`bool`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_submenu`\ (\ index\: :ref:`int`, submenu\: :ref:`String`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_submenu_node`\ (\ index\: :ref:`int`, submenu\: :ref:`PopupMenu`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_text`\ (\ index\: :ref:`int`, text\: :ref:`String`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_text_direction`\ (\ index\: :ref:`int`, direction\: :ref:`TextDirection`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_item_tooltip`\ (\ index\: :ref:`int`, tooltip\: :ref:`String`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`toggle_item_checked`\ (\ index\: :ref:`int`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`toggle_item_multistate`\ (\ index\: :ref:`int`\ ) | + +-------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -810,6 +814,18 @@ Returns the accelerator of the item at the given ``index``. An accelerator is a ---- +.. _class_PopupMenu_method_get_item_auto_translate_mode: + +.. rst-class:: classref-method + +:ref:`AutoTranslateMode` **get_item_auto_translate_mode**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the auto translate mode of the item at the given ``index``. + +.. rst-class:: classref-item-separator + +---- + .. _class_PopupMenu_method_get_item_icon: .. rst-class:: classref-method @@ -1196,6 +1212,20 @@ Mark the item at the given ``index`` as a separator, which means that it would b ---- +.. _class_PopupMenu_method_set_item_auto_translate_mode: + +.. rst-class:: classref-method + +|void| **set_item_auto_translate_mode**\ (\ index\: :ref:`int`, mode\: :ref:`AutoTranslateMode`\ ) :ref:`🔗` + +Sets the auto translate mode of the item at the given ``index``. + +Items use :ref:`Node.AUTO_TRANSLATE_MODE_INHERIT` by default, which uses the same auto translate mode as the **PopupMenu** itself. + +.. rst-class:: classref-item-separator + +---- + .. _class_PopupMenu_method_set_item_checked: .. rst-class:: classref-method diff --git a/classes/class_portablecompressedtexture2d.rst b/classes/class_portablecompressedtexture2d.rst index 3fbe6b166..2a71d1f84 100644 --- a/classes/class_portablecompressedtexture2d.rst +++ b/classes/class_portablecompressedtexture2d.rst @@ -152,6 +152,18 @@ enum **CompressionMode**: :ref:`🔗` **COMPRESSION_MODE_ASTC** = ``6`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + .. rst-class:: classref-section-separator ---- diff --git a/classes/class_primitivemesh.rst b/classes/class_primitivemesh.rst index b9eb6ceeb..79939bf93 100644 --- a/classes/class_primitivemesh.rst +++ b/classes/class_primitivemesh.rst @@ -113,7 +113,7 @@ Overrides the :ref:`AABB` with one defined by user for use with frus - |void| **set_flip_faces**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **get_flip_faces**\ (\ ) -If set, the order of the vertices in each triangle are reversed resulting in the backside of the mesh being drawn. +If ``true``, the order of the vertices in each triangle is reversed, resulting in the backside of the mesh being drawn. This gives the same result as using :ref:`BaseMaterial3D.CULL_FRONT` in :ref:`BaseMaterial3D.cull_mode`. diff --git a/classes/class_projection.rst b/classes/class_projection.rst index 339dd37ec..a68da7dd3 100644 --- a/classes/class_projection.rst +++ b/classes/class_projection.rst @@ -570,7 +570,7 @@ Returns the factor by which the visible level of detail is scaled by this **Proj :ref:`int` **get_pixels_per_meter**\ (\ for_pixel_width\: :ref:`int`\ ) |const| :ref:`🔗` -Returns the number of pixels with the given pixel width displayed per meter, after this **Projection** is applied. +Returns ``for_pixel_width`` divided by the viewport's width measured in meters on the near plane, after this **Projection** is applied. .. rst-class:: classref-item-separator diff --git a/classes/class_projectsettings.rst b/classes/class_projectsettings.rst index 270cdce56..5e3776698 100644 --- a/classes/class_projectsettings.rst +++ b/classes/class_projectsettings.rst @@ -48,6 +48,10 @@ Properties .. table:: :widths: auto + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`accessibility/general/accessibility_support` | ``0`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`accessibility/general/updates_per_second` | ``60`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`animation/warnings/check_angle_interpolation_type_conflicting` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ @@ -317,23 +321,41 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`debug/shader_language/warnings/unused_varying` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/avoidance/agents_radius_color` | ``Color(1, 1, 0, 0.25)`` | + | :ref:`Color` | :ref:`debug/shapes/avoidance/2d/agents_radius_color` | ``Color(1, 1, 0, 0.25)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/avoidance/enable_agents_radius` | ``true`` | + | :ref:`bool` | :ref:`debug/shapes/avoidance/2d/enable_agents_radius` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/avoidance/enable_obstacles_radius` | ``true`` | + | :ref:`bool` | :ref:`debug/shapes/avoidance/2d/enable_obstacles_radius` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/avoidance/enable_obstacles_static` | ``true`` | + | :ref:`bool` | :ref:`debug/shapes/avoidance/2d/enable_obstacles_static` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/avoidance/obstacles_radius_color` | ``Color(1, 0.5, 0, 0.25)`` | + | :ref:`Color` | :ref:`debug/shapes/avoidance/2d/obstacles_radius_color` | ``Color(1, 0.5, 0, 0.25)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/avoidance/obstacles_static_edge_pushin_color` | ``Color(1, 0, 0, 1)`` | + | :ref:`Color` | :ref:`debug/shapes/avoidance/2d/obstacles_static_edge_pushin_color` | ``Color(1, 0, 0, 1)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/avoidance/obstacles_static_edge_pushout_color` | ``Color(1, 1, 0, 1)`` | + | :ref:`Color` | :ref:`debug/shapes/avoidance/2d/obstacles_static_edge_pushout_color` | ``Color(1, 1, 0, 1)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/avoidance/obstacles_static_face_pushin_color` | ``Color(1, 0, 0, 0)`` | + | :ref:`Color` | :ref:`debug/shapes/avoidance/2d/obstacles_static_face_pushin_color` | ``Color(1, 0, 0, 0)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/avoidance/obstacles_static_face_pushout_color` | ``Color(1, 1, 0, 0.5)`` | + | :ref:`Color` | :ref:`debug/shapes/avoidance/2d/obstacles_static_face_pushout_color` | ``Color(1, 1, 0, 0.5)`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/avoidance/3d/agents_radius_color` | ``Color(1, 1, 0, 0.25)`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/shapes/avoidance/3d/enable_agents_radius` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/shapes/avoidance/3d/enable_obstacles_radius` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/shapes/avoidance/3d/enable_obstacles_static` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/avoidance/3d/obstacles_radius_color` | ``Color(1, 0.5, 0, 0.25)`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/avoidance/3d/obstacles_static_edge_pushin_color` | ``Color(1, 0, 0, 1)`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/avoidance/3d/obstacles_static_edge_pushout_color` | ``Color(1, 1, 0, 1)`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/avoidance/3d/obstacles_static_face_pushin_color` | ``Color(1, 0, 0, 0)`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/avoidance/3d/obstacles_static_face_pushout_color` | ``Color(1, 1, 0, 0.5)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Color` | :ref:`debug/shapes/collision/contact_color` | ``Color(1, 0.2, 0.1, 0.8)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ @@ -343,41 +365,69 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Color` | :ref:`debug/shapes/collision/shape_color` | ``Color(0, 0.6, 0.7, 0.42)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/navigation/agent_path_color` | ``Color(1, 0, 0, 1)`` | + | :ref:`Color` | :ref:`debug/shapes/navigation/2d/agent_path_color` | ``Color(1, 0, 0, 1)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`debug/shapes/navigation/agent_path_point_size` | ``4.0`` | + | :ref:`float` | :ref:`debug/shapes/navigation/2d/agent_path_point_size` | ``4.0`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/navigation/edge_connection_color` | ``Color(1, 0, 1, 1)`` | + | :ref:`Color` | :ref:`debug/shapes/navigation/2d/edge_connection_color` | ``Color(1, 0, 1, 1)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/navigation/enable_agent_paths` | ``true`` | + | :ref:`bool` | :ref:`debug/shapes/navigation/2d/enable_agent_paths` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/navigation/enable_agent_paths_xray` | ``true`` | + | :ref:`bool` | :ref:`debug/shapes/navigation/2d/enable_edge_connections` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/navigation/enable_edge_connections` | ``true`` | + | :ref:`bool` | :ref:`debug/shapes/navigation/2d/enable_edge_lines` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/navigation/enable_edge_connections_xray` | ``true`` | + | :ref:`bool` | :ref:`debug/shapes/navigation/2d/enable_geometry_face_random_color` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/navigation/enable_edge_lines` | ``true`` | + | :ref:`bool` | :ref:`debug/shapes/navigation/2d/enable_link_connections` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/navigation/enable_edge_lines_xray` | ``true`` | + | :ref:`Color` | :ref:`debug/shapes/navigation/2d/geometry_edge_color` | ``Color(0.5, 1, 1, 1)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/navigation/enable_geometry_face_random_color` | ``true`` | + | :ref:`Color` | :ref:`debug/shapes/navigation/2d/geometry_edge_disabled_color` | ``Color(0.5, 0.5, 0.5, 1)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/navigation/enable_link_connections` | ``true`` | + | :ref:`Color` | :ref:`debug/shapes/navigation/2d/geometry_face_color` | ``Color(0.5, 1, 1, 0.4)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debug/shapes/navigation/enable_link_connections_xray` | ``true`` | + | :ref:`Color` | :ref:`debug/shapes/navigation/2d/geometry_face_disabled_color` | ``Color(0.5, 0.5, 0.5, 0.4)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/navigation/geometry_edge_color` | ``Color(0.5, 1, 1, 1)`` | + | :ref:`Color` | :ref:`debug/shapes/navigation/2d/link_connection_color` | ``Color(1, 0.5, 1, 1)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/navigation/geometry_edge_disabled_color` | ``Color(0.5, 0.5, 0.5, 1)`` | + | :ref:`Color` | :ref:`debug/shapes/navigation/2d/link_connection_disabled_color` | ``Color(0.5, 0.5, 0.5, 1)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/navigation/geometry_face_color` | ``Color(0.5, 1, 1, 0.4)`` | + | :ref:`Color` | :ref:`debug/shapes/navigation/3d/agent_path_color` | ``Color(1, 0, 0, 1)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/navigation/geometry_face_disabled_color` | ``Color(0.5, 0.5, 0.5, 0.4)`` | + | :ref:`float` | :ref:`debug/shapes/navigation/3d/agent_path_point_size` | ``4.0`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/navigation/link_connection_color` | ``Color(1, 0.5, 1, 1)`` | + | :ref:`Color` | :ref:`debug/shapes/navigation/3d/edge_connection_color` | ``Color(1, 0, 1, 1)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`debug/shapes/navigation/link_connection_disabled_color` | ``Color(0.5, 0.5, 0.5, 1)`` | + | :ref:`bool` | :ref:`debug/shapes/navigation/3d/enable_agent_paths` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/shapes/navigation/3d/enable_agent_paths_xray` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/shapes/navigation/3d/enable_edge_connections` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/shapes/navigation/3d/enable_edge_connections_xray` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/shapes/navigation/3d/enable_edge_lines` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/shapes/navigation/3d/enable_edge_lines_xray` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/shapes/navigation/3d/enable_geometry_face_random_color` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/shapes/navigation/3d/enable_link_connections` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/shapes/navigation/3d/enable_link_connections_xray` | ``true`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/navigation/3d/geometry_edge_color` | ``Color(0.5, 1, 1, 1)`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/navigation/3d/geometry_edge_disabled_color` | ``Color(0.5, 0.5, 0.5, 1)`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/navigation/3d/geometry_face_color` | ``Color(0.5, 1, 1, 0.4)`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/navigation/3d/geometry_face_disabled_color` | ``Color(0.5, 0.5, 0.5, 0.4)`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/navigation/3d/link_connection_color` | ``Color(1, 0.5, 1, 1)`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`debug/shapes/navigation/3d/link_connection_disabled_color` | ``Color(0.5, 0.5, 0.5, 1)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Color` | :ref:`debug/shapes/paths/geometry_color` | ``Color(0.1, 1, 0.7, 0.4)`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ @@ -433,6 +483,10 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`display/window/size/initial_screen` | ``0`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`display/window/size/maximize_disabled` | ``false`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`display/window/size/minimize_disabled` | ``false`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`display/window/size/mode` | ``0`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`display/window/size/no_focus` | ``false`` | @@ -527,7 +581,7 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`gui/common/snap_controls_to_pixels` | ``true`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`gui/common/swap_cancel_ok` | | + | :ref:`int` | :ref:`gui/common/swap_cancel_ok` | ``0`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`gui/common/text_edit_undo_stack_max_size` | ``1024`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ @@ -563,8 +617,12 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`input/ui_accept` | | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`input/ui_accessibility_drag_and_drop` | | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`input/ui_cancel` | | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`input/ui_colorpicker_delete_preset` | | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`input/ui_copy` | | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`input/ui_cut` | | @@ -579,6 +637,8 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`input/ui_filedialog_up_one_level` | | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`input/ui_focus_mode` | | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`input/ui_focus_next` | | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`input/ui_focus_prev` | | @@ -587,6 +647,14 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`input/ui_graph_duplicate` | | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`input/ui_graph_follow_left` | | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`input/ui_graph_follow_left.macos` | | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`input/ui_graph_follow_right` | | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`input/ui_graph_follow_right.macos` | | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`input/ui_home` | | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`input/ui_left` | | @@ -725,10 +793,14 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`input_devices/pen_tablet/driver.windows` | | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`input_devices/pointing/android/disable_scroll_deadzone` | ``false`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`input_devices/pointing/android/enable_long_press_as_right_click` | ``false`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`input_devices/pointing/android/enable_pan_and_scale_gestures` | ``false`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`input_devices/pointing/android/override_volume_buttons` | ``false`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`input_devices/pointing/android/rotary_input_scroll_axis` | ``1`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`input_devices/pointing/emulate_mouse_from_touch` | ``true`` | @@ -1762,43 +1834,45 @@ Methods .. table:: :widths: auto - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_property_info`\ (\ hint\: :ref:`Dictionary`\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear`\ (\ name\: :ref:`String`\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`get_global_class_list`\ (\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_order`\ (\ name\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`get_setting`\ (\ name\: :ref:`String`, default_value\: :ref:`Variant` = null\ ) |const| | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`get_setting_with_override`\ (\ name\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`globalize_path`\ (\ path\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_setting`\ (\ name\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`load_resource_pack`\ (\ pack\: :ref:`String`, replace_files\: :ref:`bool` = true, offset\: :ref:`int` = 0\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`localize_path`\ (\ path\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`save`\ (\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`save_custom`\ (\ file\: :ref:`String`\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_as_basic`\ (\ name\: :ref:`String`, basic\: :ref:`bool`\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_as_internal`\ (\ name\: :ref:`String`, internal\: :ref:`bool`\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_initial_value`\ (\ name\: :ref:`String`, value\: :ref:`Variant`\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_order`\ (\ name\: :ref:`String`, position\: :ref:`int`\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_restart_if_changed`\ (\ name\: :ref:`String`, restart\: :ref:`bool`\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_setting`\ (\ name\: :ref:`String`, value\: :ref:`Variant`\ ) | - +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_property_info`\ (\ hint\: :ref:`Dictionary`\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear`\ (\ name\: :ref:`String`\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`get_global_class_list`\ (\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_order`\ (\ name\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`get_setting`\ (\ name\: :ref:`String`, default_value\: :ref:`Variant` = null\ ) |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`get_setting_with_override`\ (\ name\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`get_setting_with_override_and_custom_features`\ (\ name\: :ref:`StringName`, features\: :ref:`PackedStringArray`\ ) |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`globalize_path`\ (\ path\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_setting`\ (\ name\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`load_resource_pack`\ (\ pack\: :ref:`String`, replace_files\: :ref:`bool` = true, offset\: :ref:`int` = 0\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`localize_path`\ (\ path\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`save`\ (\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`save_custom`\ (\ file\: :ref:`String`\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_as_basic`\ (\ name\: :ref:`String`, basic\: :ref:`bool`\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_as_internal`\ (\ name\: :ref:`String`, internal\: :ref:`bool`\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_initial_value`\ (\ name\: :ref:`String`, value\: :ref:`Variant`\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_order`\ (\ name\: :ref:`String`, position\: :ref:`int`\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_restart_if_changed`\ (\ name\: :ref:`String`, restart\: :ref:`bool`\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_setting`\ (\ name\: :ref:`String`, value\: :ref:`Variant`\ ) | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -1826,6 +1900,38 @@ Emitted when any setting is changed, up to once per process frame. Property Descriptions --------------------- +.. _class_ProjectSettings_property_accessibility/general/accessibility_support: + +.. rst-class:: classref-property + +:ref:`int` **accessibility/general/accessibility_support** = ``0`` :ref:`🔗` + +Accessibility support mode: + +- **Auto** (``0``): accessibility support is enabled, but accessibility information updates are processed only if an assistive app (e.g. screen reader or Braille display) is active (default). + +- **Always Active** (``1``): accessibility support is enabled, and accessibility information updates are processed regardless of current assistive apps' status. + +- **Disabled** (``2``): accessibility support is fully disabled. + +\ **Note:** Accessibility debugging tools, such as Accessibility Insights for Windows, macOS Accessibility Inspector, or AT-SPI Browser do not count as assistive apps. To test your app with these tools, use ``1``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_accessibility/general/updates_per_second: + +.. rst-class:: classref-property + +:ref:`int` **accessibility/general/updates_per_second** = ``60`` :ref:`🔗` + +The number of accessibility information updates per second. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_animation/warnings/check_angle_interpolation_type_conflicting: .. rst-class:: classref-property @@ -2440,7 +2546,7 @@ The default value of ``0.5`` is tuned for headphones. When using speakers, you m The base strength of the panning effect for all :ref:`AudioStreamPlayer3D` nodes. The panning strength can be further scaled on each Node using :ref:`AudioStreamPlayer3D.panning_strength`. A value of ``0.0`` disables stereo panning entirely, leaving only volume attenuation in place. A value of ``1.0`` completely mutes one of the channels if the sound is located exactly to the left (or right) of the listener. -The default value of ``0.5`` is tuned for headphones. When using speakers, you may find lower values to sound better as speakers have a lower stereo separation compared to headphones. +The default value of ``0.5`` is tuned for headphones which means that the opposite side channel goes no lower than 50% of the volume of the nearside channel. You may find that you can set this value higher for speakers to have the same effect since both ears can hear from each speaker. .. rst-class:: classref-item-separator @@ -2512,7 +2618,7 @@ Sets the `AVAudioSessionCategory ` **audio/general/text_to_speech** = ``false`` :ref:`🔗` -If ``true``, text-to-speech support is enabled, see :ref:`DisplayServer.tts_get_voices()` and :ref:`DisplayServer.tts_speak()`. +If ``true``, text-to-speech support is enabled on startup, otherwise it is enabled first time TTS method is used, see :ref:`DisplayServer.tts_get_voices()` and :ref:`DisplayServer.tts_speak()`. \ **Note:** Enabling TTS can cause addition idle CPU usage and interfere with the sleep mode, so consider disabling it if TTS is not used. @@ -3546,11 +3652,11 @@ When set to ``true``, produces a warning when a varying is never used. ---- -.. _class_ProjectSettings_property_debug/shapes/avoidance/agents_radius_color: +.. _class_ProjectSettings_property_debug/shapes/avoidance/2d/agents_radius_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/avoidance/agents_radius_color** = ``Color(1, 1, 0, 0.25)`` :ref:`🔗` +:ref:`Color` **debug/shapes/avoidance/2d/agents_radius_color** = ``Color(1, 1, 0, 0.25)`` :ref:`🔗` Color of the avoidance agents radius, visible when "Visible Avoidance" is enabled in the Debug menu. @@ -3558,11 +3664,11 @@ Color of the avoidance agents radius, visible when "Visible Avoidance" is enable ---- -.. _class_ProjectSettings_property_debug/shapes/avoidance/enable_agents_radius: +.. _class_ProjectSettings_property_debug/shapes/avoidance/2d/enable_agents_radius: .. rst-class:: classref-property -:ref:`bool` **debug/shapes/avoidance/enable_agents_radius** = ``true`` :ref:`🔗` +:ref:`bool` **debug/shapes/avoidance/2d/enable_agents_radius** = ``true`` :ref:`🔗` If enabled, displays avoidance agents radius when "Visible Avoidance" is enabled in the Debug menu. @@ -3570,11 +3676,11 @@ If enabled, displays avoidance agents radius when "Visible Avoidance" is enabled ---- -.. _class_ProjectSettings_property_debug/shapes/avoidance/enable_obstacles_radius: +.. _class_ProjectSettings_property_debug/shapes/avoidance/2d/enable_obstacles_radius: .. rst-class:: classref-property -:ref:`bool` **debug/shapes/avoidance/enable_obstacles_radius** = ``true`` :ref:`🔗` +:ref:`bool` **debug/shapes/avoidance/2d/enable_obstacles_radius** = ``true`` :ref:`🔗` If enabled, displays avoidance obstacles radius when "Visible Avoidance" is enabled in the Debug menu. @@ -3582,11 +3688,11 @@ If enabled, displays avoidance obstacles radius when "Visible Avoidance" is enab ---- -.. _class_ProjectSettings_property_debug/shapes/avoidance/enable_obstacles_static: +.. _class_ProjectSettings_property_debug/shapes/avoidance/2d/enable_obstacles_static: .. rst-class:: classref-property -:ref:`bool` **debug/shapes/avoidance/enable_obstacles_static** = ``true`` :ref:`🔗` +:ref:`bool` **debug/shapes/avoidance/2d/enable_obstacles_static** = ``true`` :ref:`🔗` If enabled, displays static avoidance obstacles when "Visible Avoidance" is enabled in the Debug menu. @@ -3594,11 +3700,11 @@ If enabled, displays static avoidance obstacles when "Visible Avoidance" is enab ---- -.. _class_ProjectSettings_property_debug/shapes/avoidance/obstacles_radius_color: +.. _class_ProjectSettings_property_debug/shapes/avoidance/2d/obstacles_radius_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/avoidance/obstacles_radius_color** = ``Color(1, 0.5, 0, 0.25)`` :ref:`🔗` +:ref:`Color` **debug/shapes/avoidance/2d/obstacles_radius_color** = ``Color(1, 0.5, 0, 0.25)`` :ref:`🔗` Color of the avoidance obstacles radius, visible when "Visible Avoidance" is enabled in the Debug menu. @@ -3606,11 +3712,11 @@ Color of the avoidance obstacles radius, visible when "Visible Avoidance" is ena ---- -.. _class_ProjectSettings_property_debug/shapes/avoidance/obstacles_static_edge_pushin_color: +.. _class_ProjectSettings_property_debug/shapes/avoidance/2d/obstacles_static_edge_pushin_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/avoidance/obstacles_static_edge_pushin_color** = ``Color(1, 0, 0, 1)`` :ref:`🔗` +:ref:`Color` **debug/shapes/avoidance/2d/obstacles_static_edge_pushin_color** = ``Color(1, 0, 0, 1)`` :ref:`🔗` Color of the static avoidance obstacles edges when their vertices are winded in order to push agents in, visible when "Visible Avoidance" is enabled in the Debug menu. @@ -3618,11 +3724,11 @@ Color of the static avoidance obstacles edges when their vertices are winded in ---- -.. _class_ProjectSettings_property_debug/shapes/avoidance/obstacles_static_edge_pushout_color: +.. _class_ProjectSettings_property_debug/shapes/avoidance/2d/obstacles_static_edge_pushout_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/avoidance/obstacles_static_edge_pushout_color** = ``Color(1, 1, 0, 1)`` :ref:`🔗` +:ref:`Color` **debug/shapes/avoidance/2d/obstacles_static_edge_pushout_color** = ``Color(1, 1, 0, 1)`` :ref:`🔗` Color of the static avoidance obstacles edges when their vertices are winded in order to push agents out, visible when "Visible Avoidance" is enabled in the Debug menu. @@ -3630,11 +3736,11 @@ Color of the static avoidance obstacles edges when their vertices are winded in ---- -.. _class_ProjectSettings_property_debug/shapes/avoidance/obstacles_static_face_pushin_color: +.. _class_ProjectSettings_property_debug/shapes/avoidance/2d/obstacles_static_face_pushin_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/avoidance/obstacles_static_face_pushin_color** = ``Color(1, 0, 0, 0)`` :ref:`🔗` +:ref:`Color` **debug/shapes/avoidance/2d/obstacles_static_face_pushin_color** = ``Color(1, 0, 0, 0)`` :ref:`🔗` Color of the static avoidance obstacles faces when their vertices are winded in order to push agents in, visible when "Visible Avoidance" is enabled in the Debug menu. @@ -3642,11 +3748,119 @@ Color of the static avoidance obstacles faces when their vertices are winded in ---- -.. _class_ProjectSettings_property_debug/shapes/avoidance/obstacles_static_face_pushout_color: +.. _class_ProjectSettings_property_debug/shapes/avoidance/2d/obstacles_static_face_pushout_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/avoidance/obstacles_static_face_pushout_color** = ``Color(1, 1, 0, 0.5)`` :ref:`🔗` +:ref:`Color` **debug/shapes/avoidance/2d/obstacles_static_face_pushout_color** = ``Color(1, 1, 0, 0.5)`` :ref:`🔗` + +Color of the static avoidance obstacles faces when their vertices are winded in order to push agents out, visible when "Visible Avoidance" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/avoidance/3d/agents_radius_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/avoidance/3d/agents_radius_color** = ``Color(1, 1, 0, 0.25)`` :ref:`🔗` + +Color of the avoidance agents radius, visible when "Visible Avoidance" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/avoidance/3d/enable_agents_radius: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/avoidance/3d/enable_agents_radius** = ``true`` :ref:`🔗` + +If enabled, displays avoidance agents radius when "Visible Avoidance" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/avoidance/3d/enable_obstacles_radius: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/avoidance/3d/enable_obstacles_radius** = ``true`` :ref:`🔗` + +If enabled, displays avoidance obstacles radius when "Visible Avoidance" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/avoidance/3d/enable_obstacles_static: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/avoidance/3d/enable_obstacles_static** = ``true`` :ref:`🔗` + +If enabled, displays static avoidance obstacles when "Visible Avoidance" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/avoidance/3d/obstacles_radius_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/avoidance/3d/obstacles_radius_color** = ``Color(1, 0.5, 0, 0.25)`` :ref:`🔗` + +Color of the avoidance obstacles radius, visible when "Visible Avoidance" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/avoidance/3d/obstacles_static_edge_pushin_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/avoidance/3d/obstacles_static_edge_pushin_color** = ``Color(1, 0, 0, 1)`` :ref:`🔗` + +Color of the static avoidance obstacles edges when their vertices are winded in order to push agents in, visible when "Visible Avoidance" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/avoidance/3d/obstacles_static_edge_pushout_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/avoidance/3d/obstacles_static_edge_pushout_color** = ``Color(1, 1, 0, 1)`` :ref:`🔗` + +Color of the static avoidance obstacles edges when their vertices are winded in order to push agents out, visible when "Visible Avoidance" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/avoidance/3d/obstacles_static_face_pushin_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/avoidance/3d/obstacles_static_face_pushin_color** = ``Color(1, 0, 0, 0)`` :ref:`🔗` + +Color of the static avoidance obstacles faces when their vertices are winded in order to push agents in, visible when "Visible Avoidance" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/avoidance/3d/obstacles_static_face_pushout_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/avoidance/3d/obstacles_static_face_pushout_color** = ``Color(1, 1, 0, 0.5)`` :ref:`🔗` Color of the static avoidance obstacles faces when their vertices are winded in order to push agents out, visible when "Visible Avoidance" is enabled in the Debug menu. @@ -3702,11 +3916,11 @@ Color of the collision shapes, visible when "Visible Collision Shapes" is enable ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/agent_path_color: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/agent_path_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/navigation/agent_path_color** = ``Color(1, 0, 0, 1)`` :ref:`🔗` +:ref:`Color` **debug/shapes/navigation/2d/agent_path_color** = ``Color(1, 0, 0, 1)`` :ref:`🔗` Color to display enabled navigation agent paths when an agent has debug enabled. @@ -3714,11 +3928,11 @@ Color to display enabled navigation agent paths when an agent has debug enabled. ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/agent_path_point_size: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/agent_path_point_size: .. rst-class:: classref-property -:ref:`float` **debug/shapes/navigation/agent_path_point_size** = ``4.0`` :ref:`🔗` +:ref:`float` **debug/shapes/navigation/2d/agent_path_point_size** = ``4.0`` :ref:`🔗` Rasterized size (pixel) used to render navigation agent path points when an agent has debug enabled. @@ -3726,11 +3940,11 @@ Rasterized size (pixel) used to render navigation agent path points when an agen ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/edge_connection_color: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/edge_connection_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/navigation/edge_connection_color** = ``Color(1, 0, 1, 1)`` :ref:`🔗` +:ref:`Color` **debug/shapes/navigation/2d/edge_connection_color** = ``Color(1, 0, 1, 1)`` :ref:`🔗` Color to display edge connections between navigation regions, visible when "Visible Navigation" is enabled in the Debug menu. @@ -3738,11 +3952,11 @@ Color to display edge connections between navigation regions, visible when "Visi ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/enable_agent_paths: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/enable_agent_paths: .. rst-class:: classref-property -:ref:`bool` **debug/shapes/navigation/enable_agent_paths** = ``true`` :ref:`🔗` +:ref:`bool` **debug/shapes/navigation/2d/enable_agent_paths** = ``true`` :ref:`🔗` If enabled, displays navigation agent paths when an agent has debug enabled. @@ -3750,23 +3964,11 @@ If enabled, displays navigation agent paths when an agent has debug enabled. ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/enable_agent_paths_xray: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/enable_edge_connections: .. rst-class:: classref-property -:ref:`bool` **debug/shapes/navigation/enable_agent_paths_xray** = ``true`` :ref:`🔗` - -If enabled, displays navigation agent paths through geometry when an agent has debug enabled. - -.. rst-class:: classref-item-separator - ----- - -.. _class_ProjectSettings_property_debug/shapes/navigation/enable_edge_connections: - -.. rst-class:: classref-property - -:ref:`bool` **debug/shapes/navigation/enable_edge_connections** = ``true`` :ref:`🔗` +:ref:`bool` **debug/shapes/navigation/2d/enable_edge_connections** = ``true`` :ref:`🔗` If enabled, displays edge connections between navigation regions when "Visible Navigation" is enabled in the Debug menu. @@ -3774,23 +3976,11 @@ If enabled, displays edge connections between navigation regions when "Visible N ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/enable_edge_connections_xray: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/enable_edge_lines: .. rst-class:: classref-property -:ref:`bool` **debug/shapes/navigation/enable_edge_connections_xray** = ``true`` :ref:`🔗` - -If enabled, displays edge connections between navigation regions through geometry when "Visible Navigation" is enabled in the Debug menu. - -.. rst-class:: classref-item-separator - ----- - -.. _class_ProjectSettings_property_debug/shapes/navigation/enable_edge_lines: - -.. rst-class:: classref-property - -:ref:`bool` **debug/shapes/navigation/enable_edge_lines** = ``true`` :ref:`🔗` +:ref:`bool` **debug/shapes/navigation/2d/enable_edge_lines** = ``true`` :ref:`🔗` If enabled, displays navigation mesh polygon edges when "Visible Navigation" is enabled in the Debug menu. @@ -3798,23 +3988,11 @@ If enabled, displays navigation mesh polygon edges when "Visible Navigation" is ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/enable_edge_lines_xray: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/enable_geometry_face_random_color: .. rst-class:: classref-property -:ref:`bool` **debug/shapes/navigation/enable_edge_lines_xray** = ``true`` :ref:`🔗` - -If enabled, displays navigation mesh polygon edges through geometry when "Visible Navigation" is enabled in the Debug menu. - -.. rst-class:: classref-item-separator - ----- - -.. _class_ProjectSettings_property_debug/shapes/navigation/enable_geometry_face_random_color: - -.. rst-class:: classref-property - -:ref:`bool` **debug/shapes/navigation/enable_geometry_face_random_color** = ``true`` :ref:`🔗` +:ref:`bool` **debug/shapes/navigation/2d/enable_geometry_face_random_color** = ``true`` :ref:`🔗` If enabled, colorizes each navigation mesh polygon face with a random color when "Visible Navigation" is enabled in the Debug menu. @@ -3822,11 +4000,11 @@ If enabled, colorizes each navigation mesh polygon face with a random color when ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/enable_link_connections: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/enable_link_connections: .. rst-class:: classref-property -:ref:`bool` **debug/shapes/navigation/enable_link_connections** = ``true`` :ref:`🔗` +:ref:`bool` **debug/shapes/navigation/2d/enable_link_connections** = ``true`` :ref:`🔗` If enabled, displays navigation link connections when "Visible Navigation" is enabled in the Debug menu. @@ -3834,23 +4012,11 @@ If enabled, displays navigation link connections when "Visible Navigation" is en ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/enable_link_connections_xray: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/geometry_edge_color: .. rst-class:: classref-property -:ref:`bool` **debug/shapes/navigation/enable_link_connections_xray** = ``true`` :ref:`🔗` - -If enabled, displays navigation link connections through geometry when "Visible Navigation" is enabled in the Debug menu. - -.. rst-class:: classref-item-separator - ----- - -.. _class_ProjectSettings_property_debug/shapes/navigation/geometry_edge_color: - -.. rst-class:: classref-property - -:ref:`Color` **debug/shapes/navigation/geometry_edge_color** = ``Color(0.5, 1, 1, 1)`` :ref:`🔗` +:ref:`Color` **debug/shapes/navigation/2d/geometry_edge_color** = ``Color(0.5, 1, 1, 1)`` :ref:`🔗` Color to display enabled navigation mesh polygon edges, visible when "Visible Navigation" is enabled in the Debug menu. @@ -3858,11 +4024,11 @@ Color to display enabled navigation mesh polygon edges, visible when "Visible Na ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/geometry_edge_disabled_color: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/geometry_edge_disabled_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/navigation/geometry_edge_disabled_color** = ``Color(0.5, 0.5, 0.5, 1)`` :ref:`🔗` +:ref:`Color` **debug/shapes/navigation/2d/geometry_edge_disabled_color** = ``Color(0.5, 0.5, 0.5, 1)`` :ref:`🔗` Color to display disabled navigation mesh polygon edges, visible when "Visible Navigation" is enabled in the Debug menu. @@ -3870,11 +4036,11 @@ Color to display disabled navigation mesh polygon edges, visible when "Visible N ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/geometry_face_color: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/geometry_face_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/navigation/geometry_face_color** = ``Color(0.5, 1, 1, 0.4)`` :ref:`🔗` +:ref:`Color` **debug/shapes/navigation/2d/geometry_face_color** = ``Color(0.5, 1, 1, 0.4)`` :ref:`🔗` Color to display enabled navigation mesh polygon faces, visible when "Visible Navigation" is enabled in the Debug menu. @@ -3882,11 +4048,11 @@ Color to display enabled navigation mesh polygon faces, visible when "Visible Na ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/geometry_face_disabled_color: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/geometry_face_disabled_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/navigation/geometry_face_disabled_color** = ``Color(0.5, 0.5, 0.5, 0.4)`` :ref:`🔗` +:ref:`Color` **debug/shapes/navigation/2d/geometry_face_disabled_color** = ``Color(0.5, 0.5, 0.5, 0.4)`` :ref:`🔗` Color to display disabled navigation mesh polygon faces, visible when "Visible Navigation" is enabled in the Debug menu. @@ -3894,11 +4060,11 @@ Color to display disabled navigation mesh polygon faces, visible when "Visible N ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/link_connection_color: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/link_connection_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/navigation/link_connection_color** = ``Color(1, 0.5, 1, 1)`` :ref:`🔗` +:ref:`Color` **debug/shapes/navigation/2d/link_connection_color** = ``Color(1, 0.5, 1, 1)`` :ref:`🔗` Color to use to display navigation link connections, visible when "Visible Navigation" is enabled in the Debug menu. @@ -3906,11 +4072,227 @@ Color to use to display navigation link connections, visible when "Visible Navig ---- -.. _class_ProjectSettings_property_debug/shapes/navigation/link_connection_disabled_color: +.. _class_ProjectSettings_property_debug/shapes/navigation/2d/link_connection_disabled_color: .. rst-class:: classref-property -:ref:`Color` **debug/shapes/navigation/link_connection_disabled_color** = ``Color(0.5, 0.5, 0.5, 1)`` :ref:`🔗` +:ref:`Color` **debug/shapes/navigation/2d/link_connection_disabled_color** = ``Color(0.5, 0.5, 0.5, 1)`` :ref:`🔗` + +Color to use to display disabled navigation link connections, visible when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/agent_path_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/navigation/3d/agent_path_color** = ``Color(1, 0, 0, 1)`` :ref:`🔗` + +Color to display enabled navigation agent paths when an agent has debug enabled. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/agent_path_point_size: + +.. rst-class:: classref-property + +:ref:`float` **debug/shapes/navigation/3d/agent_path_point_size** = ``4.0`` :ref:`🔗` + +Rasterized size (pixel) used to render navigation agent path points when an agent has debug enabled. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/edge_connection_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/navigation/3d/edge_connection_color** = ``Color(1, 0, 1, 1)`` :ref:`🔗` + +Color to display edge connections between navigation regions, visible when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/enable_agent_paths: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/navigation/3d/enable_agent_paths** = ``true`` :ref:`🔗` + +If enabled, displays navigation agent paths when an agent has debug enabled. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/enable_agent_paths_xray: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/navigation/3d/enable_agent_paths_xray** = ``true`` :ref:`🔗` + +If enabled, displays navigation agent paths through geometry when an agent has debug enabled. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/enable_edge_connections: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/navigation/3d/enable_edge_connections** = ``true`` :ref:`🔗` + +If enabled, displays edge connections between navigation regions when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/enable_edge_connections_xray: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/navigation/3d/enable_edge_connections_xray** = ``true`` :ref:`🔗` + +If enabled, displays edge connections between navigation regions through geometry when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/enable_edge_lines: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/navigation/3d/enable_edge_lines** = ``true`` :ref:`🔗` + +If enabled, displays navigation mesh polygon edges when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/enable_edge_lines_xray: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/navigation/3d/enable_edge_lines_xray** = ``true`` :ref:`🔗` + +If enabled, displays navigation mesh polygon edges through geometry when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/enable_geometry_face_random_color: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/navigation/3d/enable_geometry_face_random_color** = ``true`` :ref:`🔗` + +If enabled, colorizes each navigation mesh polygon face with a random color when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/enable_link_connections: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/navigation/3d/enable_link_connections** = ``true`` :ref:`🔗` + +If enabled, displays navigation link connections when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/enable_link_connections_xray: + +.. rst-class:: classref-property + +:ref:`bool` **debug/shapes/navigation/3d/enable_link_connections_xray** = ``true`` :ref:`🔗` + +If enabled, displays navigation link connections through geometry when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/geometry_edge_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/navigation/3d/geometry_edge_color** = ``Color(0.5, 1, 1, 1)`` :ref:`🔗` + +Color to display enabled navigation mesh polygon edges, visible when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/geometry_edge_disabled_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/navigation/3d/geometry_edge_disabled_color** = ``Color(0.5, 0.5, 0.5, 1)`` :ref:`🔗` + +Color to display disabled navigation mesh polygon edges, visible when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/geometry_face_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/navigation/3d/geometry_face_color** = ``Color(0.5, 1, 1, 0.4)`` :ref:`🔗` + +Color to display enabled navigation mesh polygon faces, visible when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/geometry_face_disabled_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/navigation/3d/geometry_face_disabled_color** = ``Color(0.5, 0.5, 0.5, 0.4)`` :ref:`🔗` + +Color to display disabled navigation mesh polygon faces, visible when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/link_connection_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/navigation/3d/link_connection_color** = ``Color(1, 0.5, 1, 1)`` :ref:`🔗` + +Color to use to display navigation link connections, visible when "Visible Navigation" is enabled in the Debug menu. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/shapes/navigation/3d/link_connection_disabled_color: + +.. rst-class:: classref-property + +:ref:`Color` **debug/shapes/navigation/3d/link_connection_disabled_color** = ``Color(0.5, 0.5, 0.5, 1)`` :ref:`🔗` Color to use to display disabled navigation link connections, visible when "Visible Navigation" is enabled in the Debug menu. @@ -4098,13 +4480,13 @@ Enable Swappy for stable frame pacing on Android. Highly recommended. Swappy mode to use. The options are: -- pipeline_forced_on: Try to honor :ref:`Engine.max_fps`. Pipelining is always on. This is the same behavior as Desktop PC. +- ``pipeline_forced_on``: Try to honor :ref:`Engine.max_fps`. Pipelining is always on. This is the same behavior as a desktop PC. -- auto_fps_pipeline_forced_on: Autocalculate max fps. Actual max_fps will be between 0 and :ref:`Engine.max_fps`. While this sounds convenient, beware that Swappy will often downgrade max fps until it finds something that can be met and sustained. That means if your game runs between 40fps and 60fps on a 60hz screen, after some time Swappy will downgrade max fps so that the game renders at perfect 30fps. +- ``auto_fps_pipeline_forced_on``: Calculate the max FPS automatically. The actual max FPS will be between ``0`` and :ref:`Engine.max_fps`. While this sounds convenient, beware that Swappy will often downgrade the max FPS until it finds a value that can be maintained. That means, if your game runs between 40fps and 60fps on a 60hz screen, after some time Swappy will downgrade the max FPS so that the game renders at a perfect 30fps. -- auto_fps_auto_pipeline: Same as auto_fps_pipeline_forced_on, but if Swappy detects that rendering is very fast (e.g. it takes < 8ms to render on a 60hz screen) Swappy will disable pipelining to minimize input latency. This is the default. +- ``auto_fps_auto_pipeline``: Same as ``auto_fps_pipeline_forced_on``, but if Swappy detects that rendering is very fast (for example it takes less than 8ms to render on a 60hz screen), Swappy will disable pipelining to minimize input latency. This is the default. -\ **Note:** If :ref:`Engine.max_fps` is 0, actual max_fps will considered as to be the screen's refresh rate (often 60hz, 90hz or 120hz depending on device model and OS settings). +\ **Note:** If :ref:`Engine.max_fps` is ``0``, the actual max FPS will be considered to be the screen's refresh rate (often 60hz, 90hz, or 120hz, depending on device model and OS settings). .. rst-class:: classref-item-separator @@ -4276,6 +4658,30 @@ Main window initial screen, this setting is used only if :ref:`display/window/si ---- +.. _class_ProjectSettings_property_display/window/size/maximize_disabled: + +.. rst-class:: classref-property + +:ref:`bool` **display/window/size/maximize_disabled** = ``false`` :ref:`🔗` + +If ``true``, the main window's maximize button is disabled. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_display/window/size/minimize_disabled: + +.. rst-class:: classref-property + +:ref:`bool` **display/window/size/minimize_disabled** = ``false`` :ref:`🔗` + +If ``true``, the main window's minimize button is disabled. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_display/window/size/mode: .. rst-class:: classref-property @@ -4836,7 +5242,7 @@ Search path for project-specific script templates. Godot will search for script If ``true``, Blender 3D scene files with the ``.blend`` extension will be imported by converting them to glTF 2.0. -This requires configuring a path to a Blender executable in the editor settings at ``filesystem/import/blender/blender_path``. Blender 3.0 or later is required. +This requires configuring a path to a Blender executable in the :ref:`EditorSettings.filesystem/import/blender/blender_path` setting. Blender 3.0 or later is required. .. rst-class:: classref-item-separator @@ -4932,9 +5338,15 @@ If ``true``, snaps :ref:`Control` node vertices to the nearest pi .. rst-class:: classref-property -:ref:`bool` **gui/common/swap_cancel_ok** :ref:`🔗` +:ref:`int` **gui/common/swap_cancel_ok** = ``0`` :ref:`🔗` -If ``true``, swaps **Cancel** and **OK** buttons in dialogs on Windows to follow interface conventions. :ref:`DisplayServer.get_swap_cancel_ok()` can be used to query whether buttons are swapped at run-time. +How to position the Cancel and OK buttons in the project's :ref:`AcceptDialog`\ s. Different platforms have different standard behaviors for this, which can be overridden using this setting. + +- **Auto** (``0``) follows the platform convention: OK first on Windows, KDE, and LXQt, Cancel first on macOS and other Linux desktop environments. :ref:`DisplayServer.get_swap_cancel_ok()` can be used to query whether buttons are swapped at run-time. + +- **Cancel First** (``1``) forces the ordering Cancel/OK. + +- **OK First** (``2``) forces the ordering OK/Cancel. \ **Note:** This doesn't affect native dialogs such as the ones spawned by :ref:`DisplayServer.dialog_show()`. @@ -5166,6 +5578,20 @@ Default :ref:`InputEventAction` to confirm a focused but ---- +.. _class_ProjectSettings_property_input/ui_accessibility_drag_and_drop: + +.. rst-class:: classref-property + +:ref:`Dictionary` **input/ui_accessibility_drag_and_drop** :ref:`🔗` + +Default :ref:`InputEventAction` to start or end a drag-and-drop operation without using mouse. + +\ **Note:** Default ``ui_*`` actions cannot be removed as they are necessary for the internal logic of several :ref:`Control`\ s. The events assigned to the action can however be modified. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_input/ui_cancel: .. rst-class:: classref-property @@ -5180,6 +5606,20 @@ Default :ref:`InputEventAction` to discard a modal or pe ---- +.. _class_ProjectSettings_property_input/ui_colorpicker_delete_preset: + +.. rst-class:: classref-property + +:ref:`Dictionary` **input/ui_colorpicker_delete_preset** :ref:`🔗` + +Default :ref:`InputEventAction` to delete a color preset in a :ref:`ColorPicker`. + +\ **Note:** Default ``ui_*`` actions cannot be removed as they are necessary for the internal logic of several :ref:`Control`\ s. The events assigned to the action can however be modified. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_input/ui_copy: .. rst-class:: classref-property @@ -5278,6 +5718,20 @@ Default :ref:`InputEventAction` to go up one directory i ---- +.. _class_ProjectSettings_property_input/ui_focus_mode: + +.. rst-class:: classref-property + +:ref:`Dictionary` **input/ui_focus_mode** :ref:`🔗` + +Default :ref:`InputEventAction` to switch :ref:`TextEdit` :ref:`input/ui_text_indent` between moving keyboard focus to the next :ref:`Control` in the scene and inputting a ``Tab`` character. + +\ **Note:** Default ``ui_*`` actions cannot be removed as they are necessary for the internal logic of several :ref:`Control`\ s. The events assigned to the action can however be modified. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_input/ui_focus_next: .. rst-class:: classref-property @@ -5334,6 +5788,58 @@ Default :ref:`InputEventAction` to duplicate a :ref:`Gra ---- +.. _class_ProjectSettings_property_input/ui_graph_follow_left: + +.. rst-class:: classref-property + +:ref:`Dictionary` **input/ui_graph_follow_left** :ref:`🔗` + +Default :ref:`InputEventAction` to follow a :ref:`GraphNode` input port connection. + +\ **Note:** Default ``ui_*`` actions cannot be removed as they are necessary for the internal logic of several :ref:`Control`\ s. The events assigned to the action can however be modified. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_input/ui_graph_follow_left.macos: + +.. rst-class:: classref-property + +:ref:`Dictionary` **input/ui_graph_follow_left.macos** :ref:`🔗` + +macOS specific override for the shortcut to follow a :ref:`GraphNode` input port connection. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_input/ui_graph_follow_right: + +.. rst-class:: classref-property + +:ref:`Dictionary` **input/ui_graph_follow_right** :ref:`🔗` + +Default :ref:`InputEventAction` to follow a :ref:`GraphNode` output port connection. + +\ **Note:** Default ``ui_*`` actions cannot be removed as they are necessary for the internal logic of several :ref:`Control`\ s. The events assigned to the action can however be modified. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_input/ui_graph_follow_right.macos: + +.. rst-class:: classref-property + +:ref:`Dictionary` **input/ui_graph_follow_right.macos** :ref:`🔗` + +macOS specific override for the shortcut to follow a :ref:`GraphNode` output port connection. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_input/ui_home: .. rst-class:: classref-property @@ -6290,6 +6796,18 @@ Override for :ref:`input_devices/pen_tablet/driver` **input_devices/pointing/android/disable_scroll_deadzone** = ``false`` :ref:`🔗` + +If ``true``, disables the scroll deadzone on Android, allowing even very small scroll movements to be registered. This may increase scroll sensitivity but can also lead to unintended scrolling from slight finger movements. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_input_devices/pointing/android/enable_long_press_as_right_click: .. rst-class:: classref-property @@ -6314,6 +6832,18 @@ If ``true``, multi-touch pan and scale gestures are enabled on Android devices. ---- +.. _class_ProjectSettings_property_input_devices/pointing/android/override_volume_buttons: + +.. rst-class:: classref-property + +:ref:`bool` **input_devices/pointing/android/override_volume_buttons** = ``false`` :ref:`🔗` + +If ``true``, system volume changes are disabled when the buttons are used within the app. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_input_devices/pointing/android/rotary_input_scroll_axis: .. rst-class:: classref-property @@ -9854,12 +10384,14 @@ Controls the maximum number of physics steps that can be simulated each rendered :ref:`bool` **physics/common/physics_interpolation** = ``false`` :ref:`🔗` -If ``true``, the renderer will interpolate the transforms of physics objects between the last two transforms, so that smooth motion is seen even when physics ticks do not coincide with rendered frames. See also :ref:`Node.physics_interpolation_mode` and :ref:`Node.reset_physics_interpolation()`. +If ``true``, the renderer will interpolate the transforms of objects (both physics and non-physics) between the last two transforms, so that smooth motion is seen even when physics ticks do not coincide with rendered frames. See also :ref:`Node.reset_physics_interpolation()`. -\ **Note:** If ``true``, the physics jitter fix should be disabled by setting :ref:`physics/common/physics_jitter_fix` to ``0.0``. +\ **Note:** Although this is a global setting, finer control of individual branches of the :ref:`SceneTree` is possible using :ref:`Node.physics_interpolation_mode`. \ **Note:** This property is only read when the project starts. To toggle physics interpolation at runtime, set :ref:`SceneTree.physics_interpolation` instead. +\ **Note:** Property :ref:`physics/common/physics_jitter_fix` is automatically disabled if :ref:`physics/common/physics_interpolation` is set to ``true``, as the two methods are incompatible. + .. rst-class:: classref-item-separator ---- @@ -9914,8 +10446,6 @@ Collisions against an inactive edge will have its normal overridden to instead b \ **Note:** This does not apply when enabling Jolt's enhanced internal edge removal, which supersedes this. -\ **Note:** This setting will only be read once during the lifetime of the application. - .. rst-class:: classref-item-separator ---- @@ -9932,8 +10462,6 @@ The amount of collision margin to use for certain convex collision shapes, such \ **Note:** Setting this value too close to ``0.0`` may also negatively affect the accuracy of the collision detection with convex shapes. -\ **Note:** This setting will only be read once during the lifetime of the application. - .. rst-class:: classref-item-separator ---- @@ -10056,8 +10584,6 @@ Fraction of the total penetration to depenetrate per iteration during motion que \ **Note:** This affects methods :ref:`CharacterBody3D.move_and_slide()`, :ref:`PhysicsBody3D.move_and_collide()`, :ref:`PhysicsBody3D.test_move()` and :ref:`PhysicsServer3D.body_test_motion()`. -\ **Note:** This setting will only be read once during the lifetime of the application. - .. rst-class:: classref-item-separator ---- @@ -10072,8 +10598,6 @@ The number of iterations to run when depenetrating during motion queries. \ **Note:** This affects methods :ref:`CharacterBody3D.move_and_slide()`, :ref:`PhysicsBody3D.move_and_collide()`, :ref:`PhysicsBody3D.test_move()` and :ref:`PhysicsServer3D.body_test_motion()`. -\ **Note:** This setting will only be read once during the lifetime of the application. - .. rst-class:: classref-item-separator ---- @@ -10088,8 +10612,6 @@ If ``true``, enables Jolt's enhanced internal edge removal during motion queries \ **Note:** This affects methods :ref:`CharacterBody3D.move_and_slide()`, :ref:`PhysicsBody3D.move_and_collide()`, :ref:`PhysicsBody3D.test_move()` and :ref:`PhysicsServer3D.body_test_motion()`. -\ **Note:** This setting will only be read once during the lifetime of the application. - .. rst-class:: classref-item-separator ---- @@ -10104,8 +10626,6 @@ If ``true``, populates the ``face_index`` field in the results of :ref:`PhysicsD \ **Note:** Enabling this setting will increase Jolt's memory usage for :ref:`ConcavePolygonShape3D` by around 25%. -\ **Note:** This setting will only be read once during the lifetime of the application. - .. rst-class:: classref-item-separator ---- @@ -10122,8 +10642,6 @@ If ``true``, enables Jolt's enhanced internal edge removal during shape queries. \ **Note:** Enabling this setting can cause certain shapes to be culled from the results entirely, but you will get at least one intersection per body. -\ **Note:** This setting will only be read once during the lifetime of the application. - .. rst-class:: classref-item-separator ---- @@ -10216,8 +10734,6 @@ If ``true``, enables the body pair contact cache, which removes the need for pot The minimum velocity needed before a collision can be bouncy, in meters per second. -\ **Note:** This setting will only be read once during the lifetime of the application. - .. rst-class:: classref-item-separator ---- @@ -10696,6 +11212,8 @@ Default background clear color. Overridable per :ref:`Viewport` Sets how the glow effect is upscaled before being copied onto the screen. Linear is faster, but looks blocky. Bicubic is slower but looks smooth. +\ **Note:** :ref:`rendering/environment/glow/upscale_mode` is only effective when using the Forward+ or Mobile rendering methods, as Compatibility uses a different glow implementation. + .. rst-class:: classref-item-separator ---- @@ -11922,6 +12440,8 @@ Limits the number of layers to use in radiance maps when using importance sampli If ``true``, uses texture arrays instead of mipmaps for reflection probes and panorama backgrounds (sky). This reduces jitter noise and upscaling artifacts on reflections, but is significantly slower to compute and uses :ref:`rendering/reflections/sky_reflections/roughness_layers` times more memory. +\ **Note:** Texture array reflections are always disabled on macOS on Intel GPUs due to driver bugs. + .. rst-class:: classref-item-separator ---- @@ -12178,7 +12698,7 @@ If ``true``, the forward renderer will fall back to Direct3D 12 if Vulkan is not If ``true``, the forward renderer will fall back to OpenGL 3 if Direct3D 12, Metal, and Vulkan are not supported. -\ **Note:** This setting is implemented only on Windows, Android, macOS, iOS, and Linux/X11. +\ **Note:** This setting is implemented on Windows, Android, macOS, iOS, and Linux/X11. .. rst-class:: classref-item-separator @@ -12192,7 +12712,7 @@ If ``true``, the forward renderer will fall back to OpenGL 3 if Direct3D 12, Met If ``true``, the forward renderer will fall back to Vulkan if Direct3D 12 (on Windows) or Metal (on macOS x86_64) are not supported. The fallback is always attempted regardless of this setting if Direct3D 12 (Windows) or Metal (macOS) driver support was disabled at compile time. -\ **Note:** This setting is implemented only on Windows and macOS. +\ **Note:** This setting is implemented on Windows and macOS. .. rst-class:: classref-item-separator @@ -12787,7 +13307,7 @@ The ratio of :ref:`WorkerThreadPool`'s threads that will :ref:`int` **threading/worker_pool/max_threads** = ``-1`` :ref:`🔗` -Maximum number of threads to be used by :ref:`WorkerThreadPool`. Value of ``-1`` means no limit. +Maximum number of threads to be used by :ref:`WorkerThreadPool`. Value of ``-1`` means ``1`` on Web, or a number of *logical* CPU cores available on other platforms (see :ref:`OS.get_processor_count()`). .. rst-class:: classref-item-separator @@ -12923,7 +13443,7 @@ If ``true``, the hand tracking extension is enabled if available. If ``true``, support for the controller inferred data source is requested. If supported, you will receive hand tracking data even if the user has a controller in hand, with finger positions automatically inferred from controller input and/or sensors. -\ **Node:** This requires the OpenXR data source extension and controller inferred handtracking to be supported by the XR runtime. If not supported this setting will be ignored. :ref:`xr/openxr/extensions/hand_tracking` must be enabled for this setting to be used. +\ **Note:** This requires the OpenXR data source extension and controller inferred handtracking to be supported by the XR runtime. If not supported this setting will be ignored. :ref:`xr/openxr/extensions/hand_tracking` must be enabled for this setting to be used. .. rst-class:: classref-item-separator @@ -12937,7 +13457,7 @@ If ``true``, support for the controller inferred data source is requested. If su If ``true``, support for the unobstructed data source is requested. If supported, you will receive hand tracking data based on the actual finger positions of the user often determined by optical tracking. -\ **Node:** This requires the OpenXR data source extension and unobstructed handtracking to be supported by the XR runtime. If not supported this setting will be ignored. :ref:`xr/openxr/extensions/hand_tracking` must be enabled for this setting to be used. +\ **Note:** This requires the OpenXR data source extension and unobstructed handtracking to be supported by the XR runtime. If not supported this setting will be ignored. :ref:`xr/openxr/extensions/hand_tracking` must be enabled for this setting to be used. .. rst-class:: classref-item-separator @@ -13198,6 +13718,18 @@ Similar to :ref:`get_setting()`, but a +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_method_get_setting_with_override_and_custom_features: + +.. rst-class:: classref-method + +:ref:`Variant` **get_setting_with_override_and_custom_features**\ (\ name\: :ref:`StringName`, features\: :ref:`PackedStringArray`\ ) |const| :ref:`🔗` + +Similar to :ref:`get_setting_with_override()`, but applies feature tag overrides instead of current OS features. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_rdtextureview.rst b/classes/class_rdtextureview.rst index 5e5f54c16..05d088232 100644 --- a/classes/class_rdtextureview.rst +++ b/classes/class_rdtextureview.rst @@ -30,7 +30,7 @@ Properties :widths: auto +------------------------------------------------------------+----------------------------------------------------------------------+---------+ - | :ref:`DataFormat` | :ref:`format_override` | ``218`` | + | :ref:`DataFormat` | :ref:`format_override` | ``232`` | +------------------------------------------------------------+----------------------------------------------------------------------+---------+ | :ref:`TextureSwizzle` | :ref:`swizzle_a` | ``6`` | +------------------------------------------------------------+----------------------------------------------------------------------+---------+ @@ -54,7 +54,7 @@ Property Descriptions .. rst-class:: classref-property -:ref:`DataFormat` **format_override** = ``218`` :ref:`🔗` +:ref:`DataFormat` **format_override** = ``232`` :ref:`🔗` .. rst-class:: classref-property-setget diff --git a/classes/class_rdvertexattribute.rst b/classes/class_rdvertexattribute.rst index d8c35a411..b86c0ccc9 100644 --- a/classes/class_rdvertexattribute.rst +++ b/classes/class_rdvertexattribute.rst @@ -30,7 +30,7 @@ Properties :widths: auto +--------------------------------------------------------------+--------------------------------------------------------------+---------+ - | :ref:`DataFormat` | :ref:`format` | ``218`` | + | :ref:`DataFormat` | :ref:`format` | ``232`` | +--------------------------------------------------------------+--------------------------------------------------------------+---------+ | :ref:`VertexFrequency` | :ref:`frequency` | ``0`` | +--------------------------------------------------------------+--------------------------------------------------------------+---------+ @@ -54,7 +54,7 @@ Property Descriptions .. rst-class:: classref-property -:ref:`DataFormat` **format** = ``218`` :ref:`🔗` +:ref:`DataFormat` **format** = ``232`` :ref:`🔗` .. rst-class:: classref-property-setget diff --git a/classes/class_refcounted.rst b/classes/class_refcounted.rst index 6ed715a9a..fdda0c7df 100644 --- a/classes/class_refcounted.rst +++ b/classes/class_refcounted.rst @@ -12,7 +12,7 @@ RefCounted **Inherits:** :ref:`Object` -**Inherited By:** :ref:`AESContext`, :ref:`AStar2D`, :ref:`AStar3D`, :ref:`AStarGrid2D`, :ref:`AudioEffectInstance`, :ref:`AudioSample`, :ref:`AudioSamplePlayback`, :ref:`AudioStreamPlayback`, :ref:`CameraFeed`, :ref:`CharFXTransform`, :ref:`ConfigFile`, :ref:`Crypto`, :ref:`DirAccess`, :ref:`DTLSServer`, :ref:`EditorContextMenuPlugin`, :ref:`EditorDebuggerPlugin`, :ref:`EditorDebuggerSession`, :ref:`EditorExportPlatform`, :ref:`EditorExportPlugin`, :ref:`EditorExportPreset`, :ref:`EditorFeatureProfile`, :ref:`EditorFileSystemImportFormatSupportQuery`, :ref:`EditorInspectorPlugin`, :ref:`EditorResourceConversionPlugin`, :ref:`EditorResourcePreviewGenerator`, :ref:`EditorResourceTooltipPlugin`, :ref:`EditorSceneFormatImporter`, :ref:`EditorScenePostImport`, :ref:`EditorScenePostImportPlugin`, :ref:`EditorScript`, :ref:`EditorTranslationParserPlugin`, :ref:`EncodedObjectAsID`, :ref:`ENetConnection`, :ref:`EngineProfiler`, :ref:`Expression`, :ref:`FileAccess`, :ref:`GLTFObjectModelProperty`, :ref:`HashingContext`, :ref:`HMACContext`, :ref:`HTTPClient`, :ref:`ImageFormatLoader`, :ref:`JavaClass`, :ref:`JavaObject`, :ref:`JavaScriptObject`, :ref:`KinematicCollision2D`, :ref:`KinematicCollision3D`, :ref:`Lightmapper`, :ref:`MeshConvexDecompositionSettings`, :ref:`MeshDataTool`, :ref:`MultiplayerAPI`, :ref:`Mutex`, :ref:`NavigationPathQueryParameters2D`, :ref:`NavigationPathQueryParameters3D`, :ref:`NavigationPathQueryResult2D`, :ref:`NavigationPathQueryResult3D`, :ref:`Node3DGizmo`, :ref:`OggPacketSequencePlayback`, :ref:`OpenXRAPIExtension`, :ref:`PackedDataContainerRef`, :ref:`PacketPeer`, :ref:`PCKPacker`, :ref:`PhysicsPointQueryParameters2D`, :ref:`PhysicsPointQueryParameters3D`, :ref:`PhysicsRayQueryParameters2D`, :ref:`PhysicsRayQueryParameters3D`, :ref:`PhysicsShapeQueryParameters2D`, :ref:`PhysicsShapeQueryParameters3D`, :ref:`PhysicsTestMotionParameters2D`, :ref:`PhysicsTestMotionParameters3D`, :ref:`PhysicsTestMotionResult2D`, :ref:`PhysicsTestMotionResult3D`, :ref:`RandomNumberGenerator`, :ref:`RDAttachmentFormat`, :ref:`RDFramebufferPass`, :ref:`RDPipelineColorBlendState`, :ref:`RDPipelineColorBlendStateAttachment`, :ref:`RDPipelineDepthStencilState`, :ref:`RDPipelineMultisampleState`, :ref:`RDPipelineRasterizationState`, :ref:`RDPipelineSpecializationConstant`, :ref:`RDSamplerState`, :ref:`RDShaderSource`, :ref:`RDTextureFormat`, :ref:`RDTextureView`, :ref:`RDUniform`, :ref:`RDVertexAttribute`, :ref:`RegEx`, :ref:`RegExMatch`, :ref:`RenderSceneBuffers`, :ref:`RenderSceneBuffersConfiguration`, :ref:`Resource`, :ref:`ResourceFormatLoader`, :ref:`ResourceFormatSaver`, :ref:`ResourceImporter`, :ref:`SceneState`, :ref:`SceneTreeTimer`, :ref:`Semaphore`, :ref:`SkinReference`, :ref:`StreamPeer`, :ref:`SurfaceTool`, :ref:`TCPServer`, :ref:`TextLine`, :ref:`TextParagraph`, :ref:`TextServer`, :ref:`Thread`, :ref:`TLSOptions`, :ref:`TranslationDomain`, :ref:`TriangleMesh`, :ref:`Tween`, :ref:`Tweener`, :ref:`UDPServer`, :ref:`UPNP`, :ref:`UPNPDevice`, :ref:`WeakRef`, :ref:`WebRTCPeerConnection`, :ref:`XMLParser`, :ref:`XRInterface`, :ref:`XRPose`, :ref:`XRTracker`, :ref:`ZIPPacker`, :ref:`ZIPReader` +**Inherited By:** :ref:`AESContext`, :ref:`AStar2D`, :ref:`AStar3D`, :ref:`AStarGrid2D`, :ref:`AudioEffectInstance`, :ref:`AudioSample`, :ref:`AudioSamplePlayback`, :ref:`AudioStreamPlayback`, :ref:`CameraFeed`, :ref:`CharFXTransform`, :ref:`ConfigFile`, :ref:`Crypto`, :ref:`DirAccess`, :ref:`DTLSServer`, :ref:`EditorContextMenuPlugin`, :ref:`EditorDebuggerPlugin`, :ref:`EditorDebuggerSession`, :ref:`EditorExportPlatform`, :ref:`EditorExportPlugin`, :ref:`EditorExportPreset`, :ref:`EditorFeatureProfile`, :ref:`EditorFileSystemImportFormatSupportQuery`, :ref:`EditorInspectorPlugin`, :ref:`EditorResourceConversionPlugin`, :ref:`EditorResourcePreviewGenerator`, :ref:`EditorResourceTooltipPlugin`, :ref:`EditorSceneFormatImporter`, :ref:`EditorScenePostImport`, :ref:`EditorScenePostImportPlugin`, :ref:`EditorScript`, :ref:`EditorTranslationParserPlugin`, :ref:`EncodedObjectAsID`, :ref:`ENetConnection`, :ref:`EngineProfiler`, :ref:`Expression`, :ref:`FileAccess`, :ref:`GLTFObjectModelProperty`, :ref:`HashingContext`, :ref:`HMACContext`, :ref:`HTTPClient`, :ref:`ImageFormatLoader`, :ref:`JavaClass`, :ref:`JavaObject`, :ref:`JavaScriptObject`, :ref:`KinematicCollision2D`, :ref:`KinematicCollision3D`, :ref:`Lightmapper`, :ref:`MeshConvexDecompositionSettings`, :ref:`MeshDataTool`, :ref:`MultiplayerAPI`, :ref:`Mutex`, :ref:`NavigationPathQueryParameters2D`, :ref:`NavigationPathQueryParameters3D`, :ref:`NavigationPathQueryResult2D`, :ref:`NavigationPathQueryResult3D`, :ref:`Node3DGizmo`, :ref:`OggPacketSequencePlayback`, :ref:`OpenXRAPIExtension`, :ref:`OpenXRFutureResult`, :ref:`PackedDataContainerRef`, :ref:`PacketPeer`, :ref:`PCKPacker`, :ref:`PhysicsPointQueryParameters2D`, :ref:`PhysicsPointQueryParameters3D`, :ref:`PhysicsRayQueryParameters2D`, :ref:`PhysicsRayQueryParameters3D`, :ref:`PhysicsShapeQueryParameters2D`, :ref:`PhysicsShapeQueryParameters3D`, :ref:`PhysicsTestMotionParameters2D`, :ref:`PhysicsTestMotionParameters3D`, :ref:`PhysicsTestMotionResult2D`, :ref:`PhysicsTestMotionResult3D`, :ref:`RandomNumberGenerator`, :ref:`RDAttachmentFormat`, :ref:`RDFramebufferPass`, :ref:`RDPipelineColorBlendState`, :ref:`RDPipelineColorBlendStateAttachment`, :ref:`RDPipelineDepthStencilState`, :ref:`RDPipelineMultisampleState`, :ref:`RDPipelineRasterizationState`, :ref:`RDPipelineSpecializationConstant`, :ref:`RDSamplerState`, :ref:`RDShaderSource`, :ref:`RDTextureFormat`, :ref:`RDTextureView`, :ref:`RDUniform`, :ref:`RDVertexAttribute`, :ref:`RegEx`, :ref:`RegExMatch`, :ref:`RenderSceneBuffers`, :ref:`RenderSceneBuffersConfiguration`, :ref:`Resource`, :ref:`ResourceFormatLoader`, :ref:`ResourceFormatSaver`, :ref:`ResourceImporter`, :ref:`SceneState`, :ref:`SceneTreeTimer`, :ref:`Semaphore`, :ref:`SkinReference`, :ref:`StreamPeer`, :ref:`SurfaceTool`, :ref:`TCPServer`, :ref:`TextLine`, :ref:`TextParagraph`, :ref:`TextServer`, :ref:`Thread`, :ref:`TLSOptions`, :ref:`TranslationDomain`, :ref:`TriangleMesh`, :ref:`Tween`, :ref:`Tweener`, :ref:`UDPServer`, :ref:`UPNP`, :ref:`UPNPDevice`, :ref:`WeakRef`, :ref:`WebRTCPeerConnection`, :ref:`XMLParser`, :ref:`XRInterface`, :ref:`XRPose`, :ref:`XRTracker`, :ref:`ZIPPacker`, :ref:`ZIPReader` Base class for reference-counted objects. diff --git a/classes/class_renderingdevice.rst b/classes/class_renderingdevice.rst index 88e503e14..6687c052f 100644 --- a/classes/class_renderingdevice.rst +++ b/classes/class_renderingdevice.rst @@ -845,7 +845,7 @@ Alpha/red/green/blue channel data format with 1 bit of alpha, 5 bits of red, 6 b :ref:`DataFormat` **DATA_FORMAT_R8G8B8_SRGB** = ``28`` -8-bit-per-channel unsigned floating-point red/green/blue/blue channel data format with normalized value and non-linear sRGB encoding. Values are in the ``[0.0, 1.0]`` range. +8-bit-per-channel unsigned floating-point red/green/blue channel data format with normalized value and non-linear sRGB encoding. Values are in the ``[0.0, 1.0]`` range. .. _class_RenderingDevice_constant_DATA_FORMAT_B8G8R8_UNORM: @@ -2359,11 +2359,179 @@ VRAM-compressed unsigned floating-point data format with normalized value and no 16-bit-per-channel unsigned floating-point green/blue/red channel data with normalized value, plus 6 unused bits after each channel. Stored across 3 separate planes (green + blue + red). Values are in the ``[0.0, 1.0]`` range. +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_4x4_SFLOAT_BLOCK** = ``218`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_5x4_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_5x4_SFLOAT_BLOCK** = ``219`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_5x5_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_5x5_SFLOAT_BLOCK** = ``220`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_6x5_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_6x5_SFLOAT_BLOCK** = ``221`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_6x6_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_6x6_SFLOAT_BLOCK** = ``222`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_8x5_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_8x5_SFLOAT_BLOCK** = ``223`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_8x6_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_8x6_SFLOAT_BLOCK** = ``224`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_8x8_SFLOAT_BLOCK** = ``225`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_10x5_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_10x5_SFLOAT_BLOCK** = ``226`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_10x6_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_10x6_SFLOAT_BLOCK** = ``227`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_10x8_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_10x8_SFLOAT_BLOCK** = ``228`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_10x10_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_10x10_SFLOAT_BLOCK** = ``229`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_12x10_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_12x10_SFLOAT_BLOCK** = ``230`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + +.. _class_RenderingDevice_constant_DATA_FORMAT_ASTC_12x12_SFLOAT_BLOCK: + +.. rst-class:: classref-enumeration-constant + +:ref:`DataFormat` **DATA_FORMAT_ASTC_12x12_SFLOAT_BLOCK** = ``231`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + .. _class_RenderingDevice_constant_DATA_FORMAT_MAX: .. rst-class:: classref-enumeration-constant -:ref:`DataFormat` **DATA_FORMAT_MAX** = ``218`` +:ref:`DataFormat` **DATA_FORMAT_MAX** = ``232`` Represents the size of the :ref:`DataFormat` enum. @@ -4268,6 +4436,22 @@ Floating-point specialization constant. enum **Features**: :ref:`🔗` +.. _class_RenderingDevice_constant_SUPPORTS_METALFX_SPATIAL: + +.. rst-class:: classref-enumeration-constant + +:ref:`Features` **SUPPORTS_METALFX_SPATIAL** = ``3`` + +Support for MetalFX spatial upscaling. + +.. _class_RenderingDevice_constant_SUPPORTS_METALFX_TEMPORAL: + +.. rst-class:: classref-enumeration-constant + +:ref:`Features` **SUPPORTS_METALFX_TEMPORAL** = ``4`` + +Support for MetalFX temporal upscaling. + .. _class_RenderingDevice_constant_SUPPORTS_BUFFER_DEVICE_ADDRESS: .. rst-class:: classref-enumeration-constant @@ -6102,7 +6286,7 @@ This is only used by Vulkan in debug builds. Godot must also be started with the :ref:`int` **get_tracked_object_type_count**\ (\ ) |const| :ref:`🔗` -Returns how many types of trackable objects are. +Returns how many types of trackable objects there are. This is only used by Vulkan in debug builds. Godot must also be started with the ``--extra-gpu-memory-tracking`` :doc:`command line argument <../tutorials/editor/command_line_tutorial>`. @@ -6741,7 +6925,7 @@ Creates a vertex array based on the specified buffers. Optionally, ``offsets`` ( :ref:`RID` **vertex_buffer_create**\ (\ size_bytes\: :ref:`int`, data\: :ref:`PackedByteArray` = PackedByteArray(), creation_bits\: |bitfield|\[:ref:`BufferCreationBits`\] = 0\ ) :ref:`🔗` -It can be accessed with the RID that is returned. +Creates a new vertex buffer. It can be accessed with the RID that is returned. Once finished with your RID, you will want to free the RID using the RenderingDevice's :ref:`free_rid()` method. diff --git a/classes/class_renderingserver.rst b/classes/class_renderingserver.rst index f444a44cd..f185ff893 100644 --- a/classes/class_renderingserver.rst +++ b/classes/class_renderingserver.rst @@ -363,6 +363,8 @@ Methods +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`environment_set_fog`\ (\ env\: :ref:`RID`, enable\: :ref:`bool`, light_color\: :ref:`Color`, light_energy\: :ref:`float`, sun_scatter\: :ref:`float`, density\: :ref:`float`, height\: :ref:`float`, height_density\: :ref:`float`, aerial_perspective\: :ref:`float`, sky_affect\: :ref:`float`, fog_mode\: :ref:`EnvironmentFogMode` = 0\ ) | +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`environment_set_fog_depth`\ (\ env\: :ref:`RID`, curve\: :ref:`float`, begin\: :ref:`float`, end\: :ref:`float`\ ) | + +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`environment_set_glow`\ (\ env\: :ref:`RID`, enable\: :ref:`bool`, levels\: :ref:`PackedFloat32Array`, intensity\: :ref:`float`, strength\: :ref:`float`, mix\: :ref:`float`, bloom_threshold\: :ref:`float`, blend_mode\: :ref:`EnvironmentGlowBlendMode`, hdr_bleed_threshold\: :ref:`float`, hdr_bleed_scale\: :ref:`float`, hdr_luminance_cap\: :ref:`float`, glow_map_strength\: :ref:`float`, glow_map\: :ref:`RID`\ ) | +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`environment_set_sdfgi`\ (\ env\: :ref:`RID`, enable\: :ref:`bool`, cascades\: :ref:`int`, min_cell_size\: :ref:`float`, y_scale\: :ref:`EnvironmentSDFGIYScale`, use_occlusion\: :ref:`bool`, bounce_feedback\: :ref:`float`, read_sky\: :ref:`bool`, energy\: :ref:`float`, normal_bias\: :ref:`float`, probe_bias\: :ref:`float`\ ) | @@ -1720,7 +1722,7 @@ Flag used to mark that the array contains 2D vertices. :ref:`ArrayFormat` **ARRAY_FLAG_USE_DYNAMIC_UPDATE** = ``67108864`` -Flag indices that the mesh data will use ``GL_DYNAMIC_DRAW`` on GLES. Unused on Vulkan. +Flag used to mark that the mesh data will use ``GL_DYNAMIC_DRAW`` on GLES. Unused on Vulkan. .. _class_RenderingServer_constant_ARRAY_FLAG_USE_8_BONE_WEIGHTS: @@ -2158,7 +2160,7 @@ Normal bias used to offset shadow lookup by object normal. Can be used to fix se :ref:`LightParam` **LIGHT_PARAM_SHADOW_BIAS** = ``15`` -Bias the shadow lookup to fix self-shadowing artifacts. +Bias for the shadow lookup to fix self-shadowing artifacts. .. _class_RenderingServer_constant_LIGHT_PARAM_SHADOW_PANCAKE_SIZE: @@ -2994,7 +2996,7 @@ Use bilinear scaling for the viewport's 3D buffer. The amount of scaling can be :ref:`ViewportScaling3DMode` **VIEWPORT_SCALING_3D_MODE_FSR** = ``1`` -Use AMD FidelityFX Super Resolution 1.0 upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`Viewport.scaling_3d_scale`. Values less than ``1.0`` will be result in the viewport being upscaled using FSR. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` disables scaling. +Use AMD FidelityFX Super Resolution 1.0 upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`Viewport.scaling_3d_scale`. Values less than ``1.0`` will result in the viewport being upscaled using FSR. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` disables scaling. .. _class_RenderingServer_constant_VIEWPORT_SCALING_3D_MODE_FSR2: @@ -3002,7 +3004,7 @@ Use AMD FidelityFX Super Resolution 1.0 upscaling for the viewport's 3D buffer. :ref:`ViewportScaling3DMode` **VIEWPORT_SCALING_3D_MODE_FSR2** = ``2`` -Use AMD FidelityFX Super Resolution 2.2 upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`Viewport.scaling_3d_scale`. Values less than ``1.0`` will be result in the viewport being upscaled using FSR2. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` will use FSR2 at native resolution as a TAA solution. +Use AMD FidelityFX Super Resolution 2.2 upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`Viewport.scaling_3d_scale`. Values less than ``1.0`` will result in the viewport being upscaled using FSR2. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` will use FSR2 at native resolution as a TAA solution. .. _class_RenderingServer_constant_VIEWPORT_SCALING_3D_MODE_METALFX_SPATIAL: @@ -3010,7 +3012,7 @@ Use AMD FidelityFX Super Resolution 2.2 upscaling for the viewport's 3D buffer. :ref:`ViewportScaling3DMode` **VIEWPORT_SCALING_3D_MODE_METALFX_SPATIAL** = ``3`` -Use MetalFX spatial upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`Viewport.scaling_3d_scale`. Values less than ``1.0`` will be result in the viewport being upscaled using MetalFX. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` disables scaling. +Use MetalFX spatial upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`Viewport.scaling_3d_scale`. Values less than ``1.0`` will result in the viewport being upscaled using MetalFX. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` disables scaling. \ **Note:** Only supported when the Metal rendering driver is in use, which limits this scaling mode to macOS and iOS. @@ -3020,7 +3022,7 @@ Use MetalFX spatial upscaling for the viewport's 3D buffer. The amount of scalin :ref:`ViewportScaling3DMode` **VIEWPORT_SCALING_3D_MODE_METALFX_TEMPORAL** = ``4`` -Use MetalFX temporal upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`Viewport.scaling_3d_scale`. Values less than ``1.0`` will be result in the viewport being upscaled using MetalFX. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` will use MetalFX at native resolution as a TAA solution. +Use MetalFX temporal upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`Viewport.scaling_3d_scale`. Values less than ``1.0`` will result in the viewport being upscaled using MetalFX. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` will use MetalFX at native resolution as a TAA solution. \ **Note:** Only supported when the Metal rendering driver is in use, which limits this scaling mode to macOS and iOS. @@ -3544,6 +3546,8 @@ Objects are displayed without light information. Objects are displayed with only light information. +\ **Note:** When using this debug draw mode, custom shaders are ignored since all materials in the scene temporarily use a debug material. This means the result from custom shader functions (such as vertex displacement) won't be visible anymore when using this debug draw mode. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_OVERDRAW: .. rst-class:: classref-enumeration-constant @@ -3552,7 +3556,7 @@ Objects are displayed with only light information. Objects are displayed semi-transparent with additive blending so you can see where they are drawing over top of one another. A higher overdraw (represented by brighter colors) means you are wasting performance on drawing pixels that are being hidden behind others. -\ **Note:** When using this debug draw mode, custom shaders will be ignored. This means vertex displacement won't be visible anymore. +\ **Note:** When using this debug draw mode, custom shaders are ignored since all materials in the scene temporarily use a debug material. This means the result from custom shader functions (such as vertex displacement) won't be visible anymore when using this debug draw mode. .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_WIREFRAME: @@ -3578,7 +3582,9 @@ Normal buffer is drawn instead of regular scene so you can see the per-pixel nor :ref:`ViewportDebugDraw` **VIEWPORT_DEBUG_DRAW_VOXEL_GI_ALBEDO** = ``6`` -Objects are displayed with only the albedo value from :ref:`VoxelGI`\ s. +Objects are displayed with only the albedo value from :ref:`VoxelGI`\ s. Requires at least one visible :ref:`VoxelGI` node that has been baked to have a visible effect. + +\ **Note:** Only supported when using the Forward+ rendering method. .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_VOXEL_GI_LIGHTING: @@ -3586,7 +3592,9 @@ Objects are displayed with only the albedo value from :ref:`VoxelGI` **VIEWPORT_DEBUG_DRAW_VOXEL_GI_LIGHTING** = ``7`` -Objects are displayed with only the lighting value from :ref:`VoxelGI`\ s. +Objects are displayed with only the lighting value from :ref:`VoxelGI`\ s. Requires at least one visible :ref:`VoxelGI` node that has been baked to have a visible effect. + +\ **Note:** Only supported when using the Forward+ rendering method. .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_VOXEL_GI_EMISSION: @@ -3594,7 +3602,9 @@ Objects are displayed with only the lighting value from :ref:`VoxelGI` **VIEWPORT_DEBUG_DRAW_VOXEL_GI_EMISSION** = ``8`` -Objects are displayed with only the emission color from :ref:`VoxelGI`\ s. +Objects are displayed with only the emission color from :ref:`VoxelGI`\ s. Requires at least one visible :ref:`VoxelGI` node that has been baked to have a visible effect. + +\ **Note:** Only supported when using the Forward+ rendering method. .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_SHADOW_ATLAS: @@ -3624,6 +3634,8 @@ The last cascade shows all frustum slices to illustrate the coverage of all slic Draws the estimated scene luminance. This is a 1×1 texture that is generated when autoexposure is enabled to control the scene's exposure. +\ **Note:** Only supported when using the Forward+ or Mobile rendering methods. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_SSAO: .. rst-class:: classref-enumeration-constant @@ -3632,6 +3644,8 @@ Draws the estimated scene luminance. This is a 1×1 texture that is generated wh Draws the screen space ambient occlusion texture instead of the scene so that you can clearly see how it is affecting objects. In order for this display mode to work, you must have :ref:`Environment.ssao_enabled` set in your :ref:`WorldEnvironment`. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_SSIL: .. rst-class:: classref-enumeration-constant @@ -3640,13 +3654,19 @@ Draws the screen space ambient occlusion texture instead of the scene so that yo Draws the screen space indirect lighting texture instead of the scene so that you can clearly see how it is affecting objects. In order for this display mode to work, you must have :ref:`Environment.ssil_enabled` set in your :ref:`WorldEnvironment`. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_PSSM_SPLITS: .. rst-class:: classref-enumeration-constant :ref:`ViewportDebugDraw` **VIEWPORT_DEBUG_DRAW_PSSM_SPLITS** = ``14`` -Colors each PSSM split for the :ref:`DirectionalLight3D`\ s in the scene a different color so you can see where the splits are. In order they will be colored red, green, blue, yellow. +Colors each PSSM split for the :ref:`DirectionalLight3D`\ s in the scene a different color so you can see where the splits are. In order (from closest to furthest from the camera), they are colored red, green, blue, and yellow. + +\ **Note:** When using this debug draw mode, custom shaders are ignored since all materials in the scene temporarily use a debug material. This means the result from custom shader functions (such as vertex displacement) won't be visible anymore when using this debug draw mode. + +\ **Note:** Only supported when using the Forward+ or Mobile rendering methods. .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_DECAL_ATLAS: @@ -3656,6 +3676,8 @@ Colors each PSSM split for the :ref:`DirectionalLight3D`\ s. +\ **Note:** Only supported when using the Forward+ or Mobile rendering methods. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_SDFGI: .. rst-class:: classref-enumeration-constant @@ -3664,6 +3686,8 @@ Draws the decal atlas that stores decal textures from :ref:`Decal`\ Draws SDFGI cascade data. This is the data structure that is used to bounce lighting against and create reflections. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_SDFGI_PROBES: .. rst-class:: classref-enumeration-constant @@ -3672,13 +3696,17 @@ Draws SDFGI cascade data. This is the data structure that is used to bounce ligh Draws SDFGI probe data. This is the data structure that is used to give indirect lighting dynamic objects moving within the scene. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_GI_BUFFER: .. rst-class:: classref-enumeration-constant :ref:`ViewportDebugDraw` **VIEWPORT_DEBUG_DRAW_GI_BUFFER** = ``18`` -Draws the global illumination buffer (:ref:`VoxelGI` or SDFGI). +Draws the global illumination buffer from :ref:`VoxelGI` or SDFGI. Requires :ref:`VoxelGI` (at least one visible baked VoxelGI node) or SDFGI (:ref:`Environment.sdfgi_enabled`) to be enabled to have a visible effect. + +\ **Note:** Only supported when using the Forward+ rendering method. .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_DISABLE_LOD: @@ -3696,6 +3724,8 @@ Disable mesh LOD. All meshes are drawn with full detail, which can be used to co Draws the :ref:`OmniLight3D` cluster. Clustering determines where lights are positioned in screen-space, which allows the engine to only process these portions of the screen for lighting. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_CLUSTER_SPOT_LIGHTS: .. rst-class:: classref-enumeration-constant @@ -3704,6 +3734,8 @@ Draws the :ref:`OmniLight3D` cluster. Clustering determines w Draws the :ref:`SpotLight3D` cluster. Clustering determines where lights are positioned in screen-space, which allows the engine to only process these portions of the screen for lighting. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_CLUSTER_DECALS: .. rst-class:: classref-enumeration-constant @@ -3712,6 +3744,8 @@ Draws the :ref:`SpotLight3D` cluster. Clustering determines w Draws the :ref:`Decal` cluster. Clustering determines where decals are positioned in screen-space, which allows the engine to only process these portions of the screen for decals. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_CLUSTER_REFLECTION_PROBES: .. rst-class:: classref-enumeration-constant @@ -3720,6 +3754,8 @@ Draws the :ref:`Decal` cluster. Clustering determines where decals Draws the :ref:`ReflectionProbe` cluster. Clustering determines where reflection probes are positioned in screen-space, which allows the engine to only process these portions of the screen for reflection probes. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_OCCLUDERS: .. rst-class:: classref-enumeration-constant @@ -3728,6 +3764,8 @@ Draws the :ref:`ReflectionProbe` cluster. Clustering dete Draws the occlusion culling buffer. This low-resolution occlusion culling buffer is rasterized on the CPU and is used to check whether instances are occluded by other objects. +\ **Note:** Only supported when using the Forward+ or Mobile rendering methods. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_MOTION_VECTORS: .. rst-class:: classref-enumeration-constant @@ -3736,6 +3774,8 @@ Draws the occlusion culling buffer. This low-resolution occlusion culling buffer Draws the motion vectors buffer. This is used by temporal antialiasing to correct for motion that occurs during gameplay. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_RenderingServer_constant_VIEWPORT_DEBUG_DRAW_INTERNAL_BUFFER: .. rst-class:: classref-enumeration-constant @@ -3744,6 +3784,8 @@ Draws the motion vectors buffer. This is used by temporal antialiasing to correc Internal buffer is drawn instead of regular scene so you can see the per-pixel output that will be used by post-processing effects. +\ **Note:** Only supported when using the Forward+ or Mobile rendering methods. + .. rst-class:: classref-item-separator ---- @@ -7848,6 +7890,8 @@ Once finished with your RID, you will want to free the RID using the RenderingSe If ``enable`` is ``true``, enables bicubic upscaling for glow which improves quality at the cost of performance. Equivalent to :ref:`ProjectSettings.rendering/environment/glow/upscale_mode`. +\ **Note:** This setting is only effective when using the Forward+ or Mobile rendering methods, as Compatibility uses a different glow implementation. + .. rst-class:: classref-item-separator ---- @@ -7948,6 +7992,18 @@ Configures fog for the specified environment RID. See ``fog_*`` properties in :r ---- +.. _class_RenderingServer_method_environment_set_fog_depth: + +.. rst-class:: classref-method + +|void| **environment_set_fog_depth**\ (\ env\: :ref:`RID`, curve\: :ref:`float`, begin\: :ref:`float`, end\: :ref:`float`\ ) :ref:`🔗` + +Configures fog depth for the specified environment RID. Only has an effect when the fog mode of the environment is :ref:`ENV_FOG_MODE_DEPTH`. See ``fog_depth_*`` properties in :ref:`Environment` for more information. + +.. rst-class:: classref-item-separator + +---- + .. _class_RenderingServer_method_environment_set_glow: .. rst-class:: classref-method diff --git a/classes/class_resource.rst b/classes/class_resource.rst index 7f923aac6..15e6a4990 100644 --- a/classes/class_resource.rst +++ b/classes/class_resource.rst @@ -12,7 +12,7 @@ Resource **Inherits:** :ref:`RefCounted` **<** :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:`ColorPalette`, :ref:`Compositor`, :ref:`CompositorEffect`, :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:`NavigationMeshSourceGeometryData2D`, :ref:`NavigationMeshSourceGeometryData3D`, :ref:`NavigationPolygon`, :ref:`Noise`, :ref:`Occluder3D`, :ref:`OccluderPolygon2D`, :ref:`OggPacketSequence`, :ref:`OpenXRAction`, :ref:`OpenXRActionMap`, :ref:`OpenXRActionSet`, :ref:`OpenXRBindingModifier`, :ref:`OpenXRHapticBase`, :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:`ColorPalette`, :ref:`Compositor`, :ref:`CompositorEffect`, :ref:`CryptoKey`, :ref:`Curve`, :ref:`Curve2D`, :ref:`Curve3D`, :ref:`EditorNode3DGizmoPlugin`, :ref:`EditorSettings`, :ref:`Environment`, :ref:`FoldableGroup`, :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:`NavigationMeshSourceGeometryData2D`, :ref:`NavigationMeshSourceGeometryData3D`, :ref:`NavigationPolygon`, :ref:`Noise`, :ref:`Occluder3D`, :ref:`OccluderPolygon2D`, :ref:`OggPacketSequence`, :ref:`OpenXRAction`, :ref:`OpenXRActionMap`, :ref:`OpenXRActionSet`, :ref:`OpenXRBindingModifier`, :ref:`OpenXRHapticBase`, :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. diff --git a/classes/class_resourceimporterdynamicfont.rst b/classes/class_resourceimporterdynamicfont.rst index c92a37fd0..8cd595495 100644 --- a/classes/class_resourceimporterdynamicfont.rst +++ b/classes/class_resourceimporterdynamicfont.rst @@ -61,6 +61,8 @@ Properties +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`Dictionary` | :ref:`language_support` | ``{}`` | +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`modulate_color_glyphs` | ``false`` | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`int` | :ref:`msdf_pixel_range` | ``8`` | +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`int` | :ref:`msdf_size` | ``48`` | @@ -223,6 +225,18 @@ Override the list of languages supported by this font. If left empty, this is su ---- +.. _class_ResourceImporterDynamicFont_property_modulate_color_glyphs: + +.. rst-class:: classref-property + +:ref:`bool` **modulate_color_glyphs** = ``false`` :ref:`🔗` + +If set to ``true``, color modulation is applied when drawing colored glyphs, otherwise it's applied to the monochrome glyphs only. + +.. rst-class:: classref-item-separator + +---- + .. _class_ResourceImporterDynamicFont_property_msdf_pixel_range: .. rst-class:: classref-property diff --git a/classes/class_resourceuid.rst b/classes/class_resourceuid.rst index d379bd72a..3317049ab 100644 --- a/classes/class_resourceuid.rst +++ b/classes/class_resourceuid.rst @@ -36,6 +36,8 @@ Methods +-----------------------------+----------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`create_id`\ (\ ) | +-----------------------------+----------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`create_id_for_path`\ (\ path\: :ref:`String`\ ) | + +-----------------------------+----------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`get_id_path`\ (\ id\: :ref:`int`\ ) |const| | +-----------------------------+----------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`has_id`\ (\ id\: :ref:`int`\ ) |const| | @@ -105,6 +107,18 @@ In order for this UID to be registered, you must call :ref:`add_id()` **create_id_for_path**\ (\ path\: :ref:`String`\ ) :ref:`🔗` + +Like :ref:`create_id()`, but the UID is seeded with the provided ``path`` and project name. UIDs generated for that path will be always the same within the current project. + +.. rst-class:: classref-item-separator + +---- + .. _class_ResourceUID_method_get_id_path: .. rst-class:: classref-method diff --git a/classes/class_richtextlabel.rst b/classes/class_richtextlabel.rst index c461a1d68..ea63f3f16 100644 --- a/classes/class_richtextlabel.rst +++ b/classes/class_richtextlabel.rst @@ -53,6 +53,8 @@ Properties +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ | :ref:`AutowrapMode` | :ref:`autowrap_mode` | ``3`` | +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ + | |bitfield|\[:ref:`LineBreakFlag`\] | :ref:`autowrap_trim_flags` | ``192`` | + +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ | :ref:`bool` | :ref:`bbcode_enabled` | ``false`` | +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ | :ref:`bool` | clip_contents | ``true`` (overrides :ref:`Control`) | @@ -67,6 +69,8 @@ Properties +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ | :ref:`bool` | :ref:`fit_content` | ``false`` | +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``3`` (overrides :ref:`Control`) | + +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ | :ref:`bool` | :ref:`hint_underlined` | ``true`` | +-----------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+---------------------------------------------------------------------------+ | :ref:`HorizontalAlignment` | :ref:`horizontal_alignment` | ``0`` | @@ -119,7 +123,7 @@ Methods :widths: auto +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_image`\ (\ image\: :ref:`Texture2D`, width\: :ref:`int` = 0, height\: :ref:`int` = 0, color\: :ref:`Color` = Color(1, 1, 1, 1), inline_align\: :ref:`InlineAlignment` = 5, region\: :ref:`Rect2` = Rect2(0, 0, 0, 0), key\: :ref:`Variant` = null, pad\: :ref:`bool` = false, tooltip\: :ref:`String` = "", size_in_percent\: :ref:`bool` = false\ ) | + | |void| | :ref:`add_image`\ (\ image\: :ref:`Texture2D`, width\: :ref:`int` = 0, height\: :ref:`int` = 0, color\: :ref:`Color` = Color(1, 1, 1, 1), inline_align\: :ref:`InlineAlignment` = 5, region\: :ref:`Rect2` = Rect2(0, 0, 0, 0), key\: :ref:`Variant` = null, pad\: :ref:`bool` = false, tooltip\: :ref:`String` = "", size_in_percent\: :ref:`bool` = false, alt_text\: :ref:`String` = ""\ ) | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`add_text`\ (\ text\: :ref:`String`\ ) | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -237,10 +241,12 @@ Methods +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`push_strikethrough`\ (\ ) | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`push_table`\ (\ columns\: :ref:`int`, inline_align\: :ref:`InlineAlignment` = 0, align_to_row\: :ref:`int` = -1\ ) | + | |void| | :ref:`push_table`\ (\ columns\: :ref:`int`, inline_align\: :ref:`InlineAlignment` = 0, align_to_row\: :ref:`int` = -1, name\: :ref:`String` = ""\ ) | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`push_underline`\ (\ ) | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`reload_effects`\ (\ ) | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`remove_paragraph`\ (\ paragraph\: :ref:`int`, no_invalidate\: :ref:`bool` = false\ ) | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`scroll_to_line`\ (\ line\: :ref:`int`\ ) | @@ -261,6 +267,8 @@ Methods +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_table_column_expand`\ (\ column\: :ref:`int`, expand\: :ref:`bool`, ratio\: :ref:`int` = 1, shrink\: :ref:`bool` = true\ ) | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_table_column_name`\ (\ column\: :ref:`int`, name\: :ref:`String`\ ) | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`update_image`\ (\ key\: :ref:`Variant`, mask\: |bitfield|\[:ref:`ImageUpdateMask`\], image\: :ref:`Texture2D`, width\: :ref:`int` = 0, height\: :ref:`int` = 0, color\: :ref:`Color` = Color(1, 1, 1, 1), inline_align\: :ref:`InlineAlignment` = 5, region\: :ref:`Rect2` = Rect2(0, 0, 0, 0), pad\: :ref:`bool` = false, tooltip\: :ref:`String` = "", size_in_percent\: :ref:`bool` = false\ ) | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -617,6 +625,23 @@ If set to something other than :ref:`TextServer.AUTOWRAP_OFF`\] **autowrap_trim_flags** = ``192`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_autowrap_trim_flags**\ (\ value\: |bitfield|\[:ref:`LineBreakFlag`\]\ ) +- |bitfield|\[:ref:`LineBreakFlag`\] **get_autowrap_trim_flags**\ (\ ) + +Autowrap space trimming flags. See :ref:`TextServer.BREAK_TRIM_START_EDGE_SPACES` and :ref:`TextServer.BREAK_TRIM_END_EDGE_SPACES` for more info. + +.. rst-class:: classref-item-separator + +---- + .. _class_RichTextLabel_property_bbcode_enabled: .. rst-class:: classref-property @@ -1099,7 +1124,7 @@ Method Descriptions .. rst-class:: classref-method -|void| **add_image**\ (\ image\: :ref:`Texture2D`, width\: :ref:`int` = 0, height\: :ref:`int` = 0, color\: :ref:`Color` = Color(1, 1, 1, 1), inline_align\: :ref:`InlineAlignment` = 5, region\: :ref:`Rect2` = Rect2(0, 0, 0, 0), key\: :ref:`Variant` = null, pad\: :ref:`bool` = false, tooltip\: :ref:`String` = "", size_in_percent\: :ref:`bool` = false\ ) :ref:`🔗` +|void| **add_image**\ (\ image\: :ref:`Texture2D`, width\: :ref:`int` = 0, height\: :ref:`int` = 0, color\: :ref:`Color` = Color(1, 1, 1, 1), inline_align\: :ref:`InlineAlignment` = 5, region\: :ref:`Rect2` = Rect2(0, 0, 0, 0), key\: :ref:`Variant` = null, pad\: :ref:`bool` = false, tooltip\: :ref:`String` = "", size_in_percent\: :ref:`bool` = false, alt_text\: :ref:`String` = ""\ ) :ref:`🔗` Adds an image's opening and closing tags to the tag stack, optionally providing a ``width`` and ``height`` to resize the image, a ``color`` to tint the image and a ``region`` to only use parts of the image. @@ -1113,6 +1138,8 @@ If ``pad`` is set, and the image is smaller than the size specified by ``width`` If ``size_in_percent`` is set, ``width`` and ``height`` values are percentages of the control width instead of pixels. +\ ``alt_text`` is used as the image description for assistive apps. + .. rst-class:: classref-item-separator ---- @@ -1649,6 +1676,8 @@ Terminates tags opened after the last :ref:`push_context()` and :ref:`text_highlight_v_padding`. This can lead to overlapping highlights if background colors are placed on neighboring lines/columns, so consider setting those theme items to ``0`` if you want to avoid this. + .. rst-class:: classref-item-separator ---- @@ -1745,6 +1774,8 @@ Adds a ``[dropcap]`` tag to the tag stack. Drop cap (dropped capital) is a decor Adds a ``[fgcolor]`` tag to the tag stack. +\ **Note:** The foreground color has padding applied by default, which is controlled using :ref:`text_highlight_h_padding` and :ref:`text_highlight_v_padding`. This can lead to overlapping highlights if foreground colors are placed on neighboring lines/columns, so consider setting those theme items to ``0`` if you want to avoid this. + .. rst-class:: classref-item-separator ---- @@ -1927,9 +1958,9 @@ Adds a ``[s]`` tag to the tag stack. .. rst-class:: classref-method -|void| **push_table**\ (\ columns\: :ref:`int`, inline_align\: :ref:`InlineAlignment` = 0, align_to_row\: :ref:`int` = -1\ ) :ref:`🔗` +|void| **push_table**\ (\ columns\: :ref:`int`, inline_align\: :ref:`InlineAlignment` = 0, align_to_row\: :ref:`int` = -1, name\: :ref:`String` = ""\ ) :ref:`🔗` -Adds a ``[table=columns,inline_align]`` tag to the tag stack. Use :ref:`set_table_column_expand()` to set column expansion ratio. Use :ref:`push_cell()` to add cells. +Adds a ``[table=columns,inline_align]`` tag to the tag stack. Use :ref:`set_table_column_expand()` to set column expansion ratio. Use :ref:`push_cell()` to add cells. ``name`` is used as the table name for assistive apps. .. rst-class:: classref-item-separator @@ -1947,6 +1978,18 @@ Adds a ``[u]`` tag to the tag stack. ---- +.. _class_RichTextLabel_method_reload_effects: + +.. rst-class:: classref-method + +|void| **reload_effects**\ (\ ) :ref:`🔗` + +Reloads custom effects. Useful when :ref:`custom_effects` is modified manually. + +.. rst-class:: classref-item-separator + +---- + .. _class_RichTextLabel_method_remove_paragraph: .. rst-class:: classref-method @@ -2077,6 +2120,18 @@ If ``expand`` is ``false``, the column will not contribute to the total ratio. ---- +.. _class_RichTextLabel_method_set_table_column_name: + +.. rst-class:: classref-method + +|void| **set_table_column_name**\ (\ column\: :ref:`int`, name\: :ref:`String`\ ) :ref:`🔗` + +Sets table column name for assistive apps. + +.. rst-class:: classref-item-separator + +---- + .. _class_RichTextLabel_method_update_image: .. rst-class:: classref-method @@ -2282,7 +2337,7 @@ The vertical separation of elements in a table. :ref:`int` **text_highlight_h_padding** = ``3`` :ref:`🔗` -The horizontal padding around boxes drawn by the ``[fgcolor]`` and ``[bgcolor]`` tags. This does not affect the appearance of text selection. +The horizontal padding around boxes drawn by the ``[fgcolor]`` and ``[bgcolor]`` tags. This does not affect the appearance of text selection. To avoid any risk of neighboring highlights overlapping each other, set this to ``0`` to disable padding. .. rst-class:: classref-item-separator @@ -2294,7 +2349,7 @@ The horizontal padding around boxes drawn by the ``[fgcolor]`` and ``[bgcolor]`` :ref:`int` **text_highlight_v_padding** = ``3`` :ref:`🔗` -The vertical padding around boxes drawn by the ``[fgcolor]`` and ``[bgcolor]`` tags. This does not affect the appearance of text selection. +The vertical padding around boxes drawn by the ``[fgcolor]`` and ``[bgcolor]`` tags. This does not affect the appearance of text selection. To avoid any risk of neighboring highlights overlapping each other, set this to ``0`` to disable padding. .. rst-class:: classref-item-separator diff --git a/classes/class_scenestate.rst b/classes/class_scenestate.rst index 28c604c31..ba7d2ea3e 100644 --- a/classes/class_scenestate.rst +++ b/classes/class_scenestate.rst @@ -31,6 +31,8 @@ Methods .. table:: :widths: auto + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`SceneState` | :ref:`get_base_scene_state`\ (\ ) |const| | +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array` | :ref:`get_connection_binds`\ (\ idx\: :ref:`int`\ ) |const| | +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -72,6 +74,8 @@ Methods +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`StringName` | :ref:`get_node_type`\ (\ idx\: :ref:`int`\ ) |const| | +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_path`\ (\ ) |const| | + +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_node_instance_placeholder`\ (\ idx\: :ref:`int`\ ) |const| | +---------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -137,6 +141,18 @@ If passed to :ref:`PackedScene.instantiate()` **get_base_scene_state**\ (\ ) |const| :ref:`🔗` + +Returns the **SceneState** of the scene that this scene inherits from, or ``null`` if it doesn't inherit from any scene. + +.. rst-class:: classref-item-separator + +---- + .. _class_SceneState_method_get_connection_binds: .. rst-class:: classref-method @@ -385,6 +401,18 @@ Returns the type of the node at ``idx``. ---- +.. _class_SceneState_method_get_path: + +.. rst-class:: classref-method + +:ref:`String` **get_path**\ (\ ) |const| :ref:`🔗` + +Returns the resource path to the represented :ref:`PackedScene`. + +.. rst-class:: classref-item-separator + +---- + .. _class_SceneState_method_is_node_instance_placeholder: .. rst-class:: classref-method diff --git a/classes/class_scenetree.rst b/classes/class_scenetree.rst index 2dc39b5bf..0f49afd9a 100644 --- a/classes/class_scenetree.rst +++ b/classes/class_scenetree.rst @@ -103,6 +103,10 @@ Methods +--------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`has_group`\ (\ name\: :ref:`StringName`\ ) |const| | +--------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_accessibility_enabled`\ (\ ) |const| | + +--------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_accessibility_supported`\ (\ ) |const| | + +--------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`notify_group`\ (\ group\: :ref:`StringName`, notification\: :ref:`int`\ ) | +--------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`notify_group_flags`\ (\ call_flags\: :ref:`int`, group\: :ref:`StringName`, notification\: :ref:`int`\ ) | @@ -203,6 +207,25 @@ Emitted immediately before :ref:`Node._process()` + +Emitted after the new scene is added to scene tree and initialized. Can be used to reliably access :ref:`current_scene` when changing scenes. + +:: + + # This code should be inside an autoload. + get_tree().change_scene_to_file(other_scene_path) + await get_tree().scene_changed + print(get_tree().current_scene) # Prints the new scene. + +.. rst-class:: classref-item-separator + +---- + .. _class_SceneTree_signal_tree_changed: .. rst-class:: classref-signal @@ -446,10 +469,12 @@ If ``true``, the scene tree is considered paused. This causes the following beha - |void| **set_physics_interpolation_enabled**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_physics_interpolation_enabled**\ (\ ) -If ``true``, the renderer will interpolate the transforms of physics objects between the last two transforms, so that smooth motion is seen even when physics ticks do not coincide with rendered frames. +If ``true``, the renderer will interpolate the transforms of objects (both physics and non-physics) between the last two transforms, so that smooth motion is seen even when physics ticks do not coincide with rendered frames. The default value of this property is controlled by :ref:`ProjectSettings.physics/common/physics_interpolation`. +\ **Note:** Although this is a global setting, finer control of individual branches of the **SceneTree** is possible using :ref:`Node.physics_interpolation_mode`. + .. rst-class:: classref-item-separator ---- @@ -567,6 +592,8 @@ Returns :ref:`@GlobalScope.OK` on success, :ref: 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()`. +If you want to reliably access the new scene, await the :ref:`scene_changed` signal. + .. rst-class:: classref-item-separator ---- @@ -724,6 +751,30 @@ Returns ``true`` if a node added to the given group ``name`` exists in the tree. ---- +.. _class_SceneTree_method_is_accessibility_enabled: + +.. rst-class:: classref-method + +:ref:`bool` **is_accessibility_enabled**\ (\ ) |const| :ref:`🔗` + +Returns ``true`` if accessibility features are enabled, and accessibility information updates are actively processed. + +.. rst-class:: classref-item-separator + +---- + +.. _class_SceneTree_method_is_accessibility_supported: + +.. rst-class:: classref-method + +:ref:`bool` **is_accessibility_supported**\ (\ ) |const| :ref:`🔗` + +Returns ``true`` if accessibility features are supported by the OS and enabled in project settings. + +.. rst-class:: classref-item-separator + +---- + .. _class_SceneTree_method_notify_group: .. rst-class:: classref-method diff --git a/classes/class_scriptlanguage.rst b/classes/class_scriptlanguage.rst index 89e83de30..34913bb28 100644 --- a/classes/class_scriptlanguage.rst +++ b/classes/class_scriptlanguage.rst @@ -81,6 +81,18 @@ enum **ScriptNameCasing**: :ref:`🔗` +.. _class_ScriptLanguage_constant_SCRIPT_NAME_CASING_CAMEL_CASE: + +.. rst-class:: classref-enumeration-constant + +:ref:`ScriptNameCasing` **SCRIPT_NAME_CASING_CAMEL_CASE** = ``4`` + +.. container:: contribute + + There is currently no description for this enum. Please help us by :ref:`contributing one `! + + + .. |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.)` diff --git a/classes/class_scrollbar.rst b/classes/class_scrollbar.rst index 5de397d0b..6d44eeb70 100644 --- a/classes/class_scrollbar.rst +++ b/classes/class_scrollbar.rst @@ -31,11 +31,13 @@ Properties .. table:: :widths: auto - +---------------------------+----------------------------------------------------------+-------------------------------------------------------------+ - | :ref:`float` | :ref:`custom_step` | ``-1.0`` | - +---------------------------+----------------------------------------------------------+-------------------------------------------------------------+ - | :ref:`float` | step | ``0.0`` (overrides :ref:`Range`) | - +---------------------------+----------------------------------------------------------+-------------------------------------------------------------+ + +------------------------------------------+----------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`float` | :ref:`custom_step` | ``-1.0`` | + +------------------------------------------+----------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``3`` (overrides :ref:`Control`) | + +------------------------------------------+----------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`float` | step | ``0.0`` (overrides :ref:`Range`) | + +------------------------------------------+----------------------------------------------------------+---------------------------------------------------------------------+ .. rst-class:: classref-reftable-group diff --git a/classes/class_signal.rst b/classes/class_signal.rst index 0f8493a4e..e37c4d9e0 100644 --- a/classes/class_signal.rst +++ b/classes/class_signal.rst @@ -44,6 +44,150 @@ In GDScript, signals can be declared with the ``signal`` keyword. In C#, you may +Connecting signals is one of the most common operations in Godot and the API gives many options to do so, which are described further down. The code block below shows the recommended approach. + + +.. tabs:: + + .. code-tab:: gdscript + + func _ready(): + var button = Button.new() + # `button_down` here is a Signal Variant type. We therefore call the Signal.connect() method, not Object.connect(). + # See discussion below for a more in-depth overview of the API. + button.button_down.connect(_on_button_down) + + # This assumes that a `Player` class exists, which defines a `hit` signal. + var player = Player.new() + # We use Signal.connect() again, and we also use the Callable.bind() method, + # which returns a new Callable with the parameter binds. + player.hit.connect(_on_player_hit.bind("sword", 100)) + + func _on_button_down(): + print("Button down!") + + func _on_player_hit(weapon_type, damage): + print("Hit with weapon %s for %d damage." % [weapon_type, damage]) + + .. code-tab:: csharp + + public override void _Ready() + { + var button = new Button(); + // C# supports passing signals as events, so we can use this idiomatic construct: + button.ButtonDown += OnButtonDown; + + // This assumes that a `Player` class exists, which defines a `Hit` signal. + var player = new Player(); + // We can use lambdas when we need to bind additional parameters. + player.Hit += () => OnPlayerHit("sword", 100); + } + + private void OnButtonDown() + { + GD.Print("Button down!"); + } + + private void OnPlayerHit(string weaponType, int damage) + { + GD.Print($"Hit with weapon {weaponType} for {damage} damage."); + } + + + +\ **\ ``Object.connect()`` or ``Signal.connect()``?**\ + +As seen above, the recommended method to connect signals is not :ref:`Object.connect()`. The code block below shows the four options for connecting signals, using either this legacy method or the recommended :ref:`connect()`, and using either an implicit :ref:`Callable` or a manually defined one. + + +.. tabs:: + + .. code-tab:: gdscript + + func _ready(): + var button = Button.new() + # Option 1: Object.connect() with an implicit Callable for the defined function. + button.connect("button_down", _on_button_down) + # Option 2: Object.connect() with a constructed Callable using a target object and method name. + button.connect("button_down", Callable(self, "_on_button_down")) + # Option 3: Signal.connect() with an implicit Callable for the defined function. + button.button_down.connect(_on_button_down) + # Option 4: Signal.connect() with a constructed Callable using a target object and method name. + button.button_down.connect(Callable(self, "_on_button_down")) + + func _on_button_down(): + print("Button down!") + + .. code-tab:: csharp + + public override void _Ready() + { + var button = new Button(); + // Option 1: In C#, we can use signals as events and connect with this idiomatic syntax: + button.ButtonDown += OnButtonDown; + // Option 2: GodotObject.Connect() with a constructed Callable from a method group. + button.Connect(Button.SignalName.ButtonDown, Callable.From(OnButtonDown)); + // Option 3: GodotObject.Connect() with a constructed Callable using a target object and method name. + button.Connect(Button.SignalName.ButtonDown, new Callable(this, MethodName.OnButtonDown)); + } + + private void OnButtonDown() + { + GD.Print("Button down!"); + } + + + +While all options have the same outcome (``button``'s :ref:`BaseButton.button_down` signal will be connected to ``_on_button_down``), **option 3** offers the best validation: it will print a compile-time error if either the ``button_down`` **Signal** or the ``_on_button_down`` :ref:`Callable` are not defined. On the other hand, **option 2** only relies on string names and will only be able to validate either names at runtime: it will generate an error at runtime if ``"button_down"`` is not a signal, or if ``"_on_button_down"`` is not a method in the object ``self``. The main reason for using options 1, 2, or 4 would be if you actually need to use strings (e.g. to connect signals programmatically based on strings read from a configuration file). Otherwise, option 3 is the recommended (and fastest) method. + +\ **Binding and passing parameters:**\ + +The syntax to bind parameters is through :ref:`Callable.bind()`, which returns a copy of the :ref:`Callable` with its parameters bound. + +When calling :ref:`emit()` or :ref:`Object.emit_signal()`, the signal parameters can be also passed. The examples below show the relationship between these signal parameters and bound parameters. + + +.. tabs:: + + .. code-tab:: gdscript + + func _ready(): + # This assumes that a `Player` class exists, which defines a `hit` signal. + var player = Player.new() + # Using Callable.bind(). + player.hit.connect(_on_player_hit.bind("sword", 100)) + + # Parameters added when emitting the signal are passed first. + player.hit.emit("Dark lord", 5) + + # We pass two arguments when emitting (`hit_by`, `level`), + # and bind two more arguments when connecting (`weapon_type`, `damage`). + func _on_player_hit(hit_by, level, weapon_type, damage): + print("Hit by %s (level %d) with weapon %s for %d damage." % [hit_by, level, weapon_type, damage]) + + .. code-tab:: csharp + + public override void _Ready() + { + // This assumes that a `Player` class exists, which defines a `Hit` signal. + var player = new Player(); + // Using lambda expressions that create a closure that captures the additional parameters. + // The lambda only receives the parameters defined by the signal's delegate. + player.Hit += (hitBy, level) => OnPlayerHit(hitBy, level, "sword", 100); + + // Parameters added when emitting the signal are passed first. + player.EmitSignal(SignalName.Hit, "Dark lord", 5); + } + + // We pass two arguments when emitting (`hit_by`, `level`), + // and bind two more arguments when connecting (`weapon_type`, `damage`). + private void OnPlayerHit(string hitBy, int level, string weaponType, int damage) + { + GD.Print($"Hit by {hitBy} (level {level}) with weapon {weaponType} for {damage} damage."); + } + + + .. note:: There are notable differences when using this API with C#. See :ref:`doc_c_sharp_differences` for more information. @@ -171,7 +315,7 @@ Method Descriptions Connects this signal to the specified ``callable``. Optional ``flags`` can be also added to configure the connection's behavior (see :ref:`ConnectFlags` constants). You can provide additional arguments to the connected ``callable`` by using :ref:`Callable.bind()`. -A signal can only be connected once to the same :ref:`Callable`. If the signal is already connected, returns :ref:`@GlobalScope.ERR_INVALID_PARAMETER` and pushes an error message, unless the signal is connected with :ref:`Object.CONNECT_REFERENCE_COUNTED`. To prevent this, use :ref:`is_connected()` first to check for existing connections. +A signal can only be connected once to the same :ref:`Callable`. If the signal is already connected, this method returns :ref:`@GlobalScope.ERR_INVALID_PARAMETER` and generates an error, unless the signal is connected with :ref:`Object.CONNECT_REFERENCE_COUNTED`. To prevent this, use :ref:`is_connected()` first to check for existing connections. :: @@ -181,6 +325,8 @@ A signal can only be connected once to the same :ref:`Callable`. func _on_pressed(button): print(button.name, " was pressed") +\ **Note:** If the ``callable``'s object is freed, the connection will be lost. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_skeleton3d.rst b/classes/class_skeleton3d.rst index 2656f07ec..18d927f71 100644 --- a/classes/class_skeleton3d.rst +++ b/classes/class_skeleton3d.rst @@ -61,6 +61,8 @@ Methods +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`add_bone`\ (\ name\: :ref:`String`\ ) | +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`advance`\ (\ delta\: :ref:`float`\ ) | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear_bones`\ (\ ) | +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear_bones_global_pose_override`\ (\ ) | @@ -268,6 +270,14 @@ Set a flag to process modification during physics frames (see :ref:`Node.NOTIFIC Set a flag to process modification during process frames (see :ref:`Node.NOTIFICATION_INTERNAL_PROCESS`). +.. _class_Skeleton3D_constant_MODIFIER_CALLBACK_MODE_PROCESS_MANUAL: + +.. rst-class:: classref-enumeration-constant + +:ref:`ModifierCallbackModeProcess` **MODIFIER_CALLBACK_MODE_PROCESS_MANUAL** = ``2`` + +Do not process modification. Use :ref:`advance()` to process the modification manually. + .. rst-class:: classref-section-separator ---- @@ -387,6 +397,20 @@ Adds a new bone with the given name. Returns the new bone's index, or ``-1`` if ---- +.. _class_Skeleton3D_method_advance: + +.. rst-class:: classref-method + +|void| **advance**\ (\ delta\: :ref:`float`\ ) :ref:`🔗` + +Manually advance the child :ref:`SkeletonModifier3D`\ s by the specified time (in seconds). + +\ **Note:** The ``delta`` is temporarily accumulated in the **Skeleton3D**, and the deferred process uses the accumulated value to process the modification. + +.. rst-class:: classref-item-separator + +---- + .. _class_Skeleton3D_method_clear_bones: .. rst-class:: classref-method @@ -549,7 +573,7 @@ Returns the global rest transform for ``bone_idx``. :ref:`Variant` **get_bone_meta**\ (\ bone_idx\: :ref:`int`, key\: :ref:`StringName`\ ) |const| :ref:`🔗` -Returns bone metadata for ``bone_idx`` with ``key``. +Returns the metadata for the bone at index ``bone_idx`` with ``key``. .. rst-class:: classref-item-separator @@ -561,7 +585,7 @@ Returns bone metadata for ``bone_idx`` with ``key``. :ref:`Array`\[:ref:`StringName`\] **get_bone_meta_list**\ (\ bone_idx\: :ref:`int`\ ) |const| :ref:`🔗` -Returns a list of all metadata keys for ``bone_idx``. +Returns the list of all metadata keys for the bone at index ``bone_idx``. .. rst-class:: classref-item-separator @@ -703,7 +727,7 @@ Use for invalidating caches in IK solvers and other nodes which process bones. :ref:`bool` **has_bone_meta**\ (\ bone_idx\: :ref:`int`, key\: :ref:`StringName`\ ) |const| :ref:`🔗` -Returns whether there exists any bone metadata for ``bone_idx`` with key ``key``. +Returns ``true`` if the bone at index ``bone_idx`` has metadata with the key ``key``. .. rst-class:: classref-item-separator @@ -881,7 +905,7 @@ Sets the global pose transform, ``pose``, for the bone at ``bone_idx``. |void| **set_bone_meta**\ (\ bone_idx\: :ref:`int`, key\: :ref:`StringName`, value\: :ref:`Variant`\ ) :ref:`🔗` -Sets bone metadata for ``bone_idx``, will set the ``key`` meta to ``value``. +Sets the metadata for the bone at index ``bone_idx``, setting the ``key`` meta to ``value``. .. rst-class:: classref-item-separator diff --git a/classes/class_skeletonmodifier3d.rst b/classes/class_skeletonmodifier3d.rst index abbf2c1f6..3e9c54f48 100644 --- a/classes/class_skeletonmodifier3d.rst +++ b/classes/class_skeletonmodifier3d.rst @@ -14,7 +14,7 @@ SkeletonModifier3D **Inherited By:** :ref:`LookAtModifier3D`, :ref:`PhysicalBoneSimulator3D`, :ref:`RetargetModifier3D`, :ref:`SkeletonIK3D`, :ref:`SpringBoneSimulator3D`, :ref:`XRBodyModifier3D`, :ref:`XRHandModifier3D` -A node that may modify Skeleton3D's bone. +A node that may modify a Skeleton3D's bones. .. rst-class:: classref-introduction-group @@ -23,7 +23,7 @@ Description **SkeletonModifier3D** retrieves a target :ref:`Skeleton3D` by having a :ref:`Skeleton3D` parent. -If there is :ref:`AnimationMixer`, modification always performs after playback process of the :ref:`AnimationMixer`. +If there is an :ref:`AnimationMixer`, a modification always performs after playback process of the :ref:`AnimationMixer`. This node should be used to implement custom IK solvers, constraints, or skeleton physics. @@ -56,11 +56,13 @@ Methods .. table:: :widths: auto - +-------------------------------------+-------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_process_modification`\ (\ ) |virtual| | - +-------------------------------------+-------------------------------------------------------------------------------------------------------------+ - | :ref:`Skeleton3D` | :ref:`get_skeleton`\ (\ ) |const| | - +-------------------------------------+-------------------------------------------------------------------------------------------------------------+ + +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_process_modification`\ (\ ) |virtual| | + +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_process_modification_with_delta`\ (\ delta\: :ref:`float`\ ) |virtual| | + +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Skeleton3D` | :ref:`get_skeleton`\ (\ ) |const| | + +-------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -200,6 +202,8 @@ Method Descriptions |void| **_process_modification**\ (\ ) |virtual| :ref:`🔗` +**Deprecated:** Use :ref:`_process_modification_with_delta()` instead. + Override this virtual method to implement a custom skeleton modifier. You should do things like get the :ref:`Skeleton3D`'s current pose and apply the pose here. \ :ref:`_process_modification()` must not apply :ref:`influence` to bone poses because the :ref:`Skeleton3D` automatically applies influence to all bone poses set by the modifier. @@ -208,6 +212,22 @@ Override this virtual method to implement a custom skeleton modifier. You should ---- +.. _class_SkeletonModifier3D_private_method__process_modification_with_delta: + +.. rst-class:: classref-method + +|void| **_process_modification_with_delta**\ (\ delta\: :ref:`float`\ ) |virtual| :ref:`🔗` + +Override this virtual method to implement a custom skeleton modifier. You should do things like get the :ref:`Skeleton3D`'s current pose and apply the pose here. + +\ :ref:`_process_modification_with_delta()` must not apply :ref:`influence` to bone poses because the :ref:`Skeleton3D` automatically applies influence to all bone poses set by the modifier. + +\ ``delta`` is passed from parent :ref:`Skeleton3D`. See also :ref:`Skeleton3D.advance()`. + +.. rst-class:: classref-item-separator + +---- + .. _class_SkeletonModifier3D_method_get_skeleton: .. rst-class:: classref-method diff --git a/classes/class_springbonesimulator3d.rst b/classes/class_springbonesimulator3d.rst index 258acdb04..acdf05fd6 100644 --- a/classes/class_springbonesimulator3d.rst +++ b/classes/class_springbonesimulator3d.rst @@ -41,9 +41,11 @@ Properties .. table:: :widths: auto - +-----------------------+--------------------------------------------------------------------------+-------+ - | :ref:`int` | :ref:`setting_count` | ``0`` | - +-----------------------+--------------------------------------------------------------------------+-------+ + +-------------------------------+----------------------------------------------------------------------------+----------------------+ + | :ref:`Vector3` | :ref:`external_force` | ``Vector3(0, 0, 0)`` | + +-------------------------------+----------------------------------------------------------------------------+----------------------+ + | :ref:`int` | :ref:`setting_count` | ``0`` | + +-------------------------------+----------------------------------------------------------------------------+----------------------+ .. rst-class:: classref-reftable-group @@ -361,6 +363,25 @@ Enumerated value for the unconstrained rotation. Property Descriptions --------------------- +.. _class_SpringBoneSimulator3D_property_external_force: + +.. rst-class:: classref-property + +:ref:`Vector3` **external_force** = ``Vector3(0, 0, 0)`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_external_force**\ (\ value\: :ref:`Vector3`\ ) +- :ref:`Vector3` **get_external_force**\ (\ ) + +The constant force that always affected bones. It is equal to the result when the parent :ref:`Skeleton3D` moves at this speed in the opposite direction. + +This is useful for effects such as wind and anti-gravity. + +.. rst-class:: classref-item-separator + +---- + .. _class_SpringBoneSimulator3D_property_setting_count: .. rst-class:: classref-property @@ -389,7 +410,7 @@ Method Descriptions :ref:`bool` **are_all_child_collisions_enabled**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` -Returns ``true`` if the all child :ref:`SpringBoneCollision3D`\ s are contained in the collision list at ``index`` in the settings. +Returns ``true`` if all child :ref:`SpringBoneCollision3D`\ s are contained in the collision list at ``index`` in the settings. .. rst-class:: classref-item-separator @@ -975,9 +996,9 @@ Sets the drag force damping curve of the bone chain. |void| **set_enable_all_child_collisions**\ (\ index\: :ref:`int`, enabled\: :ref:`bool`\ ) :ref:`🔗` -If sets ``enabled`` to ``true``, the all child :ref:`SpringBoneCollision3D`\ s are collided and :ref:`set_exclude_collision_path()` is enabled as an exclusion list at ``index`` in the settings. +If ``enabled`` is ``true``, all child :ref:`SpringBoneCollision3D`\ s are colliding and :ref:`set_exclude_collision_path()` is enabled as an exclusion list at ``index`` in the settings. -If sets ``enabled`` to ``false``, you need to manually register all valid collisions with :ref:`set_collision_path()`. +If ``enabled`` is ``false``, you need to manually register all valid collisions with :ref:`set_collision_path()`. .. rst-class:: classref-item-separator diff --git a/classes/class_spritebase3d.rst b/classes/class_spritebase3d.rst index b3f7c82d3..b17943898 100644 --- a/classes/class_spritebase3d.rst +++ b/classes/class_spritebase3d.rst @@ -371,7 +371,7 @@ If ``true``, texture can be seen from the back as well, if ``false``, it is invi - |void| **set_draw_flag**\ (\ flag\: :ref:`DrawFlags`, enabled\: :ref:`bool`\ ) - :ref:`bool` **get_draw_flag**\ (\ flag\: :ref:`DrawFlags`\ ) |const| -If ``true``, the label is rendered at the same size regardless of distance. +If ``true``, the texture is rendered at the same size regardless of distance. The texture's size on screen is the same as if the camera was ``1.0`` units away from the texture's origin, regardless of the actual distance from the camera. The :ref:`Camera3D`'s field of view (or :ref:`Camera3D.size` when in orthogonal/frustum mode) still affects the size the sprite is drawn at. .. rst-class:: classref-item-separator diff --git a/classes/class_streampeer.rst b/classes/class_streampeer.rst index f59119718..a11518e5c 100644 --- a/classes/class_streampeer.rst +++ b/classes/class_streampeer.rst @@ -258,7 +258,7 @@ Gets a half-precision float from the stream. :ref:`Array` **get_partial_data**\ (\ bytes\: :ref:`int`\ ) :ref:`🔗` -Returns a chunk data with the received bytes. The number of bytes to be received can be requested in the "bytes" argument. If not enough bytes are available, the function will return how many were actually received. This function returns two values, an :ref:`Error` code, and a data array. +Returns a chunk data with the received bytes. The number of bytes to be received can be requested in the ``bytes`` argument. If not enough bytes are available, the function will return how many were actually received. This function returns two values: an :ref:`Error` code and a data array. .. rst-class:: classref-item-separator diff --git a/classes/class_streampeergzip.rst b/classes/class_streampeergzip.rst index 8870bb807..92725c7de 100644 --- a/classes/class_streampeergzip.rst +++ b/classes/class_streampeergzip.rst @@ -70,7 +70,9 @@ Clears this stream, resetting the internal state. :ref:`Error` **finish**\ (\ ) :ref:`🔗` -Finalizes the stream, compressing or decompressing any buffered chunk left. +Finalizes the stream, compressing any buffered chunk left. + +You must call it only when you are compressing. .. rst-class:: classref-item-separator diff --git a/classes/class_string.rst b/classes/class_string.rst index f34bc3b60..376ad7c6e 100644 --- a/classes/class_string.rst +++ b/classes/class_string.rst @@ -197,10 +197,18 @@ Methods +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`path_join`\ (\ file\: :ref:`String`\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`remove_char`\ (\ what\: :ref:`int`\ ) |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`remove_chars`\ (\ chars\: :ref:`String`\ ) |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`repeat`\ (\ count\: :ref:`int`\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`replace`\ (\ what\: :ref:`String`, forwhat\: :ref:`String`\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`replace_char`\ (\ key\: :ref:`int`, with\: :ref:`int`\ ) |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`replace_chars`\ (\ keys\: :ref:`String`, with\: :ref:`int`\ ) |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`replacen`\ (\ what\: :ref:`String`, forwhat\: :ref:`String`\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`reverse`\ (\ ) |const| | @@ -247,8 +255,12 @@ Methods +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`to_int`\ (\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`to_kebab_case`\ (\ ) |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`to_lower`\ (\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedByteArray` | :ref:`to_multibyte_char_buffer`\ (\ encoding\: :ref:`String` = ""\ ) |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`to_pascal_case`\ (\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`to_snake_case`\ (\ ) |const| | @@ -273,6 +285,8 @@ Methods +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`uri_encode`\ (\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`uri_file_decode`\ (\ ) |const| | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`validate_filename`\ (\ ) |const| | +-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`validate_node_name`\ (\ ) |const| | @@ -492,7 +506,7 @@ Changes the appearance of the string: replaces underscores (``_``) with spaces, Performs a case-sensitive comparison to another string. Returns ``-1`` if less than, ``1`` if greater than, or ``0`` if equal. "Less than" and "greater than" are determined by the `Unicode code points `__ of each string, which roughly matches the alphabetical order. -With different string lengths, returns ``1`` if this string is longer than the ``to`` string, or ``-1`` if shorter. Note that the length of empty strings is *always* ``0``. +If the character comparison reaches the end of one string, but the other string contains more characters, then it will use length as the deciding factor: ``1`` will be returned if this string is longer than the ``to`` string, or ``-1`` if shorter. Note that the length of empty strings is always ``0``. To get a :ref:`bool` result from a string comparison, use the ``==`` operator instead. See also :ref:`nocasecmp_to()`, :ref:`filecasecmp_to()`, and :ref:`naturalcasecmp_to()`. @@ -893,13 +907,13 @@ Decodes a hexadecimal string as a :ref:`PackedByteArray`. var text = "hello world" var encoded = text.to_utf8_buffer().hex_encode() # outputs "68656c6c6f20776f726c64" - print(buf.hex_decode().get_string_from_utf8()) + print(encoded.hex_decode().get_string_from_utf8()) .. code-tab:: csharp var text = "hello world"; var encoded = text.ToUtf8Buffer().HexEncode(); // outputs "68656c6c6f20776f726c64" - GD.Print(buf.HexDecode().GetStringFromUtf8()); + GD.Print(encoded.HexDecode().GetStringFromUtf8()); @@ -1368,7 +1382,7 @@ Performs a **case-sensitive**, *natural order* comparison to another string. Ret When used for sorting, natural order comparison orders sequences of numbers by the combined value of each digit as is often expected, instead of the single digit's value. A sorted sequence of numbered strings will be ``["1", "2", "3", ...]``, not ``["1", "10", "2", "3", ...]``. -With different string lengths, returns ``1`` if this string is longer than the ``to`` string, or ``-1`` if shorter. Note that the length of empty strings is *always* ``0``. +If the character comparison reaches the end of one string, but the other string contains more characters, then it will use length as the deciding factor: ``1`` will be returned if this string is longer than the ``to`` string, or ``-1`` if shorter. Note that the length of empty strings is always ``0``. To get a :ref:`bool` result from a string comparison, use the ``==`` operator instead. See also :ref:`naturalnocasecmp_to()`, :ref:`filecasecmp_to()`, and :ref:`nocasecmp_to()`. @@ -1386,7 +1400,7 @@ Performs a **case-insensitive**, *natural order* comparison to another string. R When used for sorting, natural order comparison orders sequences of numbers by the combined value of each digit as is often expected, instead of the single digit's value. A sorted sequence of numbered strings will be ``["1", "2", "3", ...]``, not ``["1", "10", "2", "3", ...]``. -With different string lengths, returns ``1`` if this string is longer than the ``to`` string, or ``-1`` if shorter. Note that the length of empty strings is *always* ``0``. +If the character comparison reaches the end of one string, but the other string contains more characters, then it will use length as the deciding factor: ``1`` will be returned if this string is longer than the ``to`` string, or ``-1`` if shorter. Note that the length of empty strings is always ``0``. To get a :ref:`bool` result from a string comparison, use the ``==`` operator instead. See also :ref:`naturalcasecmp_to()`, :ref:`filenocasecmp_to()`, and :ref:`casecmp_to()`. @@ -1402,7 +1416,7 @@ To get a :ref:`bool` result from a string comparison, use the ``==`` Performs a **case-insensitive** comparison to another string. Returns ``-1`` if less than, ``1`` if greater than, or ``0`` if equal. "Less than" or "greater than" are determined by the `Unicode code points `__ of each string, which roughly matches the alphabetical order. Internally, lowercase characters are converted to uppercase for the comparison. -With different string lengths, returns ``1`` if this string is longer than the ``to`` string, or ``-1`` if shorter. Note that the length of empty strings is *always* ``0``. +If the character comparison reaches the end of one string, but the other string contains more characters, then it will use length as the deciding factor: ``1`` will be returned if this string is longer than the ``to`` string, or ``-1`` if shorter. Note that the length of empty strings is always ``0``. To get a :ref:`bool` result from a string comparison, use the ``==`` operator instead. See also :ref:`casecmp_to()`, :ref:`filenocasecmp_to()`, and :ref:`naturalnocasecmp_to()`. @@ -1483,7 +1497,7 @@ Converts the given ``number`` to a string representation, in scientific notation -\ **Note:** In C#, this method is not implemented. To achieve similar results, see C#'s `Standard numeric format strings `__ +\ **Note:** In C#, this method is not implemented. To achieve similar results, see C#'s `Standard numeric format strings `__. .. rst-class:: classref-item-separator @@ -1543,6 +1557,30 @@ Concatenates ``file`` at the end of the string as a subpath, adding ``/`` if nec ---- +.. _class_String_method_remove_char: + +.. rst-class:: classref-method + +:ref:`String` **remove_char**\ (\ what\: :ref:`int`\ ) |const| :ref:`🔗` + +Removes all occurrences of the Unicode character with code ``what``. Faster version of :ref:`replace()` when the key is only one character long and the replacement is ``""``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_String_method_remove_chars: + +.. rst-class:: classref-method + +:ref:`String` **remove_chars**\ (\ chars\: :ref:`String`\ ) |const| :ref:`🔗` + +Removes any occurrence of the characters in ``chars``. See also :ref:`remove_char()`. + +.. rst-class:: classref-item-separator + +---- + .. _class_String_method_repeat: .. rst-class:: classref-method @@ -1567,6 +1605,30 @@ Replaces all occurrences of ``what`` inside the string with the given ``forwhat` ---- +.. _class_String_method_replace_char: + +.. rst-class:: classref-method + +:ref:`String` **replace_char**\ (\ key\: :ref:`int`, with\: :ref:`int`\ ) |const| :ref:`🔗` + +Replaces all occurrences of the Unicode character with code ``key`` with the Unicode character with code ``with``. Faster version of :ref:`replace()` when the key is only one character long. To get a single character use ``"X".unicode_at(0)`` (note that some strings, like compound letters and emoji, can be made up of multiple unicode codepoints, and will not work with this method, use :ref:`length()` to make sure). + +.. rst-class:: classref-item-separator + +---- + +.. _class_String_method_replace_chars: + +.. rst-class:: classref-method + +:ref:`String` **replace_chars**\ (\ keys\: :ref:`String`, with\: :ref:`int`\ ) |const| :ref:`🔗` + +Replaces any occurrence of the characters in ``keys`` with the Unicode character with code ``with``. See also :ref:`replace_char()`. + +.. rst-class:: classref-item-separator + +---- + .. _class_String_method_replacen: .. rst-class:: classref-method @@ -1934,6 +1996,37 @@ Converts the string representing an integer number into an :ref:`int` var c = "-1.2.3".to_int() # c is -1 var d = "Hello!".to_int() # d is 0 +.. rst-class:: classref-item-separator + +---- + +.. _class_String_method_to_kebab_case: + +.. rst-class:: classref-method + +:ref:`String` **to_kebab_case**\ (\ ) |const| :ref:`🔗` + +Returns the string converted to ``kebab-case``. + +\ **Note:** Numbers followed by a *single* letter are not separated in the conversion to keep some words (such as "2D") together. + + +.. tabs:: + + .. code-tab:: gdscript + + "Node2D".to_kebab_case() # Returns "node-2d" + "2nd place".to_kebab_case() # Returns "2-nd-place" + "Texture3DAssetFolder".to_kebab_case() # Returns "texture-3d-asset-folder" + + .. code-tab:: csharp + + "Node2D".ToKebabCase(); // Returns "node-2d" + "2nd place".ToKebabCase(); // Returns "2-nd-place" + "Texture3DAssetFolder".ToKebabCase(); // Returns "texture-3d-asset-folder" + + + .. rst-class:: classref-item-separator ---- @@ -1950,6 +2043,24 @@ Returns the string converted to ``lowercase``. ---- +.. _class_String_method_to_multibyte_char_buffer: + +.. rst-class:: classref-method + +:ref:`PackedByteArray` **to_multibyte_char_buffer**\ (\ encoding\: :ref:`String` = ""\ ) |const| :ref:`🔗` + +Converts the string to system multibyte code page encoded :ref:`PackedByteArray`. If conversion fails, empty array is returned. + +The values permitted for ``encoding`` are system dependent. If ``encoding`` is empty string, system default encoding is used. + +- For Windows, see `Code Page Identifiers `__ .NET names. + +- For macOS and Linux/BSD, see ``libiconv`` library documentation and ``iconv --list`` for a list of supported encodings. + +.. rst-class:: classref-item-separator + +---- + .. _class_String_method_to_pascal_case: .. rst-class:: classref-method @@ -2112,6 +2223,8 @@ Decodes the string from its URL-encoded format. This method is meant to properly +\ **Note:** This method decodes ``+`` as space. + .. rst-class:: classref-item-separator ---- @@ -2143,6 +2256,18 @@ Encodes the string to URL-friendly format. This method is meant to properly enco +.. rst-class:: classref-item-separator + +---- + +.. _class_String_method_uri_file_decode: + +.. rst-class:: classref-method + +:ref:`String` **uri_file_decode**\ (\ ) |const| :ref:`🔗` + +Decodes the file path from its URL-encoded format. Unlike :ref:`uri_decode()` this method leaves ``+`` as is. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_stringname.rst b/classes/class_stringname.rst index ac06d1a17..cb9d9b53f 100644 --- a/classes/class_stringname.rst +++ b/classes/class_stringname.rst @@ -180,10 +180,18 @@ Methods +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`path_join`\ (\ file\: :ref:`String`\ ) |const| | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`remove_char`\ (\ what\: :ref:`int`\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`remove_chars`\ (\ chars\: :ref:`String`\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`repeat`\ (\ count\: :ref:`int`\ ) |const| | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`replace`\ (\ what\: :ref:`String`, forwhat\: :ref:`String`\ ) |const| | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`replace_char`\ (\ key\: :ref:`int`, with\: :ref:`int`\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`replace_chars`\ (\ keys\: :ref:`String`, with\: :ref:`int`\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`replacen`\ (\ what\: :ref:`String`, forwhat\: :ref:`String`\ ) |const| | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`reverse`\ (\ ) |const| | @@ -230,8 +238,12 @@ Methods +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`to_int`\ (\ ) |const| | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`to_kebab_case`\ (\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`to_lower`\ (\ ) |const| | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedByteArray` | :ref:`to_multibyte_char_buffer`\ (\ encoding\: :ref:`String` = ""\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`to_pascal_case`\ (\ ) |const| | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`to_snake_case`\ (\ ) |const| | @@ -256,6 +268,8 @@ Methods +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`uri_encode`\ (\ ) |const| | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`uri_file_decode`\ (\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`validate_filename`\ (\ ) |const| | +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`validate_node_name`\ (\ ) |const| | @@ -847,13 +861,13 @@ Decodes a hexadecimal string as a :ref:`PackedByteArray`. var text = "hello world" var encoded = text.to_utf8_buffer().hex_encode() # outputs "68656c6c6f20776f726c64" - print(buf.hex_decode().get_string_from_utf8()) + print(encoded.hex_decode().get_string_from_utf8()) .. code-tab:: csharp var text = "hello world"; var encoded = text.ToUtf8Buffer().HexEncode(); // outputs "68656c6c6f20776f726c64" - GD.Print(buf.HexDecode().GetStringFromUtf8()); + GD.Print(encoded.HexDecode().GetStringFromUtf8()); @@ -1388,6 +1402,30 @@ Concatenates ``file`` at the end of the string as a subpath, adding ``/`` if nec ---- +.. _class_StringName_method_remove_char: + +.. rst-class:: classref-method + +:ref:`String` **remove_char**\ (\ what\: :ref:`int`\ ) |const| :ref:`🔗` + +Removes all occurrences of the Unicode character with code ``what``. Faster version of :ref:`replace()` when the key is only one character long and the replacement is ``""``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_StringName_method_remove_chars: + +.. rst-class:: classref-method + +:ref:`String` **remove_chars**\ (\ chars\: :ref:`String`\ ) |const| :ref:`🔗` + +Removes any occurrence of the characters in ``chars``. See also :ref:`remove_char()`. + +.. rst-class:: classref-item-separator + +---- + .. _class_StringName_method_repeat: .. rst-class:: classref-method @@ -1412,6 +1450,30 @@ Replaces all occurrences of ``what`` inside the string with the given ``forwhat` ---- +.. _class_StringName_method_replace_char: + +.. rst-class:: classref-method + +:ref:`String` **replace_char**\ (\ key\: :ref:`int`, with\: :ref:`int`\ ) |const| :ref:`🔗` + +Replaces all occurrences of the Unicode character with code ``key`` with the Unicode character with code ``with``. Faster version of :ref:`replace()` when the key is only one character long. To get a single character use ``"X".unicode_at(0)`` (note that some strings, like compound letters and emoji, can be made up of multiple unicode codepoints, and will not work with this method, use :ref:`length()` to make sure). + +.. rst-class:: classref-item-separator + +---- + +.. _class_StringName_method_replace_chars: + +.. rst-class:: classref-method + +:ref:`String` **replace_chars**\ (\ keys\: :ref:`String`, with\: :ref:`int`\ ) |const| :ref:`🔗` + +Replaces any occurrence of the characters in ``keys`` with the Unicode character with code ``with``. See also :ref:`replace_char()`. + +.. rst-class:: classref-item-separator + +---- + .. _class_StringName_method_replacen: .. rst-class:: classref-method @@ -1779,6 +1841,37 @@ Converts the string representing an integer number into an :ref:`int` var c = "-1.2.3".to_int() # c is -1 var d = "Hello!".to_int() # d is 0 +.. rst-class:: classref-item-separator + +---- + +.. _class_StringName_method_to_kebab_case: + +.. rst-class:: classref-method + +:ref:`String` **to_kebab_case**\ (\ ) |const| :ref:`🔗` + +Returns the string converted to ``kebab-case``. + +\ **Note:** Numbers followed by a *single* letter are not separated in the conversion to keep some words (such as "2D") together. + + +.. tabs:: + + .. code-tab:: gdscript + + "Node2D".to_kebab_case() # Returns "node-2d" + "2nd place".to_kebab_case() # Returns "2-nd-place" + "Texture3DAssetFolder".to_kebab_case() # Returns "texture-3d-asset-folder" + + .. code-tab:: csharp + + "Node2D".ToKebabCase(); // Returns "node-2d" + "2nd place".ToKebabCase(); // Returns "2-nd-place" + "Texture3DAssetFolder".ToKebabCase(); // Returns "texture-3d-asset-folder" + + + .. rst-class:: classref-item-separator ---- @@ -1795,6 +1888,24 @@ Returns the string converted to ``lowercase``. ---- +.. _class_StringName_method_to_multibyte_char_buffer: + +.. rst-class:: classref-method + +:ref:`PackedByteArray` **to_multibyte_char_buffer**\ (\ encoding\: :ref:`String` = ""\ ) |const| :ref:`🔗` + +Converts the string to system multibyte code page encoded :ref:`PackedByteArray`. If conversion fails, empty array is returned. + +The values permitted for ``encoding`` are system dependent. If ``encoding`` is empty string, system default encoding is used. + +- For Windows, see `Code Page Identifiers `__ .NET names. + +- For macOS and Linux/BSD, see ``libiconv`` library documentation and ``iconv --list`` for a list of supported encodings. + +.. rst-class:: classref-item-separator + +---- + .. _class_StringName_method_to_pascal_case: .. rst-class:: classref-method @@ -1957,6 +2068,8 @@ Decodes the string from its URL-encoded format. This method is meant to properly +\ **Note:** This method decodes ``+`` as space. + .. rst-class:: classref-item-separator ---- @@ -1988,6 +2101,18 @@ Encodes the string to URL-friendly format. This method is meant to properly enco +.. rst-class:: classref-item-separator + +---- + +.. _class_StringName_method_uri_file_decode: + +.. rst-class:: classref-method + +:ref:`String` **uri_file_decode**\ (\ ) |const| :ref:`🔗` + +Decodes the file path from its URL-encoded format. Unlike :ref:`uri_decode()` this method leaves ``+`` as is. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_systemfont.rst b/classes/class_systemfont.rst index 7fc78bc4a..7fc17d15f 100644 --- a/classes/class_systemfont.rst +++ b/classes/class_systemfont.rst @@ -60,6 +60,8 @@ Properties +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`bool` | :ref:`keep_rounding_remainders` | ``true`` | +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ + | :ref:`bool` | :ref:`modulate_color_glyphs` | ``false`` | + +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`int` | :ref:`msdf_pixel_range` | ``16`` | +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`int` | :ref:`msdf_size` | ``48`` | @@ -269,6 +271,23 @@ If set to ``true``, when aligning glyphs to the pixel boundaries rounding remain ---- +.. _class_SystemFont_property_modulate_color_glyphs: + +.. rst-class:: classref-property + +:ref:`bool` **modulate_color_glyphs** = ``false`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_modulate_color_glyphs**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **is_modulate_color_glyphs**\ (\ ) + +If set to ``true``, color modulation is applied when drawing colored glyphs, otherwise it's applied to the monochrome glyphs only. + +.. rst-class:: classref-item-separator + +---- + .. _class_SystemFont_property_msdf_pixel_range: .. rst-class:: classref-property diff --git a/classes/class_tabbar.rst b/classes/class_tabbar.rst index f3cb144d0..77f90f859 100644 --- a/classes/class_tabbar.rst +++ b/classes/class_tabbar.rst @@ -32,6 +32,8 @@ Properties +-----------------------------------------------------------------------+-----------------------------------------------------------------------------------+---------------------------------------------------------------------+ | :ref:`bool` | :ref:`clip_tabs` | ``true`` | +-----------------------------------------------------------------------+-----------------------------------------------------------------------------------+---------------------------------------------------------------------+ + | :ref:`bool` | :ref:`close_with_middle_mouse` | ``true`` | + +-----------------------------------------------------------------------+-----------------------------------------------------------------------------------+---------------------------------------------------------------------+ | :ref:`int` | :ref:`current_tab` | ``-1`` | +-----------------------------------------------------------------------+-----------------------------------------------------------------------------------+---------------------------------------------------------------------+ | :ref:`bool` | :ref:`deselect_enabled` | ``false`` | @@ -158,6 +160,8 @@ Theme Properties +-----------------------------------+------------------------------------------------------------------------------+-------------------------------------+ | :ref:`int` | :ref:`outline_size` | ``0`` | +-----------------------------------+------------------------------------------------------------------------------+-------------------------------------+ + | :ref:`int` | :ref:`tab_separation` | ``0`` | + +-----------------------------------+------------------------------------------------------------------------------+-------------------------------------+ | :ref:`Font` | :ref:`font` | | +-----------------------------------+------------------------------------------------------------------------------+-------------------------------------+ | :ref:`int` | :ref:`font_size` | | @@ -252,7 +256,7 @@ Emitted when a tab is clicked, even if it is the current tab. **tab_close_pressed**\ (\ tab\: :ref:`int`\ ) :ref:`🔗` -Emitted when a tab's close button is pressed. +Emitted when a tab's close button is pressed or when middle-clicking on a tab, if :ref:`close_with_middle_mouse` is enabled. \ **Note:** Tabs are not removed automatically once the close button is pressed, this behavior needs to be programmed manually. For example: @@ -420,6 +424,23 @@ If ``true``, tabs overflowing this node's width will be hidden, displaying two n ---- +.. _class_TabBar_property_close_with_middle_mouse: + +.. rst-class:: classref-property + +:ref:`bool` **close_with_middle_mouse** = ``true`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_close_with_middle_mouse**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **get_close_with_middle_mouse**\ (\ ) + +If ``true``, middle clicking on the mouse will fire the :ref:`tab_close_pressed` signal. + +.. rst-class:: classref-item-separator + +---- + .. _class_TabBar_property_current_tab: .. rst-class:: classref-property @@ -1115,6 +1136,18 @@ The size of the tab text outline. ---- +.. _class_TabBar_theme_constant_tab_separation: + +.. rst-class:: classref-themeproperty + +:ref:`int` **tab_separation** = ``0`` :ref:`🔗` + +The space between tabs in the tab bar. + +.. rst-class:: classref-item-separator + +---- + .. _class_TabBar_theme_font_font: .. rst-class:: classref-themeproperty diff --git a/classes/class_tabcontainer.rst b/classes/class_tabcontainer.rst index 00b64f330..b08b13eb2 100644 --- a/classes/class_tabcontainer.rst +++ b/classes/class_tabcontainer.rst @@ -155,6 +155,8 @@ Theme Properties +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`int` | :ref:`side_margin` | ``8`` | +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+ + | :ref:`int` | :ref:`tab_separation` | ``0`` | + +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`Font` | :ref:`font` | | +-----------------------------------+------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`int` | :ref:`font_size` | | @@ -982,6 +984,18 @@ The margin is ignored with :ref:`TabBar.ALIGNMENT_RIGHT` **tab_separation** = ``0`` :ref:`🔗` + +The space between tabs in the tab bar. + +.. rst-class:: classref-item-separator + +---- + .. _class_TabContainer_theme_font_font: .. rst-class:: classref-themeproperty diff --git a/classes/class_textedit.rst b/classes/class_textedit.rst index 1a5c0cbcb..42bf41688 100644 --- a/classes/class_textedit.rst +++ b/classes/class_textedit.rst @@ -26,6 +26,14 @@ Description A multiline text editor. It also has limited facilities for editing code, such as syntax highlighting support. For more advanced facilities for editing code, see :ref:`CodeEdit`. +While entering text, it is possible to insert special characters using Unicode, OEM or Windows alt codes: + +- To enter Unicode codepoints, hold :kbd:`Alt` and type the codepoint on the numpad. For example, to enter the character ``á`` (U+00E1), hold :kbd:`Alt` and type :kbd:`+E1` on the numpad (the leading zeroes can be omitted). + +- To enter OEM codepoints, hold :kbd:`Alt` and type the code on the numpad. For example, to enter the character ``á`` (OEM 160), hold :kbd:`Alt` and type ``160`` on the numpad. + +- To enter Windows codepoints, hold :kbd:`Alt` and type the code on the numpad. For example, to enter the character ``á`` (Windows 0225), hold :kbd:`Alt` and type :kbd:`0`, :kbd:`2`, :kbd:`2`, :kbd:`5` on the numpad. The leading zero here must **not** be omitted, as this is how Windows codepoints are distinguished from OEM codepoints. + \ **Note:** Most viewport, caret, and edit methods contain a ``caret_index`` argument for :ref:`caret_multiple` support. The argument should be one of the following: ``-1`` for all carets, ``0`` for the main caret, or greater than ``0`` for secondary carets in the order they were created. \ **Note:** When holding down :kbd:`Alt`, the vertical scroll wheel will scroll 5 times as fast as it would normally do. This also works in the Godot script editor. @@ -121,6 +129,8 @@ Properties +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ | :ref:`SyntaxHighlighter` | :ref:`syntax_highlighter` | | +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`tab_input_mode` | ``true`` | + +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`text` | ``""`` | +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ | :ref:`TextDirection` | :ref:`text_direction` | ``0`` | @@ -1755,6 +1765,23 @@ The syntax highlighter to use. ---- +.. _class_TextEdit_property_tab_input_mode: + +.. rst-class:: classref-property + +:ref:`bool` **tab_input_mode** = ``true`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_tab_input_mode**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **get_tab_input_mode**\ (\ ) + +If ``true``, :ref:`ProjectSettings.input/ui_text_indent` input ``Tab`` character, otherwise it moves keyboard focus to the next :ref:`Control` in the scene. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextEdit_property_text: .. rst-class:: classref-property diff --git a/classes/class_textline.rst b/classes/class_textline.rst index b3b5896fe..0c2c51565 100644 --- a/classes/class_textline.rst +++ b/classes/class_textline.rst @@ -57,43 +57,45 @@ Methods .. table:: :widths: auto - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`add_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, length\: :ref:`int` = 1, baseline\: :ref:`float` = 0.0\ ) | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`add_string`\ (\ text\: :ref:`String`, font\: :ref:`Font`, font_size\: :ref:`int`, language\: :ref:`String` = "", meta\: :ref:`Variant` = null\ ) | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear`\ (\ ) | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_ascent`\ (\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_descent`\ (\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_underline_position`\ (\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_underline_thickness`\ (\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_width`\ (\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`get_object_rect`\ (\ key\: :ref:`Variant`\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array` | :ref:`get_objects`\ (\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_rid`\ (\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_size`\ (\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`hit_test`\ (\ coords\: :ref:`float`\ ) |const| | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`resize_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, baseline\: :ref:`float` = 0.0\ ) | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_bidi_override`\ (\ override\: :ref:`Array`\ ) | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`tab_align`\ (\ tab_stops\: :ref:`PackedFloat32Array`\ ) | - +-------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`add_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, length\: :ref:`int` = 1, baseline\: :ref:`float` = 0.0\ ) | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`add_string`\ (\ text\: :ref:`String`, font\: :ref:`Font`, font_size\: :ref:`int`, language\: :ref:`String` = "", meta\: :ref:`Variant` = null\ ) | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear`\ (\ ) | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`get_inferred_direction`\ (\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_ascent`\ (\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_descent`\ (\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_underline_position`\ (\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_underline_thickness`\ (\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_width`\ (\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`get_object_rect`\ (\ key\: :ref:`Variant`\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array` | :ref:`get_objects`\ (\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_rid`\ (\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_size`\ (\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`hit_test`\ (\ coords\: :ref:`float`\ ) |const| | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`resize_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, baseline\: :ref:`float` = 0.0\ ) | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_bidi_override`\ (\ override\: :ref:`Array`\ ) | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`tab_align`\ (\ tab_stops\: :ref:`PackedFloat32Array`\ ) | + +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -322,6 +324,18 @@ Draw text into a canvas item at a given position, with ``color``. ``pos`` specif ---- +.. _class_TextLine_method_get_inferred_direction: + +.. rst-class:: classref-method + +:ref:`Direction` **get_inferred_direction**\ (\ ) |const| :ref:`🔗` + +Returns the text writing direction inferred by the BiDi algorithm. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextLine_method_get_line_ascent: .. rst-class:: classref-method diff --git a/classes/class_textparagraph.rst b/classes/class_textparagraph.rst index 1c26b167e..a0bd83263 100644 --- a/classes/class_textparagraph.rst +++ b/classes/class_textparagraph.rst @@ -65,71 +65,75 @@ Methods .. table:: :widths: auto - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`add_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, length\: :ref:`int` = 1, baseline\: :ref:`float` = 0.0\ ) | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`add_string`\ (\ text\: :ref:`String`, font\: :ref:`Font`, font_size\: :ref:`int`, language\: :ref:`String` = "", meta\: :ref:`Variant` = null\ ) | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear`\ (\ ) | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear_dropcap`\ (\ ) | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_dropcap`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_dropcap_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_line`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_line_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_dropcap_lines`\ (\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_dropcap_rid`\ (\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_dropcap_size`\ (\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_ascent`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_line_count`\ (\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_descent`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`get_line_object_rect`\ (\ line\: :ref:`int`, key\: :ref:`Variant`\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array` | :ref:`get_line_objects`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`get_line_range`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_line_rid`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_line_size`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_underline_position`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_underline_thickness`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_width`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_non_wrapped_size`\ (\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_rid`\ (\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_size`\ (\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`hit_test`\ (\ coords\: :ref:`Vector2`\ ) |const| | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`resize_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, baseline\: :ref:`float` = 0.0\ ) | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_bidi_override`\ (\ override\: :ref:`Array`\ ) | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`set_dropcap`\ (\ text\: :ref:`String`, font\: :ref:`Font`, font_size\: :ref:`int`, dropcap_margins\: :ref:`Rect2` = Rect2(0, 0, 0, 0), language\: :ref:`String` = ""\ ) | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`tab_align`\ (\ tab_stops\: :ref:`PackedFloat32Array`\ ) | - +---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`add_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, length\: :ref:`int` = 1, baseline\: :ref:`float` = 0.0\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`add_string`\ (\ text\: :ref:`String`, font\: :ref:`Font`, font_size\: :ref:`int`, language\: :ref:`String` = "", meta\: :ref:`Variant` = null\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear`\ (\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear_dropcap`\ (\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_dropcap`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_dropcap_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_line`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_line_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_dropcap_lines`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_dropcap_rid`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_dropcap_size`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`get_inferred_direction`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_ascent`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_line_count`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_descent`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`get_line_object_rect`\ (\ line\: :ref:`int`, key\: :ref:`Variant`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array` | :ref:`get_line_objects`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`get_line_range`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_line_rid`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_line_size`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_underline_position`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_underline_thickness`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_width`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_non_wrapped_size`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`get_range`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_rid`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_size`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`hit_test`\ (\ coords\: :ref:`Vector2`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`resize_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, baseline\: :ref:`float` = 0.0\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_bidi_override`\ (\ override\: :ref:`Array`\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`set_dropcap`\ (\ text\: :ref:`String`, font\: :ref:`Font`, font_size\: :ref:`int`, dropcap_margins\: :ref:`Rect2` = Rect2(0, 0, 0, 0), language\: :ref:`String` = ""\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`tab_align`\ (\ tab_stops\: :ref:`PackedFloat32Array`\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -522,6 +526,18 @@ Returns drop cap bounding box size. ---- +.. _class_TextParagraph_method_get_inferred_direction: + +.. rst-class:: classref-method + +:ref:`Direction` **get_inferred_direction**\ (\ ) |const| :ref:`🔗` + +Returns the text writing direction inferred by the BiDi algorithm. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextParagraph_method_get_line_ascent: .. rst-class:: classref-method @@ -666,6 +682,18 @@ Returns the size of the bounding box of the paragraph, without line breaks. ---- +.. _class_TextParagraph_method_get_range: + +.. rst-class:: classref-method + +:ref:`Vector2i` **get_range**\ (\ ) |const| :ref:`🔗` + +Returns the character range of the paragraph. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextParagraph_method_get_rid: .. rst-class:: classref-method diff --git a/classes/class_textserver.rst b/classes/class_textserver.rst index 1357efc5c..cabb0a4dd 100644 --- a/classes/class_textserver.rst +++ b/classes/class_textserver.rst @@ -185,6 +185,8 @@ Methods +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`font_is_language_supported`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_is_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`font_is_multichannel_signed_distance_field`\ (\ font_rid\: :ref:`RID`\ ) |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`font_is_script_supported`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |const| | @@ -251,6 +253,8 @@ Methods +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`font_set_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`, supported\: :ref:`bool`\ ) | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`, force_autohinter\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`font_set_msdf_pixel_range`\ (\ font_rid\: :ref:`RID`, msdf_pixel_range\: :ref:`int`\ ) | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`font_set_msdf_size`\ (\ font_rid\: :ref:`RID`, msdf_size\: :ref:`int`\ ) | @@ -335,12 +339,34 @@ Methods +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`save_support_data`\ (\ filename\: :ref:`String`\ ) |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_get_run_count`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`shaped_get_run_direction`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`shaped_get_run_font_rid`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_get_run_font_size`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`shaped_get_run_language`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`shaped_get_run_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`shaped_get_run_range`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`shaped_get_run_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`shaped_get_span_count`\ (\ shaped\: :ref:`RID`\ ) |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`shaped_get_span_embedded_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`shaped_get_span_meta`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`shaped_get_span_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`shaped_get_span_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`shaped_get_text`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`shaped_set_span_update_font`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary` = {}\ ) | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`shaped_text_add_object`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, length\: :ref:`int` = 1, baseline\: :ref:`float` = 0.0\ ) | @@ -525,7 +551,7 @@ Font glyphs are rasterized as 8-bit grayscale anti-aliased bitmaps. Font glyphs are rasterized for LCD screens. -LCD subpixel layout is determined by the value of ``gui/theme/lcd_subpixel_layout`` project settings. +LCD subpixel layout is determined by the value of the :ref:`ProjectSettings.gui/theme/lcd_subpixel_layout` setting. LCD subpixel anti-aliasing mode is suitable only for rendering horizontal, unscaled text in 2D. @@ -837,6 +863,8 @@ Should be used only in conjunction with :ref:`BREAK_WORD_BOUND` **BREAK_TRIM_EDGE_SPACES** = ``16`` +**Deprecated:** Use ``BREAK_TRIM_START_EDGE_SPACES | BREAK_TRIM_END_EDGE_SPACES`` instead. + Remove edge spaces from the broken line segments. .. _class_TextServer_constant_BREAK_TRIM_INDENT: @@ -847,6 +875,26 @@ Remove edge spaces from the broken line segments. Subtract first line indentation width from all lines after the first one. +.. _class_TextServer_constant_BREAK_TRIM_START_EDGE_SPACES: + +.. rst-class:: classref-enumeration-constant + +:ref:`LineBreakFlag` **BREAK_TRIM_START_EDGE_SPACES** = ``64`` + +Remove spaces and line break characters from the start of broken line segments. + +E.g, after line breaking, the second segment of the following text ``test \n next``, is ``next`` if the flag is set, and `` next`` if it is not. + +.. _class_TextServer_constant_BREAK_TRIM_END_EDGE_SPACES: + +.. rst-class:: classref-enumeration-constant + +:ref:`LineBreakFlag` **BREAK_TRIM_END_EDGE_SPACES** = ``128`` + +Remove spaces and line break characters from the end of broken line segments. + +E.g, after line breaking, the first segment of the following text ``test \n next``, is ``test`` if the flag is set, and ``test \n`` if it is not. + .. rst-class:: classref-item-separator ---- @@ -939,7 +987,7 @@ Trims the text per word. :ref:`OverrunBehavior` **OVERRUN_TRIM_ELLIPSIS** = ``3`` -Trims the text per character and adds an ellipsis to indicate that parts are hidden. +Trims the text per character and adds an ellipsis to indicate that parts are hidden if trimmed text is 6 characters or longer. .. _class_TextServer_constant_OVERRUN_TRIM_WORD_ELLIPSIS: @@ -947,7 +995,23 @@ Trims the text per character and adds an ellipsis to indicate that parts are hid :ref:`OverrunBehavior` **OVERRUN_TRIM_WORD_ELLIPSIS** = ``4`` -Trims the text per word and adds an ellipsis to indicate that parts are hidden. +Trims the text per word and adds an ellipsis to indicate that parts are hidden if trimmed text is 6 characters or longer. + +.. _class_TextServer_constant_OVERRUN_TRIM_ELLIPSIS_FORCE: + +.. rst-class:: classref-enumeration-constant + +:ref:`OverrunBehavior` **OVERRUN_TRIM_ELLIPSIS_FORCE** = ``5`` + +Trims the text per character and adds an ellipsis to indicate that parts are hidden regardless of trimmed text length. + +.. _class_TextServer_constant_OVERRUN_TRIM_WORD_ELLIPSIS_FORCE: + +.. rst-class:: classref-enumeration-constant + +:ref:`OverrunBehavior` **OVERRUN_TRIM_WORD_ELLIPSIS_FORCE** = ``6`` + +Trims the text per word and adds an ellipsis to indicate that parts are hidden regardless of trimmed text length. .. rst-class:: classref-item-separator @@ -2440,6 +2504,18 @@ Returns ``true``, if font supports given language (`ISO 639 ` **font_is_modulate_color_glyphs**\ (\ font_rid\: :ref:`RID`\ ) |const| :ref:`🔗` + +Returns ``true``, if color modulation is applied when drawing colored glyphs. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServer_method_font_is_multichannel_signed_distance_field: .. rst-class:: classref-method @@ -2844,6 +2920,18 @@ Adds override for :ref:`font_is_language_supported()`, force_autohinter\: :ref:`bool`\ ) :ref:`🔗` + +If set to ``true``, color modulation is applied when drawing colored glyphs, otherwise it's applied to the monochrome glyphs only. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServer_method_font_set_msdf_pixel_range: .. rst-class:: classref-method @@ -3384,6 +3472,102 @@ Saves optional TextServer database (e.g. ICU break iterators and dictionaries) t ---- +.. _class_TextServer_method_shaped_get_run_count: + +.. rst-class:: classref-method + +:ref:`int` **shaped_get_run_count**\ (\ shaped\: :ref:`RID`\ ) |const| :ref:`🔗` + +Returns the number of uniform text runs in the buffer. + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServer_method_shaped_get_run_direction: + +.. rst-class:: classref-method + +:ref:`Direction` **shaped_get_run_direction**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the direction of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServer_method_shaped_get_run_font_rid: + +.. rst-class:: classref-method + +:ref:`RID` **shaped_get_run_font_rid**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the font RID of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServer_method_shaped_get_run_font_size: + +.. rst-class:: classref-method + +:ref:`int` **shaped_get_run_font_size**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the font size of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServer_method_shaped_get_run_language: + +.. rst-class:: classref-method + +:ref:`String` **shaped_get_run_language**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the language of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServer_method_shaped_get_run_object: + +.. rst-class:: classref-method + +:ref:`Variant` **shaped_get_run_object**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the embedded object of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServer_method_shaped_get_run_range: + +.. rst-class:: classref-method + +:ref:`Vector2i` **shaped_get_run_range**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the source text range of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServer_method_shaped_get_run_text: + +.. rst-class:: classref-method + +:ref:`String` **shaped_get_run_text**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the source text of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServer_method_shaped_get_span_count: .. rst-class:: classref-method @@ -3420,6 +3604,42 @@ Returns text span metadata. ---- +.. _class_TextServer_method_shaped_get_span_object: + +.. rst-class:: classref-method + +:ref:`Variant` **shaped_get_span_object**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the text span embedded object key. + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServer_method_shaped_get_span_text: + +.. rst-class:: classref-method + +:ref:`String` **shaped_get_span_text**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the text span source text. + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServer_method_shaped_get_text: + +.. rst-class:: classref-method + +:ref:`String` **shaped_get_text**\ (\ shaped\: :ref:`RID`\ ) |const| :ref:`🔗` + +Returns the text buffer source text, including object replacement characters. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServer_method_shaped_set_span_update_font: .. rst-class:: classref-method diff --git a/classes/class_textserverextension.rst b/classes/class_textserverextension.rst index d52a0cb4e..72bcc2159 100644 --- a/classes/class_textserverextension.rst +++ b/classes/class_textserverextension.rst @@ -170,6 +170,8 @@ Methods +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`_font_is_language_supported`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |virtual| |const| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`_font_is_multichannel_signed_distance_field`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`_font_is_script_supported`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |virtual| |const| | @@ -238,6 +240,8 @@ Methods +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_font_set_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`, supported\: :ref:`bool`\ ) |virtual| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`, modulate\: :ref:`bool`\ ) |virtual| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_font_set_msdf_pixel_range`\ (\ font_rid\: :ref:`RID`, msdf_pixel_range\: :ref:`int`\ ) |virtual| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_font_set_msdf_size`\ (\ font_rid\: :ref:`RID`, msdf_size\: :ref:`int`\ ) |virtual| | @@ -322,12 +326,34 @@ Methods +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`_save_support_data`\ (\ filename\: :ref:`String`\ ) |virtual| |const| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_get_run_count`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`_shaped_get_run_direction`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_shaped_get_run_font_rid`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_get_run_font_size`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_shaped_get_run_language`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`_shaped_get_run_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`_shaped_get_run_range`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_shaped_get_run_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`_shaped_get_span_count`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`_shaped_get_span_embedded_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`_shaped_get_span_meta`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`_shaped_get_span_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_shaped_get_span_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_shaped_get_text`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_shaped_set_span_update_font`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary`\ ) |virtual| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`_shaped_text_add_object`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment`, length\: :ref:`int`, baseline\: :ref:`float`\ ) |virtual| | @@ -1450,6 +1476,20 @@ Returns ``true``, if font supports given language (`ISO 639 ` **_font_is_modulate_color_glyphs**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| :ref:`🔗` + +**Optional.**\ + +Returns ``true``, if color modulation is applied when drawing colored glyphs. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServerExtension_private_method__font_is_multichannel_signed_distance_field: .. rst-class:: classref-method @@ -1924,6 +1964,20 @@ Adds override for :ref:`_font_is_language_supported()`, modulate\: :ref:`bool`\ ) |virtual| :ref:`🔗` + +**Optional.**\ + +If set to ``true``, color modulation is applied when drawing colored glyphs, otherwise it's applied to the monochrome glyphs only. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServerExtension_private_method__font_set_msdf_pixel_range: .. rst-class:: classref-method @@ -2512,6 +2566,118 @@ Saves optional TextServer database (e.g. ICU break iterators and dictionaries) t ---- +.. _class_TextServerExtension_private_method__shaped_get_run_count: + +.. rst-class:: classref-method + +:ref:`int` **_shaped_get_run_count**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| :ref:`🔗` + +**Required.**\ + +Returns the number of uniform text runs in the buffer. + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__shaped_get_run_direction: + +.. rst-class:: classref-method + +:ref:`Direction` **_shaped_get_run_direction**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| :ref:`🔗` + +**Required.**\ + +Returns the direction of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__shaped_get_run_font_rid: + +.. rst-class:: classref-method + +:ref:`RID` **_shaped_get_run_font_rid**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| :ref:`🔗` + +**Required.**\ + +Returns the font RID of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__shaped_get_run_font_size: + +.. rst-class:: classref-method + +:ref:`int` **_shaped_get_run_font_size**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| :ref:`🔗` + +**Required.**\ + +Returns the font size of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__shaped_get_run_language: + +.. rst-class:: classref-method + +:ref:`String` **_shaped_get_run_language**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| :ref:`🔗` + +**Required.**\ + +Returns the language of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__shaped_get_run_object: + +.. rst-class:: classref-method + +:ref:`Variant` **_shaped_get_run_object**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| :ref:`🔗` + +**Required.**\ + +Returns the embedded object of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__shaped_get_run_range: + +.. rst-class:: classref-method + +:ref:`Vector2i` **_shaped_get_run_range**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| :ref:`🔗` + +**Required.**\ + +Returns the source text range of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__shaped_get_run_text: + +.. rst-class:: classref-method + +:ref:`String` **_shaped_get_run_text**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| :ref:`🔗` + +**Required.**\ + +Returns the source text of the ``index`` text run (in visual order). + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServerExtension_private_method__shaped_get_span_count: .. rst-class:: classref-method @@ -2554,6 +2720,48 @@ Returns text span metadata. ---- +.. _class_TextServerExtension_private_method__shaped_get_span_object: + +.. rst-class:: classref-method + +:ref:`Variant` **_shaped_get_span_object**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| :ref:`🔗` + +**Required.**\ + +Returns the text span embedded object key. + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__shaped_get_span_text: + +.. rst-class:: classref-method + +:ref:`String` **_shaped_get_span_text**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| :ref:`🔗` + +**Required.**\ + +Returns the text span source text. + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__shaped_get_text: + +.. rst-class:: classref-method + +:ref:`String` **_shaped_get_text**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| :ref:`🔗` + +**Required.**\ + +Returns the text buffer source text, including object replacement characters. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServerExtension_private_method__shaped_set_span_update_font: .. rst-class:: classref-method diff --git a/classes/class_tiledata.rst b/classes/class_tiledata.rst index af4581a4d..59d0b87c3 100644 --- a/classes/class_tiledata.rst +++ b/classes/class_tiledata.rst @@ -19,7 +19,7 @@ Settings for a single tile in a :ref:`TileSet`. Description ----------- -**TileData** object represents a single tile in a :ref:`TileSet`. It is usually edited using the tileset editor, but it can be modified at runtime using :ref:`TileMap._tile_data_runtime_update()`. +**TileData** object represents a single tile in a :ref:`TileSet`. It is usually edited using the tileset editor, but it can be modified at runtime using :ref:`TileMapLayer._tile_data_runtime_update()`. .. rst-class:: classref-reftable-group @@ -334,7 +334,7 @@ Vertical point of the tile used for determining y-sorted order. - |void| **set_z_index**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_z_index**\ (\ ) -Ordering index of this tile, relative to :ref:`TileMap`. +Ordering index of this tile, relative to :ref:`TileMapLayer`. .. rst-class:: classref-section-separator diff --git a/classes/class_tilemaplayer.rst b/classes/class_tilemaplayer.rst index 250f405a3..f974307bc 100644 --- a/classes/class_tilemaplayer.rst +++ b/classes/class_tilemaplayer.rst @@ -69,6 +69,8 @@ Properties +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+ | :ref:`bool` | :ref:`occlusion_enabled` | ``true`` | +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`physics_quadrant_size` | ``16`` | + +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+ | :ref:`int` | :ref:`rendering_quadrant_size` | ``16`` | +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------+-----------------------+ | :ref:`PackedByteArray` | :ref:`tile_map_data` | ``PackedByteArray()`` | @@ -325,6 +327,27 @@ Enable or disable light occlusion. ---- +.. _class_TileMapLayer_property_physics_quadrant_size: + +.. rst-class:: classref-property + +:ref:`int` **physics_quadrant_size** = ``16`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_physics_quadrant_size**\ (\ value\: :ref:`int`\ ) +- :ref:`int` **get_physics_quadrant_size**\ (\ ) + +The **TileMapLayer**'s physics quadrant size. Within a physics quadrant, cells with similar physics properties are grouped together and their collision shapes get merged. :ref:`physics_quadrant_size` defines the length of a square's side, in the map's coordinate system, that forms the quadrant. Thus, the default quadrant size groups together ``16 * 16 = 256`` tiles. + +\ **Note:** As quadrants are created according to the map's coordinate system, the quadrant's "square shape" might not look like square in the **TileMapLayer**'s local coordinate system. + +\ **Note:** This impacts the value returned by :ref:`get_coords_for_body_rid()`. + +.. rst-class:: classref-item-separator + +---- + .. _class_TileMapLayer_property_rendering_quadrant_size: .. rst-class:: classref-property @@ -336,7 +359,7 @@ Enable or disable light occlusion. - |void| **set_rendering_quadrant_size**\ (\ value\: :ref:`int`\ ) - :ref:`int` **get_rendering_quadrant_size**\ (\ ) -The **TileMapLayer**'s quadrant size. A quadrant is a group of tiles to be drawn together on a single canvas item, for optimization purposes. :ref:`rendering_quadrant_size` defines the length of a square's side, in the map's coordinate system, that forms the quadrant. Thus, the default quadrant size groups together ``16 * 16 = 256`` tiles. +The **TileMapLayer**'s rendering quadrant size. A quadrant is a group of tiles to be drawn together on a single canvas item, for optimization purposes. :ref:`rendering_quadrant_size` defines the length of a square's side, in the map's coordinate system, that forms the quadrant. Thus, the default quadrant size groups together ``16 * 16 = 256`` tiles. The quadrant size does not apply on a Y-sorted **TileMapLayer**, as tiles are grouped by Y position instead in that case. @@ -598,7 +621,7 @@ Returns the :ref:`TileData` object associated with the given cel :ref:`Vector2i` **get_coords_for_body_rid**\ (\ body\: :ref:`RID`\ ) |const| :ref:`🔗` -Returns the coordinates of the tile for given physics body :ref:`RID`. Such an :ref:`RID` can be retrieved from :ref:`KinematicCollision2D.get_collider_rid()`, when colliding with a tile. +Returns the coordinates of the physics quadrant (see :ref:`physics_quadrant_size`) for given physics body :ref:`RID`. Such an :ref:`RID` can be retrieved from :ref:`KinematicCollision2D.get_collider_rid()`, when colliding with a tile. .. rst-class:: classref-item-separator diff --git a/classes/class_tileset.rst b/classes/class_tileset.rst index 326066cb1..37e62be44 100644 --- a/classes/class_tileset.rst +++ b/classes/class_tileset.rst @@ -269,7 +269,7 @@ Rectangular tile shape. Diamond tile shape (for isometric look). -\ **Note:** Isometric **TileSet** works best if :ref:`TileMap` and all its layers have Y-sort enabled. +\ **Note:** Isometric **TileSet** works best if all sibling :ref:`TileMapLayer`\ s and their parent inheriting from :ref:`Node2D` have Y-sort enabled. .. _class_TileSet_constant_TILE_SHAPE_HALF_OFFSET_SQUARE: @@ -563,7 +563,7 @@ Property Descriptions - |void| **set_tile_layout**\ (\ value\: :ref:`TileLayout`\ ) - :ref:`TileLayout` **get_tile_layout**\ (\ ) -For all half-offset shapes (Isometric, Hexagonal and Half-Offset square), changes the way tiles are indexed in the TileMap grid. +For all half-offset shapes (Isometric, Hexagonal and Half-Offset square), changes the way tiles are indexed in the :ref:`TileMapLayer` grid. .. rst-class:: classref-item-separator @@ -1416,9 +1416,7 @@ Removes the terrain set at index ``terrain_set``. Also updates the atlas tiles a Create an alternative-level proxy for the given identifiers. A proxy will map set of tile identifiers to another set of identifiers. -This can be used to replace a tile in all TileMaps using this TileSet, as TileMap nodes will find and use the proxy's target tile when one is available. - -Proxied tiles can be automatically replaced in TileMap nodes using the editor. +Proxied tiles can be automatically replaced in TileMapLayer nodes using the editor. .. rst-class:: classref-item-separator @@ -1432,9 +1430,7 @@ Proxied tiles can be automatically replaced in TileMap nodes using the editor. Creates a coordinates-level proxy for the given identifiers. A proxy will map set of tile identifiers to another set of identifiers. The alternative tile ID is kept the same when using coordinates-level proxies. -This can be used to replace a tile in all TileMaps using this TileSet, as TileMap nodes will find and use the proxy's target tile when one is available. - -Proxied tiles can be automatically replaced in TileMap nodes using the editor. +Proxied tiles can be automatically replaced in TileMapLayer nodes using the editor. .. rst-class:: classref-item-separator @@ -1580,9 +1576,7 @@ Changes a source's ID. Creates a source-level proxy for the given source ID. A proxy will map set of tile identifiers to another set of identifiers. Both the atlas coordinates ID and the alternative tile ID are kept the same when using source-level proxies. -This can be used to replace a source in all TileMaps using this TileSet, as TileMap nodes will find and use the proxy's target source when one is available. - -Proxied tiles can be automatically replaced in TileMap nodes using the editor. +Proxied tiles can be automatically replaced in TileMapLayer nodes using the editor. .. rst-class:: classref-item-separator diff --git a/classes/class_tilesetatlassource.rst b/classes/class_tilesetatlassource.rst index 341a29e7d..781fb4762 100644 --- a/classes/class_tilesetatlassource.rst +++ b/classes/class_tilesetatlassource.rst @@ -175,14 +175,14 @@ Constants **TRANSFORM_FLIP_H** = ``4096`` :ref:`🔗` -Represents cell's horizontal flip flag. Should be used directly with :ref:`TileMap` to flip placed tiles by altering their alternative IDs. +Represents cell's horizontal flip flag. Should be used directly with :ref:`TileMapLayer` to flip placed tiles by altering their alternative IDs. :: - var alternate_id = $TileMap.get_cell_alternative_tile(0, Vector2i(2, 2)) + var alternate_id = $TileMapLayer.get_cell_alternative_tile(Vector2i(2, 2)) if not alternate_id & TileSetAtlasSource.TRANSFORM_FLIP_H: # If tile is not already flipped, flip it. - $TileMap.set_cell(0, Vector2i(2, 2), source_id, atlas_coords, alternate_id | TileSetAtlasSource.TRANSFORM_FLIP_H) + $TileMapLayer.set_cell(Vector2i(2, 2), source_id, atlas_coords, alternate_id | TileSetAtlasSource.TRANSFORM_FLIP_H) \ **Note:** These transformations can be combined to do the equivalent of 0, 90, 180, and 270 degree rotations, as shown below: diff --git a/classes/class_tilesetscenescollectionsource.rst b/classes/class_tilesetscenescollectionsource.rst index 2da305892..4a509577b 100644 --- a/classes/class_tilesetscenescollectionsource.rst +++ b/classes/class_tilesetscenescollectionsource.rst @@ -19,9 +19,9 @@ Exposes a set of scenes as tiles for a :ref:`TileSet` resource. Description ----------- -When placed on a :ref:`TileMap`, tiles from **TileSetScenesCollectionSource** will automatically instantiate an associated scene at the cell's position in the TileMap. +When placed on a :ref:`TileMapLayer`, tiles from **TileSetScenesCollectionSource** will automatically instantiate an associated scene at the cell's position in the TileMapLayer. -Scenes are instantiated as children of the :ref:`TileMap` when it enters the tree. If you add/remove a scene tile in the :ref:`TileMap` that is already inside the tree, the :ref:`TileMap` will automatically instantiate/free the scene accordingly. +Scenes are instantiated as children of the :ref:`TileMapLayer` when it enters the tree. If you add/remove a scene tile in the :ref:`TileMapLayer` that is already inside the tree, the :ref:`TileMapLayer` will automatically instantiate/free the scene accordingly. \ **Note:** Scene tiles all occupy one tile slot and instead use alternate tile ID to identify scene index. :ref:`TileSetSource.get_tiles_count()` will always return ``1``. Use :ref:`get_scene_tiles_count()` to get a number of scenes in a **TileSetScenesCollectionSource**. @@ -225,7 +225,7 @@ Changes a scene tile's ID from ``id`` to ``new_id``. This will fail if there is |void| **set_scene_tile_scene**\ (\ id\: :ref:`int`, packed_scene\: :ref:`PackedScene`\ ) :ref:`🔗` -Assigns a :ref:`PackedScene` resource to the scene tile with ``id``. This will fail if the scene does not extend CanvasItem, as positioning properties are needed to place the scene on the TileMap. +Assigns a :ref:`PackedScene` resource to the scene tile with ``id``. This will fail if the scene does not extend :ref:`CanvasItem`, as positioning properties are needed to place the scene on the :ref:`TileMapLayer`. .. |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.)` diff --git a/classes/class_tree.rst b/classes/class_tree.rst index 2ebe1f2f5..6e9a26f98 100644 --- a/classes/class_tree.rst +++ b/classes/class_tree.rst @@ -203,6 +203,8 @@ Theme Properties +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`Color` | :ref:`font_hovered_dimmed_color` | ``Color(0.875, 0.875, 0.875, 1)`` | +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+ + | :ref:`Color` | :ref:`font_hovered_selected_color` | ``Color(1, 1, 1, 1)`` | + +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`Color` | :ref:`font_outline_color` | ``Color(0, 0, 0, 1)`` | +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`Color` | :ref:`font_selected_color` | ``Color(1, 1, 1, 1)`` | @@ -313,6 +315,10 @@ Theme Properties +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`StyleBox` | :ref:`hovered_dimmed` | | +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+ + | :ref:`StyleBox` | :ref:`hovered_selected` | | + +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+ + | :ref:`StyleBox` | :ref:`hovered_selected_focus` | | + +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`StyleBox` | :ref:`panel` | | +-----------------------------------+------------------------------------------------------------------------------------------+-------------------------------------+ | :ref:`StyleBox` | :ref:`selected` | | @@ -1399,7 +1405,7 @@ Text :ref:`Color` for a :ref:`TreeItem.CELL_MODE_CHECK` **font_hovered_color** = ``Color(0.95, 0.95, 0.95, 1)`` :ref:`🔗` -Text :ref:`Color` used when the item is hovered. +Text :ref:`Color` used when the item is hovered and not selected yet. .. rst-class:: classref-item-separator @@ -1417,6 +1423,18 @@ Text :ref:`Color` used when the item is hovered, while a button of ---- +.. _class_Tree_theme_color_font_hovered_selected_color: + +.. rst-class:: classref-themeproperty + +:ref:`Color` **font_hovered_selected_color** = ``Color(1, 1, 1, 1)`` :ref:`🔗` + +Text :ref:`Color` used when the item is hovered and selected. + +.. rst-class:: classref-item-separator + +---- + .. _class_Tree_theme_color_font_outline_color: .. rst-class:: classref-themeproperty @@ -2061,7 +2079,7 @@ The focused style for the **Tree**, drawn on top of everything. :ref:`StyleBox` **hovered** :ref:`🔗` -:ref:`StyleBox` for the item being hovered. +:ref:`StyleBox` for the item being hovered, but not selected. .. rst-class:: classref-item-separator @@ -2079,6 +2097,30 @@ The focused style for the **Tree**, drawn on top of everything. ---- +.. _class_Tree_theme_style_hovered_selected: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **hovered_selected** :ref:`🔗` + +:ref:`StyleBox` for the hovered and selected items, used when the **Tree** is not being focused. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Tree_theme_style_hovered_selected_focus: + +.. rst-class:: classref-themeproperty + +:ref:`StyleBox` **hovered_selected_focus** :ref:`🔗` + +:ref:`StyleBox` for the hovered and selected items, used when the **Tree** is being focused. + +.. rst-class:: classref-item-separator + +---- + .. _class_Tree_theme_style_panel: .. rst-class:: classref-themeproperty diff --git a/classes/class_treeitem.rst b/classes/class_treeitem.rst index 27611d641..c1403a414 100644 --- a/classes/class_treeitem.rst +++ b/classes/class_treeitem.rst @@ -51,223 +51,229 @@ Methods .. table:: :widths: auto - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_button`\ (\ column\: :ref:`int`, button\: :ref:`Texture2D`, id\: :ref:`int` = -1, disabled\: :ref:`bool` = false, tooltip_text\: :ref:`String` = ""\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_child`\ (\ child\: :ref:`TreeItem`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`call_recursive`\ (\ method\: :ref:`StringName`, ...\ ) |vararg| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear_buttons`\ (\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear_custom_bg_color`\ (\ column\: :ref:`int`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear_custom_color`\ (\ column\: :ref:`int`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TreeItem` | :ref:`create_child`\ (\ index\: :ref:`int` = -1\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`deselect`\ (\ column\: :ref:`int`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`erase_button`\ (\ column\: :ref:`int`, button_index\: :ref:`int`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`AutoTranslateMode` | :ref:`get_auto_translate_mode`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`AutowrapMode` | :ref:`get_autowrap_mode`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Texture2D` | :ref:`get_button`\ (\ column\: :ref:`int`, button_index\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_button_by_id`\ (\ column\: :ref:`int`, id\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`get_button_color`\ (\ column\: :ref:`int`, id\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_button_count`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_button_id`\ (\ column\: :ref:`int`, button_index\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_button_tooltip_text`\ (\ column\: :ref:`int`, button_index\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TreeCellMode` | :ref:`get_cell_mode`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TreeItem` | :ref:`get_child`\ (\ index\: :ref:`int`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_child_count`\ (\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`TreeItem`\] | :ref:`get_children`\ (\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`get_custom_bg_color`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`get_custom_color`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Callable` | :ref:`get_custom_draw_callback`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Font` | :ref:`get_custom_font`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_custom_font_size`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`get_expand_right`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TreeItem` | :ref:`get_first_child`\ (\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Texture2D` | :ref:`get_icon`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_icon_max_width`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`get_icon_modulate`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Texture2D` | :ref:`get_icon_overlay`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`get_icon_region`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_index`\ (\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_language`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`get_metadata`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TreeItem` | :ref:`get_next`\ (\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TreeItem` | :ref:`get_next_in_tree`\ (\ wrap\: :ref:`bool` = false\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TreeItem` | :ref:`get_next_visible`\ (\ wrap\: :ref:`bool` = false\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TreeItem` | :ref:`get_parent`\ (\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TreeItem` | :ref:`get_prev`\ (\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TreeItem` | :ref:`get_prev_in_tree`\ (\ wrap\: :ref:`bool` = false\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TreeItem` | :ref:`get_prev_visible`\ (\ wrap\: :ref:`bool` = false\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_range`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`get_range_config`\ (\ column\: :ref:`int`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`StructuredTextParser` | :ref:`get_structured_text_bidi_override`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array` | :ref:`get_structured_text_bidi_override_options`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_suffix`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_text`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`HorizontalAlignment` | :ref:`get_text_alignment`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TextDirection` | :ref:`get_text_direction`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`OverrunBehavior` | :ref:`get_text_overrun_behavior`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_tooltip_text`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Tree` | :ref:`get_tree`\ (\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_any_collapsed`\ (\ only_visible\: :ref:`bool` = false\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_button_disabled`\ (\ column\: :ref:`int`, button_index\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_checked`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_custom_set_as_button`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_edit_multiline`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_editable`\ (\ column\: :ref:`int`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_indeterminate`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_selectable`\ (\ column\: :ref:`int`\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_selected`\ (\ column\: :ref:`int`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_visible_in_tree`\ (\ ) |const| | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`move_after`\ (\ item\: :ref:`TreeItem`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`move_before`\ (\ item\: :ref:`TreeItem`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`propagate_check`\ (\ column\: :ref:`int`, emit_signal\: :ref:`bool` = true\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`remove_child`\ (\ child\: :ref:`TreeItem`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`select`\ (\ column\: :ref:`int`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_auto_translate_mode`\ (\ column\: :ref:`int`, mode\: :ref:`AutoTranslateMode`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_autowrap_mode`\ (\ column\: :ref:`int`, autowrap_mode\: :ref:`AutowrapMode`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_button`\ (\ column\: :ref:`int`, button_index\: :ref:`int`, button\: :ref:`Texture2D`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_button_color`\ (\ column\: :ref:`int`, button_index\: :ref:`int`, color\: :ref:`Color`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_button_disabled`\ (\ column\: :ref:`int`, button_index\: :ref:`int`, disabled\: :ref:`bool`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_button_tooltip_text`\ (\ column\: :ref:`int`, button_index\: :ref:`int`, tooltip\: :ref:`String`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_cell_mode`\ (\ column\: :ref:`int`, mode\: :ref:`TreeCellMode`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_checked`\ (\ column\: :ref:`int`, checked\: :ref:`bool`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_collapsed_recursive`\ (\ enable\: :ref:`bool`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_custom_as_button`\ (\ column\: :ref:`int`, enable\: :ref:`bool`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_custom_bg_color`\ (\ column\: :ref:`int`, color\: :ref:`Color`, just_outline\: :ref:`bool` = false\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_custom_color`\ (\ column\: :ref:`int`, color\: :ref:`Color`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_custom_draw`\ (\ column\: :ref:`int`, object\: :ref:`Object`, callback\: :ref:`StringName`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_custom_draw_callback`\ (\ column\: :ref:`int`, callback\: :ref:`Callable`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_custom_font`\ (\ column\: :ref:`int`, font\: :ref:`Font`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_custom_font_size`\ (\ column\: :ref:`int`, font_size\: :ref:`int`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_edit_multiline`\ (\ column\: :ref:`int`, multiline\: :ref:`bool`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_editable`\ (\ column\: :ref:`int`, enabled\: :ref:`bool`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_expand_right`\ (\ column\: :ref:`int`, enable\: :ref:`bool`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_icon`\ (\ column\: :ref:`int`, texture\: :ref:`Texture2D`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_icon_max_width`\ (\ column\: :ref:`int`, width\: :ref:`int`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_icon_modulate`\ (\ column\: :ref:`int`, modulate\: :ref:`Color`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_icon_overlay`\ (\ column\: :ref:`int`, texture\: :ref:`Texture2D`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_icon_region`\ (\ column\: :ref:`int`, region\: :ref:`Rect2`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_indeterminate`\ (\ column\: :ref:`int`, indeterminate\: :ref:`bool`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_language`\ (\ column\: :ref:`int`, language\: :ref:`String`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_metadata`\ (\ column\: :ref:`int`, meta\: :ref:`Variant`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_range`\ (\ column\: :ref:`int`, value\: :ref:`float`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_range_config`\ (\ column\: :ref:`int`, min\: :ref:`float`, max\: :ref:`float`, step\: :ref:`float`, expr\: :ref:`bool` = false\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_selectable`\ (\ column\: :ref:`int`, selectable\: :ref:`bool`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_structured_text_bidi_override`\ (\ column\: :ref:`int`, parser\: :ref:`StructuredTextParser`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_structured_text_bidi_override_options`\ (\ column\: :ref:`int`, args\: :ref:`Array`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_suffix`\ (\ column\: :ref:`int`, text\: :ref:`String`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_text`\ (\ column\: :ref:`int`, text\: :ref:`String`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_text_alignment`\ (\ column\: :ref:`int`, text_alignment\: :ref:`HorizontalAlignment`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_text_direction`\ (\ column\: :ref:`int`, direction\: :ref:`TextDirection`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_text_overrun_behavior`\ (\ column\: :ref:`int`, overrun_behavior\: :ref:`OverrunBehavior`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_tooltip_text`\ (\ column\: :ref:`int`, tooltip\: :ref:`String`\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`uncollapse_tree`\ (\ ) | - +-------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_button`\ (\ column\: :ref:`int`, button\: :ref:`Texture2D`, id\: :ref:`int` = -1, disabled\: :ref:`bool` = false, tooltip_text\: :ref:`String` = "", alt_text\: :ref:`String` = ""\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_child`\ (\ child\: :ref:`TreeItem`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`call_recursive`\ (\ method\: :ref:`StringName`, ...\ ) |vararg| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear_buttons`\ (\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear_custom_bg_color`\ (\ column\: :ref:`int`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear_custom_color`\ (\ column\: :ref:`int`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TreeItem` | :ref:`create_child`\ (\ index\: :ref:`int` = -1\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`deselect`\ (\ column\: :ref:`int`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`erase_button`\ (\ column\: :ref:`int`, button_index\: :ref:`int`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_alt_text`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`AutoTranslateMode` | :ref:`get_auto_translate_mode`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`AutowrapMode` | :ref:`get_autowrap_mode`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Texture2D` | :ref:`get_button`\ (\ column\: :ref:`int`, button_index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_button_by_id`\ (\ column\: :ref:`int`, id\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`get_button_color`\ (\ column\: :ref:`int`, id\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_button_count`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_button_id`\ (\ column\: :ref:`int`, button_index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_button_tooltip_text`\ (\ column\: :ref:`int`, button_index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TreeCellMode` | :ref:`get_cell_mode`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TreeItem` | :ref:`get_child`\ (\ index\: :ref:`int`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_child_count`\ (\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`TreeItem`\] | :ref:`get_children`\ (\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`get_custom_bg_color`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`get_custom_color`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Callable` | :ref:`get_custom_draw_callback`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Font` | :ref:`get_custom_font`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_custom_font_size`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`get_expand_right`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TreeItem` | :ref:`get_first_child`\ (\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Texture2D` | :ref:`get_icon`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_icon_max_width`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`get_icon_modulate`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Texture2D` | :ref:`get_icon_overlay`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`get_icon_region`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_index`\ (\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_language`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`get_metadata`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TreeItem` | :ref:`get_next`\ (\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TreeItem` | :ref:`get_next_in_tree`\ (\ wrap\: :ref:`bool` = false\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TreeItem` | :ref:`get_next_visible`\ (\ wrap\: :ref:`bool` = false\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TreeItem` | :ref:`get_parent`\ (\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TreeItem` | :ref:`get_prev`\ (\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TreeItem` | :ref:`get_prev_in_tree`\ (\ wrap\: :ref:`bool` = false\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TreeItem` | :ref:`get_prev_visible`\ (\ wrap\: :ref:`bool` = false\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_range`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`get_range_config`\ (\ column\: :ref:`int`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`StructuredTextParser` | :ref:`get_structured_text_bidi_override`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array` | :ref:`get_structured_text_bidi_override_options`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_suffix`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_text`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`HorizontalAlignment` | :ref:`get_text_alignment`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TextDirection` | :ref:`get_text_direction`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`OverrunBehavior` | :ref:`get_text_overrun_behavior`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_tooltip_text`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Tree` | :ref:`get_tree`\ (\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_any_collapsed`\ (\ only_visible\: :ref:`bool` = false\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_button_disabled`\ (\ column\: :ref:`int`, button_index\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_checked`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_custom_set_as_button`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_edit_multiline`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_editable`\ (\ column\: :ref:`int`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_indeterminate`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_selectable`\ (\ column\: :ref:`int`\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_selected`\ (\ column\: :ref:`int`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_visible_in_tree`\ (\ ) |const| | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`move_after`\ (\ item\: :ref:`TreeItem`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`move_before`\ (\ item\: :ref:`TreeItem`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`propagate_check`\ (\ column\: :ref:`int`, emit_signal\: :ref:`bool` = true\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`remove_child`\ (\ child\: :ref:`TreeItem`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`select`\ (\ column\: :ref:`int`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_alt_text`\ (\ column\: :ref:`int`, text\: :ref:`String`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_auto_translate_mode`\ (\ column\: :ref:`int`, mode\: :ref:`AutoTranslateMode`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_autowrap_mode`\ (\ column\: :ref:`int`, autowrap_mode\: :ref:`AutowrapMode`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_button`\ (\ column\: :ref:`int`, button_index\: :ref:`int`, button\: :ref:`Texture2D`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_button_alt_text`\ (\ column\: :ref:`int`, button_index\: :ref:`int`, alt_text\: :ref:`String`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_button_color`\ (\ column\: :ref:`int`, button_index\: :ref:`int`, color\: :ref:`Color`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_button_disabled`\ (\ column\: :ref:`int`, button_index\: :ref:`int`, disabled\: :ref:`bool`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_button_tooltip_text`\ (\ column\: :ref:`int`, button_index\: :ref:`int`, tooltip\: :ref:`String`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_cell_mode`\ (\ column\: :ref:`int`, mode\: :ref:`TreeCellMode`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_checked`\ (\ column\: :ref:`int`, checked\: :ref:`bool`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_collapsed_recursive`\ (\ enable\: :ref:`bool`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_custom_as_button`\ (\ column\: :ref:`int`, enable\: :ref:`bool`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_custom_bg_color`\ (\ column\: :ref:`int`, color\: :ref:`Color`, just_outline\: :ref:`bool` = false\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_custom_color`\ (\ column\: :ref:`int`, color\: :ref:`Color`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_custom_draw`\ (\ column\: :ref:`int`, object\: :ref:`Object`, callback\: :ref:`StringName`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_custom_draw_callback`\ (\ column\: :ref:`int`, callback\: :ref:`Callable`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_custom_font`\ (\ column\: :ref:`int`, font\: :ref:`Font`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_custom_font_size`\ (\ column\: :ref:`int`, font_size\: :ref:`int`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_edit_multiline`\ (\ column\: :ref:`int`, multiline\: :ref:`bool`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_editable`\ (\ column\: :ref:`int`, enabled\: :ref:`bool`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_expand_right`\ (\ column\: :ref:`int`, enable\: :ref:`bool`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_icon`\ (\ column\: :ref:`int`, texture\: :ref:`Texture2D`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_icon_max_width`\ (\ column\: :ref:`int`, width\: :ref:`int`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_icon_modulate`\ (\ column\: :ref:`int`, modulate\: :ref:`Color`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_icon_overlay`\ (\ column\: :ref:`int`, texture\: :ref:`Texture2D`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_icon_region`\ (\ column\: :ref:`int`, region\: :ref:`Rect2`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_indeterminate`\ (\ column\: :ref:`int`, indeterminate\: :ref:`bool`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_language`\ (\ column\: :ref:`int`, language\: :ref:`String`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_metadata`\ (\ column\: :ref:`int`, meta\: :ref:`Variant`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_range`\ (\ column\: :ref:`int`, value\: :ref:`float`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_range_config`\ (\ column\: :ref:`int`, min\: :ref:`float`, max\: :ref:`float`, step\: :ref:`float`, expr\: :ref:`bool` = false\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_selectable`\ (\ column\: :ref:`int`, selectable\: :ref:`bool`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_structured_text_bidi_override`\ (\ column\: :ref:`int`, parser\: :ref:`StructuredTextParser`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_structured_text_bidi_override_options`\ (\ column\: :ref:`int`, args\: :ref:`Array`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_suffix`\ (\ column\: :ref:`int`, text\: :ref:`String`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_text`\ (\ column\: :ref:`int`, text\: :ref:`String`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_text_alignment`\ (\ column\: :ref:`int`, text_alignment\: :ref:`HorizontalAlignment`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_text_direction`\ (\ column\: :ref:`int`, direction\: :ref:`TextDirection`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_text_overrun_behavior`\ (\ column\: :ref:`int`, overrun_behavior\: :ref:`OverrunBehavior`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_tooltip_text`\ (\ column\: :ref:`int`, tooltip\: :ref:`String`\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`uncollapse_tree`\ (\ ) | + +-------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -416,9 +422,9 @@ Method Descriptions .. rst-class:: classref-method -|void| **add_button**\ (\ column\: :ref:`int`, button\: :ref:`Texture2D`, id\: :ref:`int` = -1, disabled\: :ref:`bool` = false, tooltip_text\: :ref:`String` = ""\ ) :ref:`🔗` +|void| **add_button**\ (\ column\: :ref:`int`, button\: :ref:`Texture2D`, id\: :ref:`int` = -1, disabled\: :ref:`bool` = false, tooltip_text\: :ref:`String` = "", alt_text\: :ref:`String` = ""\ ) :ref:`🔗` -Adds a button with :ref:`Texture2D` ``button`` to the end of the cell at column ``column``. The ``id`` is used to identify the button in the according :ref:`Tree.button_clicked` signal and can be different from the buttons index. If not specified, the next available index is used, which may be retrieved by calling :ref:`get_button_count()` immediately before this method. Optionally, the button can be ``disabled`` and have a ``tooltip_text``. +Adds a button with :ref:`Texture2D` ``button`` to the end of the cell at column ``column``. The ``id`` is used to identify the button in the according :ref:`Tree.button_clicked` signal and can be different from the buttons index. If not specified, the next available index is used, which may be retrieved by calling :ref:`get_button_count()` immediately before this method. Optionally, the button can be ``disabled`` and have a ``tooltip_text``. ``alt_text`` is used as the button description for assistive apps. .. rst-class:: classref-item-separator @@ -522,6 +528,18 @@ Removes the button at index ``button_index`` in column ``column``. ---- +.. _class_TreeItem_method_get_alt_text: + +.. rst-class:: classref-method + +:ref:`String` **get_alt_text**\ (\ column\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the given column's alternative text. + +.. rst-class:: classref-item-separator + +---- + .. _class_TreeItem_method_get_auto_translate_mode: .. rst-class:: classref-method @@ -1260,6 +1278,18 @@ Selects the given ``column``. ---- +.. _class_TreeItem_method_set_alt_text: + +.. rst-class:: classref-method + +|void| **set_alt_text**\ (\ column\: :ref:`int`, text\: :ref:`String`\ ) :ref:`🔗` + +Sets the given column's alternative (description) text for assistive apps. + +.. rst-class:: classref-item-separator + +---- + .. _class_TreeItem_method_set_auto_translate_mode: .. rst-class:: classref-method @@ -1298,6 +1328,18 @@ Sets the given column's button :ref:`Texture2D` at index ``butt ---- +.. _class_TreeItem_method_set_button_alt_text: + +.. rst-class:: classref-method + +|void| **set_button_alt_text**\ (\ column\: :ref:`int`, button_index\: :ref:`int`, alt_text\: :ref:`String`\ ) :ref:`🔗` + +Sets the given column's button alternative text (description) at index ``button_index`` for assistive apps. + +.. rst-class:: classref-item-separator + +---- + .. _class_TreeItem_method_set_button_color: .. rst-class:: classref-method diff --git a/classes/class_trianglemesh.rst b/classes/class_trianglemesh.rst index 3b6844f63..4685bf396 100644 --- a/classes/class_trianglemesh.rst +++ b/classes/class_trianglemesh.rst @@ -12,14 +12,117 @@ TriangleMesh **Inherits:** :ref:`RefCounted` **<** :ref:`Object` -Internal mesh type. +Triangle geometry for efficient, physicsless intersection queries. .. rst-class:: classref-introduction-group Description ----------- -Mesh type used internally for collision calculations. +Creates a bounding volume hierarchy (BVH) tree structure around triangle geometry. + +The triangle BVH tree can be used for efficient intersection queries without involving a physics engine. + +For example, this can be used in editor tools to select objects with complex shapes based on the mouse cursor position. + +\ **Performance:** Creating the BVH tree for complex geometry is a slow process and best done in a background thread. + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`create_from_faces`\ (\ faces\: :ref:`PackedVector3Array`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedVector3Array` | :ref:`get_faces`\ (\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`intersect_ray`\ (\ begin\: :ref:`Vector3`, dir\: :ref:`Vector3`\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`intersect_segment`\ (\ begin\: :ref:`Vector3`, end\: :ref:`Vector3`\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_TriangleMesh_method_create_from_faces: + +.. rst-class:: classref-method + +:ref:`bool` **create_from_faces**\ (\ faces\: :ref:`PackedVector3Array`\ ) :ref:`🔗` + +Creates the BVH tree from an array of faces. Each 3 vertices of the input ``faces`` array represent one triangle (face). + +Returns ``true`` if the tree is successfully built, ``false`` otherwise. + +.. rst-class:: classref-item-separator + +---- + +.. _class_TriangleMesh_method_get_faces: + +.. rst-class:: classref-method + +:ref:`PackedVector3Array` **get_faces**\ (\ ) |const| :ref:`🔗` + +Returns a copy of the geometry faces. Each 3 vertices of the array represent one triangle (face). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TriangleMesh_method_intersect_ray: + +.. rst-class:: classref-method + +:ref:`Dictionary` **intersect_ray**\ (\ begin\: :ref:`Vector3`, dir\: :ref:`Vector3`\ ) |const| :ref:`🔗` + +Tests for intersection with a ray starting at ``begin`` and facing ``dir`` and extending toward infinity. + +If an intersection with a triangle happens, returns a :ref:`Dictionary` with the following fields: + +\ ``position``: The position on the intersected triangle. + +\ ``normal``: The normal of the intersected triangle. + +\ ``face_index``: The index of the intersected triangle. + +Returns an empty :ref:`Dictionary` if no intersection happens. + +See also :ref:`intersect_segment()`, which is similar but uses a finite-length segment. + +.. rst-class:: classref-item-separator + +---- + +.. _class_TriangleMesh_method_intersect_segment: + +.. rst-class:: classref-method + +:ref:`Dictionary` **intersect_segment**\ (\ begin\: :ref:`Vector3`, end\: :ref:`Vector3`\ ) |const| :ref:`🔗` + +Tests for intersection with a segment going from ``begin`` to ``end``. + +If an intersection with a triangle happens returns a :ref:`Dictionary` with the following fields: + +\ ``position``: The position on the intersected triangle. + +\ ``normal``: The normal of the intersected triangle. + +\ ``face_index``: The index of the intersected triangle. + +Returns an empty :ref:`Dictionary` if no intersection happens. + +See also :ref:`intersect_ray()`, which is similar but uses an infinite-length ray. .. |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.)` diff --git a/classes/class_tween.rst b/classes/class_tween.rst index 421cde891..6455e4d00 100644 --- a/classes/class_tween.rst +++ b/classes/class_tween.rst @@ -33,8 +33,8 @@ A tween animation is created by adding :ref:`Tweener`\ s to the * .. code-tab:: gdscript var tween = get_tree().create_tween() - tween.tween_property($Sprite, "modulate", Color.RED, 1) - tween.tween_property($Sprite, "scale", Vector2(), 1) + tween.tween_property($Sprite, "modulate", Color.RED, 1.0) + tween.tween_property($Sprite, "scale", Vector2(), 1.0) tween.tween_callback($Sprite.queue_free) .. code-tab:: csharp @@ -56,8 +56,8 @@ When a :ref:`Tweener` is created with one of the ``tween_*`` meth .. code-tab:: gdscript var tween = get_tree().create_tween() - tween.tween_property($Sprite, "modulate", Color.RED, 1).set_trans(Tween.TRANS_SINE) - tween.tween_property($Sprite, "scale", Vector2(), 1).set_trans(Tween.TRANS_BOUNCE) + tween.tween_property($Sprite, "modulate", Color.RED, 1.0).set_trans(Tween.TRANS_SINE) + tween.tween_property($Sprite, "scale", Vector2(), 1.0).set_trans(Tween.TRANS_BOUNCE) tween.tween_callback($Sprite.queue_free) .. code-tab:: csharp @@ -77,8 +77,8 @@ Most of the **Tween** methods can be chained this way too. In the following exam .. code-tab:: gdscript var tween = get_tree().create_tween().bind_node(self).set_trans(Tween.TRANS_ELASTIC) - tween.tween_property($Sprite, "modulate", Color.RED, 1) - tween.tween_property($Sprite, "scale", Vector2(), 1) + tween.tween_property($Sprite, "modulate", Color.RED, 1.0) + tween.tween_property($Sprite, "scale", Vector2(), 1.0) tween.tween_callback($Sprite.queue_free) .. code-tab:: csharp @@ -99,7 +99,7 @@ Another interesting use for **Tween**\ s is animating arbitrary sets of objects: var tween = create_tween() for sprite in get_children(): - tween.tween_property(sprite, "position", Vector2(0, 0), 1) + tween.tween_property(sprite, "position", Vector2(0, 0), 1.0) .. code-tab:: csharp @@ -852,7 +852,7 @@ Creates and appends a :ref:`CallbackTweener`. This method .. code-tab:: gdscript var tween = get_tree().create_tween().set_loops() - tween.tween_callback(shoot).set_delay(1) + tween.tween_callback(shoot).set_delay(1.0) .. code-tab:: csharp @@ -920,10 +920,10 @@ Creates and appends an :ref:`IntervalTweener`. This metho .. code-tab:: gdscript var tween = create_tween().set_loops() - tween.tween_property($Sprite, "position:x", 200.0, 1).as_relative() + tween.tween_property($Sprite, "position:x", 200.0, 1.0).as_relative() tween.tween_callback(jump) tween.tween_interval(2) - tween.tween_property($Sprite, "position:x", -200.0, 1).as_relative() + tween.tween_property($Sprite, "position:x", -200.0, 1.0).as_relative() tween.tween_callback(jump) tween.tween_interval(2) @@ -959,7 +959,7 @@ Creates and appends a :ref:`MethodTweener`. This method is .. code-tab:: gdscript var tween = create_tween() - tween.tween_method(look_at.bind(Vector3.UP), Vector3(-1, 0, -1), Vector3(1, 0, -1), 1) # The look_at() method takes up vector as second argument. + tween.tween_method(look_at.bind(Vector3.UP), Vector3(-1, 0, -1), Vector3(1, 0, -1), 1.0) # The look_at() method takes up vector as second argument. .. code-tab:: csharp @@ -977,7 +977,7 @@ Creates and appends a :ref:`MethodTweener`. This method is func _ready(): var tween = create_tween() - tween.tween_method(set_label_text, 0, 10, 1).set_delay(1) + tween.tween_method(set_label_text, 0, 10, 1.0).set_delay(1.0) func set_label_text(value: int): $Label.text = "Counting " + str(value) @@ -1017,8 +1017,8 @@ Creates and appends a :ref:`PropertyTweener`. This method .. code-tab:: gdscript var tween = create_tween() - tween.tween_property($Sprite, "position", Vector2(100, 200), 1) - tween.tween_property($Sprite, "position", Vector2(200, 300), 1) + tween.tween_property($Sprite, "position", Vector2(100, 200), 1.0) + tween.tween_property($Sprite, "position", Vector2(200, 300), 1.0) .. code-tab:: csharp @@ -1040,8 +1040,8 @@ will move the sprite to position (100, 200) and then to (200, 300). If you use : .. code-tab:: gdscript var tween = create_tween() - tween.tween_property($Sprite, "position", Vector2.RIGHT * 300, 1).as_relative().set_trans(Tween.TRANS_SINE) - tween.tween_property($Sprite, "position", Vector2.RIGHT * 300, 1).as_relative().from_current().set_trans(Tween.TRANS_EXPO) + tween.tween_property($Sprite, "position", Vector2.RIGHT * 300, 1.0).as_relative().set_trans(Tween.TRANS_SINE) + tween.tween_property($Sprite, "position", Vector2.RIGHT * 300, 1.0).as_relative().from_current().set_trans(Tween.TRANS_EXPO) .. code-tab:: csharp diff --git a/classes/class_udpserver.rst b/classes/class_udpserver.rst index 73f297eb4..316368275 100644 --- a/classes/class_udpserver.rst +++ b/classes/class_udpserver.rst @@ -270,7 +270,7 @@ Starts the server by opening a UDP socket listening on the given ``port``. You c :ref:`Error` **poll**\ (\ ) :ref:`🔗` -Call this method at regular intervals (e.g. inside :ref:`Node._process()`) to process new packets. And packet from known address/port pair will be delivered to the appropriate :ref:`PacketPeerUDP`, any packet received from an unknown address/port pair will be added as a pending connection (see :ref:`is_connection_available()`, :ref:`take_connection()`). The maximum number of pending connection is defined via :ref:`max_pending_connections`. +Call this method at regular intervals (e.g. inside :ref:`Node._process()`) to process new packets. Any packet from a known address/port pair will be delivered to the appropriate :ref:`PacketPeerUDP`, while any packet received from an unknown address/port pair will be added as a pending connection (see :ref:`is_connection_available()` and :ref:`take_connection()`). The maximum number of pending connections is defined via :ref:`max_pending_connections`. .. rst-class:: classref-item-separator diff --git a/classes/class_viewport.rst b/classes/class_viewport.rst index 27081e5bc..1949e010b 100644 --- a/classes/class_viewport.rst +++ b/classes/class_viewport.rst @@ -205,6 +205,8 @@ Methods +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`gui_get_drag_data`\ (\ ) |const| | +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`gui_get_drag_description`\ (\ ) |const| | + +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Control` | :ref:`gui_get_focus_owner`\ (\ ) |const| | +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Control` | :ref:`gui_get_hovered_control`\ (\ ) |const| | @@ -215,6 +217,8 @@ Methods +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`gui_release_focus`\ (\ ) | +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`gui_set_drag_description`\ (\ description\: :ref:`String`\ ) | + +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_input_handled`\ (\ ) |const| | +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`notify_mouse_entered`\ (\ ) | @@ -372,7 +376,7 @@ Use bilinear scaling for the viewport's 3D buffer. The amount of scaling can be :ref:`Scaling3DMode` **SCALING_3D_MODE_FSR** = ``1`` -Use AMD FidelityFX Super Resolution 1.0 upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`scaling_3d_scale`. Values less than ``1.0`` will be result in the viewport being upscaled using FSR. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` disables scaling. +Use AMD FidelityFX Super Resolution 1.0 upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`scaling_3d_scale`. Values less than ``1.0`` will result in the viewport being upscaled using FSR. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` disables scaling. .. _class_Viewport_constant_SCALING_3D_MODE_FSR2: @@ -380,7 +384,7 @@ Use AMD FidelityFX Super Resolution 1.0 upscaling for the viewport's 3D buffer. :ref:`Scaling3DMode` **SCALING_3D_MODE_FSR2** = ``2`` -Use AMD FidelityFX Super Resolution 2.2 upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`scaling_3d_scale`. Values less than ``1.0`` will be result in the viewport being upscaled using FSR2. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` will use FSR2 at native resolution as a TAA solution. +Use AMD FidelityFX Super Resolution 2.2 upscaling for the viewport's 3D buffer. The amount of scaling can be set using :ref:`scaling_3d_scale`. Values less than ``1.0`` will result in the viewport being upscaled using FSR2. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` will use FSR2 at native resolution as a TAA solution. .. _class_Viewport_constant_SCALING_3D_MODE_METALFX_SPATIAL: @@ -392,7 +396,7 @@ Use the `MetalFX spatial upscaler `. -Values less than ``1.0`` will be result in the viewport being upscaled using MetalFX. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` disables scaling. +Values less than ``1.0`` will result in the viewport being upscaled using MetalFX. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` disables scaling. More information: `MetalFX `__. @@ -408,7 +412,7 @@ Use the `MetalFX temporal upscaler `. To determine the minimum input scale, use the :ref:`RenderingDevice.limit_get()` method with :ref:`RenderingDevice.LIMIT_METALFX_TEMPORAL_SCALER_MIN_SCALE`. -Values less than ``1.0`` will be result in the viewport being upscaled using MetalFX. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` will use MetalFX at native resolution as a TAA solution. +Values less than ``1.0`` will result in the viewport being upscaled using MetalFX. Values greater than ``1.0`` are not supported and bilinear downsampling will be used instead. A value of ``1.0`` will use MetalFX at native resolution as a TAA solution. More information: `MetalFX `__. @@ -682,6 +686,8 @@ Objects are displayed without light information. Objects are displayed without textures and only with lighting information. +\ **Note:** When using this debug draw mode, custom shaders are ignored since all materials in the scene temporarily use a debug material. This means the result from custom shader functions (such as vertex displacement) won't be visible anymore when using this debug draw mode. + .. _class_Viewport_constant_DEBUG_DRAW_OVERDRAW: .. rst-class:: classref-enumeration-constant @@ -690,6 +696,8 @@ Objects are displayed without textures and only with lighting information. Objects are displayed semi-transparent with additive blending so you can see where they are drawing over top of one another. A higher overdraw means you are wasting performance on drawing pixels that are being hidden behind others. +\ **Note:** When using this debug draw mode, custom shaders are ignored since all materials in the scene temporarily use a debug material. This means the result from custom shader functions (such as vertex displacement) won't be visible anymore when using this debug draw mode. + .. _class_Viewport_constant_DEBUG_DRAW_WIREFRAME: .. rst-class:: classref-enumeration-constant @@ -708,13 +716,17 @@ Objects are displayed as wireframe models. Objects are displayed without lighting information and their textures replaced by normal mapping. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_Viewport_constant_DEBUG_DRAW_VOXEL_GI_ALBEDO: .. rst-class:: classref-enumeration-constant :ref:`DebugDraw` **DEBUG_DRAW_VOXEL_GI_ALBEDO** = ``6`` -Objects are displayed with only the albedo value from :ref:`VoxelGI`\ s. +Objects are displayed with only the albedo value from :ref:`VoxelGI`\ s. Requires at least one visible :ref:`VoxelGI` node that has been baked to have a visible effect. + +\ **Note:** Only supported when using the Forward+ rendering method. .. _class_Viewport_constant_DEBUG_DRAW_VOXEL_GI_LIGHTING: @@ -722,7 +734,9 @@ Objects are displayed with only the albedo value from :ref:`VoxelGI` **DEBUG_DRAW_VOXEL_GI_LIGHTING** = ``7`` -Objects are displayed with only the lighting value from :ref:`VoxelGI`\ s. +Objects are displayed with only the lighting value from :ref:`VoxelGI`\ s. Requires at least one visible :ref:`VoxelGI` node that has been baked to have a visible effect. + +\ **Note:** Only supported when using the Forward+ rendering method. .. _class_Viewport_constant_DEBUG_DRAW_VOXEL_GI_EMISSION: @@ -730,7 +744,9 @@ Objects are displayed with only the lighting value from :ref:`VoxelGI` **DEBUG_DRAW_VOXEL_GI_EMISSION** = ``8`` -Objects are displayed with only the emission color from :ref:`VoxelGI`\ s. +Objects are displayed with only the emission color from :ref:`VoxelGI`\ s. Requires at least one visible :ref:`VoxelGI` node that has been baked to have a visible effect. + +\ **Note:** Only supported when using the Forward+ rendering method. .. _class_Viewport_constant_DEBUG_DRAW_SHADOW_ATLAS: @@ -756,6 +772,8 @@ Draws the shadow atlas that stores shadows from :ref:`DirectionalLight3D` set in your :ref:`WorldEnvironment`. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_Viewport_constant_DEBUG_DRAW_SSIL: .. rst-class:: classref-enumeration-constant @@ -772,13 +792,19 @@ Draws the screen-space ambient occlusion texture instead of the scene so that yo Draws the screen-space indirect lighting texture instead of the scene so that you can clearly see how it is affecting objects. In order for this display mode to work, you must have :ref:`Environment.ssil_enabled` set in your :ref:`WorldEnvironment`. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_Viewport_constant_DEBUG_DRAW_PSSM_SPLITS: .. rst-class:: classref-enumeration-constant :ref:`DebugDraw` **DEBUG_DRAW_PSSM_SPLITS** = ``14`` -Colors each PSSM split for the :ref:`DirectionalLight3D`\ s in the scene a different color so you can see where the splits are. In order, they will be colored red, green, blue, and yellow. +Colors each PSSM split for the :ref:`DirectionalLight3D`\ s in the scene a different color so you can see where the splits are. In order (from closest to furthest from the camera), they are colored red, green, blue, and yellow. + +\ **Note:** When using this debug draw mode, custom shaders are ignored since all materials in the scene temporarily use a debug material. This means the result from custom shader functions (such as vertex displacement) won't be visible anymore when using this debug draw mode. + +\ **Note:** Only supported when using the Forward+ or Mobile rendering methods. .. _class_Viewport_constant_DEBUG_DRAW_DECAL_ATLAS: @@ -788,6 +814,8 @@ Colors each PSSM split for the :ref:`DirectionalLight3D`\ s and light projector textures in the upper left quadrant of the **Viewport**. +\ **Note:** Only supported when using the Forward+ or Mobile rendering methods. + .. _class_Viewport_constant_DEBUG_DRAW_SDFGI: .. rst-class:: classref-enumeration-constant @@ -796,7 +824,9 @@ Draws the decal atlas used by :ref:`Decal`\ s and light projector t Draws the cascades used to render signed distance field global illumination (SDFGI). -Does nothing if the current environment's :ref:`Environment.sdfgi_enabled` is ``false`` or SDFGI is not supported on the platform. +Does nothing if the current environment's :ref:`Environment.sdfgi_enabled` is ``false``. + +\ **Note:** Only supported when using the Forward+ rendering method. .. _class_Viewport_constant_DEBUG_DRAW_SDFGI_PROBES: @@ -806,7 +836,9 @@ Does nothing if the current environment's :ref:`Environment.sdfgi_enabled` is ``false`` or SDFGI is not supported on the platform. +Does nothing if the current environment's :ref:`Environment.sdfgi_enabled` is ``false``. + +\ **Note:** Only supported when using the Forward+ rendering method. .. _class_Viewport_constant_DEBUG_DRAW_GI_BUFFER: @@ -814,7 +846,9 @@ Does nothing if the current environment's :ref:`Environment.sdfgi_enabled` **DEBUG_DRAW_GI_BUFFER** = ``18`` -Draws the buffer used for global illumination (GI). +Draws the buffer used for global illumination from :ref:`VoxelGI` or SDFGI. Requires :ref:`VoxelGI` (at least one visible baked VoxelGI node) or SDFGI (:ref:`Environment.sdfgi_enabled`) to be enabled to have a visible effect. + +\ **Note:** Only supported when using the Forward+ rendering method. .. _class_Viewport_constant_DEBUG_DRAW_DISABLE_LOD: @@ -822,7 +856,7 @@ Draws the buffer used for global illumination (GI). :ref:`DebugDraw` **DEBUG_DRAW_DISABLE_LOD** = ``19`` -Draws all of the objects at their highest polycount, without low level of detail (LOD). +Draws all of the objects at their highest polycount regardless of their distance from the camera. No low level of detail (LOD) is applied. .. _class_Viewport_constant_DEBUG_DRAW_CLUSTER_OMNI_LIGHTS: @@ -832,6 +866,8 @@ Draws all of the objects at their highest polycount, without low level of detail Draws the cluster used by :ref:`OmniLight3D` nodes to optimize light rendering. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_Viewport_constant_DEBUG_DRAW_CLUSTER_SPOT_LIGHTS: .. rst-class:: classref-enumeration-constant @@ -840,6 +876,8 @@ Draws the cluster used by :ref:`OmniLight3D` nodes to optimiz Draws the cluster used by :ref:`SpotLight3D` nodes to optimize light rendering. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_Viewport_constant_DEBUG_DRAW_CLUSTER_DECALS: .. rst-class:: classref-enumeration-constant @@ -848,6 +886,8 @@ Draws the cluster used by :ref:`SpotLight3D` nodes to optimiz Draws the cluster used by :ref:`Decal` nodes to optimize decal rendering. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_Viewport_constant_DEBUG_DRAW_CLUSTER_REFLECTION_PROBES: .. rst-class:: classref-enumeration-constant @@ -856,6 +896,8 @@ Draws the cluster used by :ref:`Decal` nodes to optimize decal rend Draws the cluster used by :ref:`ReflectionProbe` nodes to optimize decal rendering. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_Viewport_constant_DEBUG_DRAW_OCCLUDERS: .. rst-class:: classref-enumeration-constant @@ -864,6 +906,8 @@ Draws the cluster used by :ref:`ReflectionProbe` nodes to Draws the buffer used for occlusion culling. +\ **Note:** Only supported when using the Forward+ or Mobile rendering methods. + .. _class_Viewport_constant_DEBUG_DRAW_MOTION_VECTORS: .. rst-class:: classref-enumeration-constant @@ -872,13 +916,17 @@ Draws the buffer used for occlusion culling. Draws vector lines over the viewport to indicate the movement of pixels between frames. +\ **Note:** Only supported when using the Forward+ rendering method. + .. _class_Viewport_constant_DEBUG_DRAW_INTERNAL_BUFFER: .. rst-class:: classref-enumeration-constant :ref:`DebugDraw` **DEBUG_DRAW_INTERNAL_BUFFER** = ``26`` -Draws the internal resolution buffer of the scene before post-processing is applied. +Draws the internal resolution buffer of the scene in linear colorspace before tonemapping or post-processing is applied. + +\ **Note:** Only supported when using the Forward+ or Mobile rendering methods. .. rst-class:: classref-item-separator @@ -2284,6 +2332,18 @@ Returns the drag data from the GUI, that was previously returned by :ref:`Contro ---- +.. _class_Viewport_method_gui_get_drag_description: + +.. rst-class:: classref-method + +:ref:`String` **gui_get_drag_description**\ (\ ) |const| :ref:`🔗` + +Returns the drag data human-readable description. + +.. rst-class:: classref-item-separator + +---- + .. _class_Viewport_method_gui_get_focus_owner: .. rst-class:: classref-method @@ -2348,6 +2408,18 @@ Removes the focus from the currently focused :ref:`Control` withi ---- +.. _class_Viewport_method_gui_set_drag_description: + +.. rst-class:: classref-method + +|void| **gui_set_drag_description**\ (\ description\: :ref:`String`\ ) :ref:`🔗` + +Sets the drag data human-readable description. + +.. rst-class:: classref-item-separator + +---- + .. _class_Viewport_method_is_input_handled: .. rst-class:: classref-method diff --git a/classes/class_visibleonscreennotifier2d.rst b/classes/class_visibleonscreennotifier2d.rst index b789caf23..9feb747b0 100644 --- a/classes/class_visibleonscreennotifier2d.rst +++ b/classes/class_visibleonscreennotifier2d.rst @@ -42,9 +42,11 @@ Properties .. table:: :widths: auto - +---------------------------+------------------------------------------------------------+-----------------------------+ - | :ref:`Rect2` | :ref:`rect` | ``Rect2(-10, -10, 20, 20)`` | - +---------------------------+------------------------------------------------------------+-----------------------------+ + +---------------------------+----------------------------------------------------------------------+-----------------------------+ + | :ref:`Rect2` | :ref:`rect` | ``Rect2(-10, -10, 20, 20)`` | + +---------------------------+----------------------------------------------------------------------+-----------------------------+ + | :ref:`bool` | :ref:`show_rect` | ``true`` | + +---------------------------+----------------------------------------------------------------------+-----------------------------+ .. rst-class:: classref-reftable-group @@ -109,6 +111,23 @@ Property Descriptions The VisibleOnScreenNotifier2D's bounding rectangle. +.. rst-class:: classref-item-separator + +---- + +.. _class_VisibleOnScreenNotifier2D_property_show_rect: + +.. rst-class:: classref-property + +:ref:`bool` **show_rect** = ``true`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_show_rect**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **is_showing_rect**\ (\ ) + +If ``true``, shows the rectangle area of :ref:`rect` in the editor with a translucent magenta fill. Unlike changing the visibility of the VisibleOnScreenNotifier2D, this does not affect the screen culling detection. + .. rst-class:: classref-section-separator ---- diff --git a/classes/class_window.rst b/classes/class_window.rst index 79a44792a..fd5b508c6 100644 --- a/classes/class_window.rst +++ b/classes/class_window.rst @@ -66,8 +66,12 @@ Properties +-----------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------------+ | :ref:`Vector2i` | :ref:`max_size` | ``Vector2i(0, 0)`` | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`maximize_disabled` | ``false`` | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------------+ | :ref:`Vector2i` | :ref:`min_size` | ``Vector2i(0, 0)`` | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`minimize_disabled` | ``false`` | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------------+ | :ref:`Mode` | :ref:`mode` | ``0`` | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------------+ | :ref:`bool` | :ref:`mouse_passthrough` | ``false`` | @@ -76,6 +80,8 @@ Properties +-----------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------------+ | :ref:`bool` | :ref:`popup_window` | ``false`` | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`popup_wm_hint` | ``false`` | + +-----------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------------+ | :ref:`Vector2i` | :ref:`position` | ``Vector2i(0, 0)`` | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------+--------------------------+ | :ref:`bool` | :ref:`sharp_corners` | ``false`` | @@ -138,6 +144,8 @@ Methods +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`get_flag`\ (\ flag\: :ref:`Flags`\ ) |const| | +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Window` | :ref:`get_focused_window`\ (\ ) |static| | + +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`LayoutDirection` | :ref:`get_layout_direction`\ (\ ) |const| | +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2i` | :ref:`get_position_with_decorations`\ (\ ) |const| | @@ -340,7 +348,7 @@ This signal can be used to handle window closing, e.g. by connecting it to :ref: Emitted when the **Window**'s DPI changes as a result of OS-level changes (e.g. moving the window from a Retina display to a lower resolution one). -\ **Note:** Only implemented on macOS. +\ **Note:** Only implemented on macOS and Linux (Wayland). .. rst-class:: classref-item-separator @@ -669,11 +677,39 @@ Windows is excluded from screenshots taken by :ref:`DisplayServer.screen_get_ima \ **Note:** Setting this flag will **NOT** prevent other apps from capturing an image, it should not be used as a security measure. +.. _class_Window_constant_FLAG_POPUP_WM_HINT: + +.. rst-class:: classref-enumeration-constant + +:ref:`Flags` **FLAG_POPUP_WM_HINT** = ``10`` + +Signals the window manager that this window is supposed to be an implementation-defined "popup" (usually a floating, borderless, untileable and immovable child window). + +.. _class_Window_constant_FLAG_MINIMIZE_DISABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`Flags` **FLAG_MINIMIZE_DISABLED** = ``11`` + +Window minimize button is disabled. + +\ **Note:** This flag is implemented on macOS and Windows. + +.. _class_Window_constant_FLAG_MAXIMIZE_DISABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`Flags` **FLAG_MAXIMIZE_DISABLED** = ``12`` + +Window maximize button is disabled. + +\ **Note:** This flag is implemented on macOS and Windows. + .. _class_Window_constant_FLAG_MAX: .. rst-class:: classref-enumeration-constant -:ref:`Flags` **FLAG_MAX** = ``10`` +:ref:`Flags` **FLAG_MAX** = ``13`` Max value of the :ref:`Flags`. @@ -1121,7 +1157,11 @@ The screen the window is currently on. - |void| **set_flag**\ (\ flag\: :ref:`Flags`, enabled\: :ref:`bool`\ ) - :ref:`bool` **get_flag**\ (\ flag\: :ref:`Flags`\ ) |const| -Windows is excluded from screenshots taken by :ref:`DisplayServer.screen_get_image()`, :ref:`DisplayServer.screen_get_image_rect()`, and :ref:`DisplayServer.screen_get_pixel()`. +If ``true``, the **Window** is excluded from screenshots taken by :ref:`DisplayServer.screen_get_image()`, :ref:`DisplayServer.screen_get_image_rect()`, and :ref:`DisplayServer.screen_get_pixel()`. + +\ **Note:** This property is implemented on macOS and Windows. + +\ **Note:** Enabling this setting does **NOT** prevent other apps from capturing an image. It should not be used as a security measure. .. rst-class:: classref-item-separator @@ -1237,6 +1277,27 @@ If non-zero, the **Window** can't be resized to be bigger than this size. ---- +.. _class_Window_property_maximize_disabled: + +.. rst-class:: classref-property + +:ref:`bool` **maximize_disabled** = ``false`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_flag**\ (\ flag\: :ref:`Flags`, enabled\: :ref:`bool`\ ) +- :ref:`bool` **get_flag**\ (\ flag\: :ref:`Flags`\ ) |const| + +If ``true``, the **Window**'s maximize button is disabled. + +\ **Note:** If both minimize and maximize buttons are disabled, buttons are fully hidden, and only close button is visible. + +\ **Note:** This property is implemented only on macOS and Windows. + +.. rst-class:: classref-item-separator + +---- + .. _class_Window_property_min_size: .. rst-class:: classref-property @@ -1256,6 +1317,27 @@ If non-zero, the **Window** can't be resized to be smaller than this size. ---- +.. _class_Window_property_minimize_disabled: + +.. rst-class:: classref-property + +:ref:`bool` **minimize_disabled** = ``false`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_flag**\ (\ flag\: :ref:`Flags`, enabled\: :ref:`bool`\ ) +- :ref:`bool` **get_flag**\ (\ flag\: :ref:`Flags`\ ) |const| + +If ``true``, the **Window**'s minimize button is disabled. + +\ **Note:** If both minimize and maximize buttons are disabled, buttons are fully hidden, and only close button is visible. + +\ **Note:** This property is implemented only on macOS and Windows. + +.. rst-class:: classref-item-separator + +---- + .. _class_Window_property_mode: .. rst-class:: classref-property @@ -1369,6 +1451,23 @@ If ``true``, the **Window** will be considered a popup. Popups are sub-windows t ---- +.. _class_Window_property_popup_wm_hint: + +.. rst-class:: classref-property + +:ref:`bool` **popup_wm_hint** = ``false`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_flag**\ (\ flag\: :ref:`Flags`, enabled\: :ref:`bool`\ ) +- :ref:`bool` **get_flag**\ (\ flag\: :ref:`Flags`\ ) |const| + +If ``true``, the **Window** will signal to the window manager that it is supposed to be an implementation-defined "popup" (usually a floating, borderless, untileable and immovable child window). + +.. rst-class:: classref-item-separator + +---- + .. _class_Window_property_position: .. rst-class:: classref-property @@ -1566,7 +1665,7 @@ If ``true``, the **Window** can't be focused nor interacted with. It can still b - |void| **set_flag**\ (\ flag\: :ref:`Flags`, enabled\: :ref:`bool`\ ) - :ref:`bool` **get_flag**\ (\ flag\: :ref:`Flags`\ ) |const| -If ``true``, the window can't be resized. Minimize and maximize buttons are disabled. +If ``true``, the window can't be resized. .. rst-class:: classref-item-separator @@ -1783,6 +1882,18 @@ Returns ``true`` if the ``flag`` is set. ---- +.. _class_Window_method_get_focused_window: + +.. rst-class:: classref-method + +:ref:`Window` **get_focused_window**\ (\ ) |static| :ref:`🔗` + +Returns the focused window. + +.. rst-class:: classref-item-separator + +---- + .. _class_Window_method_get_layout_direction: .. rst-class:: classref-method @@ -2183,7 +2294,7 @@ Returns ``true`` if the window is currently embedded in another window. :ref:`bool` **is_layout_rtl**\ (\ ) |const| :ref:`🔗` -Returns ``true`` if layout is right-to-left. +Returns ``true`` if the layout is right-to-left. .. rst-class:: classref-item-separator diff --git a/classes/class_xrcamera3d.rst b/classes/class_xrcamera3d.rst index 89a9f5bca..2aa71ecba 100644 --- a/classes/class_xrcamera3d.rst +++ b/classes/class_xrcamera3d.rst @@ -30,6 +30,18 @@ Tutorials - :doc:`XR documentation index <../tutorials/xr/index>` +.. rst-class:: classref-reftable-group + +Properties +---------- + +.. table:: + :widths: auto + + +---------------------------------------------------------------------+----------------------------+-------------------------------------------------------------------------------+ + | :ref:`PhysicsInterpolationMode` | physics_interpolation_mode | ``2`` (overrides :ref:`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.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` diff --git a/classes/class_xrcontroller3d.rst b/classes/class_xrcontroller3d.rst index da32ece6b..c9b23308f 100644 --- a/classes/class_xrcontroller3d.rst +++ b/classes/class_xrcontroller3d.rst @@ -25,7 +25,7 @@ Controllers are linked by their ID. You can create controller nodes before the c The position of the controller node is automatically updated by the :ref:`XRServer`. This makes this node ideal to add child nodes to visualize the controller. -As many XR runtimes now use a configurable action map all inputs are named. +The current :ref:`XRInterface` defines the names of inputs. In the case of OpenXR, these are the names of actions in the current action set from the OpenXR action map. .. rst-class:: classref-introduction-group @@ -136,6 +136,8 @@ Method Descriptions Returns a numeric value for the input with the given ``name``. This is used for triggers and grip sensors. +\ **Note:** The current :ref:`XRInterface` defines the ``name`` for each input. In the case of OpenXR, these are the names of actions in the current action set. + .. rst-class:: classref-item-separator ---- @@ -148,6 +150,8 @@ Returns a numeric value for the input with the given ``name``. This is used for Returns a :ref:`Variant` for the input with the given ``name``. This works for any input type, the variant will be typed according to the actions configuration. +\ **Note:** The current :ref:`XRInterface` defines the ``name`` for each input. In the case of OpenXR, these are the names of actions in the current action set. + .. rst-class:: classref-item-separator ---- @@ -172,6 +176,8 @@ Returns the hand holding this controller, if known. See :ref:`TrackerHand` for the input with the given ``name``. This is used for thumbsticks and thumbpads found on many controllers. +\ **Note:** The current :ref:`XRInterface` defines the ``name`` for each input. In the case of OpenXR, these are the names of actions in the current action set. + .. rst-class:: classref-item-separator ---- @@ -184,6 +190,8 @@ Returns a :ref:`Vector2` for the input with the given ``name``. T Returns ``true`` if the button with the given ``name`` is pressed. +\ **Note:** The current :ref:`XRInterface` defines the ``name`` for each input. In the case of OpenXR, these are the names of actions in the current action set. + .. |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.)` diff --git a/classes/class_xrinterface.rst b/classes/class_xrinterface.rst index faad8b998..4a2d1ca4c 100644 --- a/classes/class_xrinterface.rst +++ b/classes/class_xrinterface.rst @@ -292,6 +292,14 @@ Player is free to move around, full positional tracking. Same as :ref:`XR_PLAY_AREA_ROOMSCALE` but origin point is fixed to the center of the physical space. In this mode, system-level recentering may be disabled, requiring the use of :ref:`XRServer.center_on_hmd()`. +.. _class_XRInterface_constant_XR_PLAY_AREA_CUSTOM: + +.. rst-class:: classref-enumeration-constant + +:ref:`PlayAreaMode` **XR_PLAY_AREA_CUSTOM** = ``2147483647`` + +Custom play area set by a GDExtension. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_xrnode3d.rst b/classes/class_xrnode3d.rst index 5a18d706d..6cd7f27b1 100644 --- a/classes/class_xrnode3d.rst +++ b/classes/class_xrnode3d.rst @@ -38,13 +38,15 @@ Properties .. table:: :widths: auto - +-------------------------------------+---------------------------------------------------------------------+----------------+ - | :ref:`StringName` | :ref:`pose` | ``&"default"`` | - +-------------------------------------+---------------------------------------------------------------------+----------------+ - | :ref:`bool` | :ref:`show_when_tracked` | ``false`` | - +-------------------------------------+---------------------------------------------------------------------+----------------+ - | :ref:`StringName` | :ref:`tracker` | ``&""`` | - +-------------------------------------+---------------------------------------------------------------------+----------------+ + +---------------------------------------------------------------------+---------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`PhysicsInterpolationMode` | physics_interpolation_mode | ``2`` (overrides :ref:`Node`) | + +---------------------------------------------------------------------+---------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`StringName` | :ref:`pose` | ``&"default"`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`show_when_tracked` | ``false`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`StringName` | :ref:`tracker` | ``&""`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------+-------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group diff --git a/classes/index.rst b/classes/index.rst index aa4e6f421..76dae2231 100644 --- a/classes/index.rst +++ b/classes/index.rst @@ -105,6 +105,7 @@ Nodes class_filesystemdock class_flowcontainer class_fogvolume + class_foldablecontainer class_generic6dofjoint3d class_geometryinstance3d class_gpuparticles2d @@ -417,6 +418,7 @@ Resources class_fbxdocument class_fbxstate class_fogmaterial + class_foldablegroup class_font class_fontfile class_fontvariation @@ -842,7 +844,10 @@ Other objects class_offlinemultiplayerpeer class_oggpacketsequenceplayback class_openxrapiextension + class_openxrextensionwrapper class_openxrextensionwrapperextension + class_openxrfutureextension + class_openxrfutureresult class_openxrinteractionprofilemetadata class_openxrinterface class_os From a8465aa8e521d67015d1d1580060f19498f4cd32 Mon Sep 17 00:00:00 2001 From: WSQS Date: Sat, 12 Apr 2025 19:48:58 +0800 Subject: [PATCH 019/263] include the results from the parent in the method --- tutorials/platform/android/android_library.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tutorials/platform/android/android_library.rst b/tutorials/platform/android/android_library.rst index 4794bf074..edcf55d91 100644 --- a/tutorials/platform/android/android_library.rst +++ b/tutorials/platform/android/android_library.rst @@ -185,7 +185,11 @@ Below we break-down the steps used to create the GLTF Viewer app. @Override public List getCommandLine(){ - return List.of("--main-pack","res://foo.pck"); + List results = new ArrayList<>(); + results.addAll(super.getCommandLine()); + results.add("--main-pack"); + results.add("res://foo.pck"); + return results; } The instructions below and the sample app follow the first approach of creating the Godot project in the Android app's ``assets`` directory. From 6792402014f169f5ff49332721fcbd4cdac15277 Mon Sep 17 00:00:00 2001 From: tetrapod00 <145553014+tetrapod00@users.noreply.github.com> Date: Sat, 9 Nov 2024 22:41:00 -0800 Subject: [PATCH 020/263] Add custom Sphinx roles for editor UI --- _static/css/custom.css | 19 ++++ conf.py | 17 +++ .../documentation/docs_writing_guidelines.rst | 101 ++++++++++++++++++ .../step_by_step/nodes_and_scenes.rst | 49 ++++----- 4 files changed, 162 insertions(+), 24 deletions(-) diff --git a/_static/css/custom.css b/_static/css/custom.css index 5a57b8b4a..0300e8ecd 100644 --- a/_static/css/custom.css +++ b/_static/css/custom.css @@ -150,6 +150,8 @@ --kbd-shadow-color: #b0b7bf; --kbd-text-color: #444d56; + --role-button-background-color: #d3d7e1; + --code-example-good-color: #3fb950; --code-example-bad-color: #f85149; @@ -279,6 +281,8 @@ --kbd-outline-color: #3d4144; --kbd-shadow-color: #1e2023; --kbd-text-color: #e2f2ff; + + --role-button-background-color: #22252d; --code-example-good-color: #3fb950; --code-example-bad-color: #f85149; @@ -1844,3 +1848,18 @@ p + .classref-constant { #godot-giscus { margin-bottom: 1em; } + +/* Custom Sphinx roles for editor UI */ +/* The :ui: and :inspector: roles just render as bold. */ +.role-ui { + font-weight: 700; +} + +.role-button, .role-menu { + font-size: 80%; + border-radius: 4px; + padding: 2.4px 6px; + margin: auto 2px; + border: 0px solid #7fbbe3; + background: var(--role-button-background-color); +} diff --git a/conf.py b/conf.py index 939ac5d75..21d2752e9 100644 --- a/conf.py +++ b/conf.py @@ -254,6 +254,23 @@ linkcheck_anchors = False linkcheck_timeout = 10 +# -- Custom Sphinx roles for UI ------------------------------------------- + +rst_prolog = """ +.. role:: button + :class: role-button role-ui + +.. role:: menu + :class: role-menu role-ui + +.. role:: inspector + :class: role-ui + +.. role:: ui + :class: role-ui + +""" + # -- I18n settings -------------------------------------------------------- # Godot localization is handled via https://github.com/godotengine/godot-docs-l10n diff --git a/contributing/documentation/docs_writing_guidelines.rst b/contributing/documentation/docs_writing_guidelines.rst index e22829b90..8ec975d9e 100644 --- a/contributing/documentation/docs_writing_guidelines.rst +++ b/contributing/documentation/docs_writing_guidelines.rst @@ -762,3 +762,104 @@ Follow these guidelines for when to refer to a specific Godot version: - If a feature was added in a 3.x major or minor version, **do not specify** when the feature was added. These features are old enough that the exact version in which they were added is not relevant. + +Use roles for editor UI +----------------------- + +Much of the manual involves describing a sequence of UI actions in the editor, +like clicking a button, opening a menu, or setting a property in the inspector. +To keep formatting standardized, we use custom Sphinx roles for UI elements. + +The following roles are defined: + +- ``:button:`` A button, toggle, or other clickable UI element. If the reader + is meant to click on it, and it's not a menu, use this. Renders as + :button:`bold, with a background`. +- ``:menu:`` A series of menus to click through. When listing a series of + menus, separate them with ``>``. Renders as :menu:`bold, with a background`. +- ``:inspector:`` A property *in the inspector*. When describing a property in + *code*, instead either use ``code style`` or link to the property, as + described earlier. Renders as :inspector:`bold`. +- ``:ui:`` A role for any other editor UI elements. Use this if you would have + otherwise just used **bold style**. Use this for input fields, docks, tabs, + windows, bottom panels, etc. Also used for nested project settings or + inspector sections. Renders as :ui:`bold`. + +The first two roles, ``:button:`` and ``:menu:`` are used for editor UI that the +reader is meant to click on, and they use an attention-grabbing visual style. The +other roles, ``:inspector:`` and ``:ui:``, are used for other UI and show up +often in text, so they just use bold text to be less distracting. + +Our custom roles are inspired by the Sphinx `guilabel `_ +and `menuselection `_ +roles. However, we use our own implementation to better match the specific needs +of Godot's documentation, using `custom RST roles `_ +and some custom CSS. + +Examples +~~~~~~~~ + +These are some example sections that use the roles, in context. Check the source +of this page to see which roles are used. + +Adding a sprite and setting some properties +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In the :ui:`Scene` dock, click :button:`2D Scene` to create a new scene. + +Add a new :ref:`Sprite2D ` to the scene by right-clicking on the +root node and choosing :button:`Add Child Node...`. In the :ui:`Create New Node` +window, search for "Sprite2D", select it, and then click :button:`Create`. + +On the sprite, under :ui:`Offset`, set :inspector:`Offset` to ``(16, 32)`` +and enable :inspector:`Flip H`. Set :inspector:`Animation > HFrames` to ``10``. +In :ui:`CanvasItem > Visibility`, set the :inspector:`Modulate` color to +``ff0000``. + +.. tip:: + + Don't forget to save your scene in :menu:`Scene > Save Scene...`. When the + :ui:`Save Scene As...` window pops up, enter "my_scene.tscn" in the + :ui:`File` field, then click :button:`Save`. + +Setting project settings +^^^^^^^^^^^^^^^^^^^^^^^^ + +Go to :menu:`Project > Project Settings`, then select the +:ref:`Max FPS ` +setting under :ui:`Application > Run`. Don't forget to click the +:button:`Advanced Settings` toggle. Then, in :ui:`Filter Settings`, search for +"physics". Under :ui:`Physics > 3D > Solver`, set +:inspector:`Solver Iterations` to ``16``. + +All styles in context +^^^^^^^^^^^^^^^^^^^^^ + +Use this section to see how the custom roles look, particularly within admonitions. + +|styleroles| + +.. note:: + + |styleroles| + +.. warning:: + + |styleroles| + +.. danger:: + + |styleroles| + +.. tip:: + + |styleroles| + +.. admonition:: Custom admonition + + |styleroles| + +.. All the inline roles which are used in the docs. External links don't work in a substitution. +.. |styleroles| replace:: Built-in styles: ``code``, **bold**, and *italics*. + Built-in roles: :kbd:`kbd`, :ref:`ref `, :ref:`ref `. + Custom roles: :button:`button`, :menu:`menu > submenu`, :inspector:`inspector`, :ui:`ui`. diff --git a/getting_started/step_by_step/nodes_and_scenes.rst b/getting_started/step_by_step/nodes_and_scenes.rst index dc8dd1193..4db3dc680 100644 --- a/getting_started/step_by_step/nodes_and_scenes.rst +++ b/getting_started/step_by_step/nodes_and_scenes.rst @@ -73,23 +73,24 @@ opening the project, you should see an empty editor. .. image:: img/nodes_and_scenes_01_empty_editor.webp In an empty scene, the Scene dock on the left shows several options to add a -root node quickly. "2D Scene" adds a :ref:`Node2D ` node, -"3D Scene" adds a :ref:`Node3D ` node, -and "User Interface" adds a :ref:`Control ` node. +root node quickly. :button:`2D Scene` adds a :ref:`Node2D ` node, +:button:`3D Scene` adds a :ref:`Node3D ` node, +and :button:`User Interface` adds a :ref:`Control ` node. These presets are here for convenience; they are not mandatory. -"Other Node" lets you select any node to be the root node. -In an empty scene, "Other Node" is equivalent to pressing the "Add Child Node" +:button:`Other Node` lets you select any node to be the root node. +In an empty scene, :button:`Other Node` is equivalent to pressing the :button:`Add Child Node` button at the top-left of the Scene dock, which usually adds a new node as a child of the currently selected node. We're going to add a single :ref:`Label ` node to our scene. Its function is to draw text on the screen. -Press the "Add Child Node" button or "Other Node" to create a root node. +Press the :button:`Add Child Node` button or :button:`Other Node` to create a +root node. .. image:: img/nodes_and_scenes_02_scene_dock.webp -The Create Node dialog opens, showing the long list of available nodes. +The :ui:`Create New Node` dialog opens, showing the long list of available nodes. .. image:: img/nodes_and_scenes_03_create_node_window.webp @@ -97,8 +98,8 @@ Select the Label node. You can type its name to filter down the list. .. image:: img/nodes_and_scenes_04_create_label_window.webp -Click on the Label node to select it and click the Create button at the bottom -of the window. +Click on the Label node to select it and click the :button:`Create` button at +the bottom of the window. .. image:: img/nodes_and_scenes_05_editor_with_label.webp @@ -110,11 +111,11 @@ and the node's properties appear in the Inspector dock on the right. Changing a node's properties ---------------------------- -The next step is to change the Label's "Text" property. Let's change it to -"Hello World". +The next step is to change the Label's :inspector:`Text` property. Let's change +it to "Hello World". Head to the Inspector dock on the right of the viewport. Click inside the field -below the Text property and type "Hello World". +below the :inspector:`Text` property and type "Hello World". .. image:: img/nodes_and_scenes_06_label_text.webp @@ -137,17 +138,18 @@ move it to the center of the view delimited by the rectangle. Running the scene ----------------- -Everything's ready to run the scene! Press the **Run Current Scene** button in -the top-right of the screen or press :kbd:`F6` (:kbd:`Cmd + R` on macOS). +Everything's ready to run the scene! Press the :button:`Run Current Scene` +button in the top-right of the screen or press :kbd:`F6` (:kbd:`Cmd + R` on +macOS). .. image:: img/nodes_and_scenes_09_play_scene_button.webp -A popup invites you to save the scene, which is required to run it. -Click the Save button in the file browser to save it as ``label.tscn``. +A popup invites you to save the scene, which is required to run it. Click the +:button:`Save` button in the file browser to save it as ``label.tscn``. .. image:: img/nodes_and_scenes_10_save_scene_as.webp -.. note:: The Save Scene As dialog, like other file dialogs in the editor, only +.. note:: The :ui:`Save Scene As` dialog, like other file dialogs in the editor, only allows you to save files inside the project. The ``res://`` path at the top of the window represents the project's root directory and stands for "resource path". For more information about file paths in @@ -162,8 +164,8 @@ Close the window or press :kbd:`F8` (:kbd:`Cmd + .` on macOS) to quit the runnin Setting the main scene ---------------------- -To run our test scene, we used the **Run Current Scene** button. Another button -next to it, **Run Project**, allows you to set and run the project's +To run our test scene, we used the :button:`Run Current Scene` button. Another button +next to it, :button:`Run Project`, allows you to set and run the project's **main scene**. You can also press :kbd:`F5` (:kbd:`Cmd + B` on macOS) to do so. .. image:: img/nodes_and_scenes_12_play_button.webp @@ -176,8 +178,8 @@ A popup window appears and invites you to select the main scene. .. image:: img/nodes_and_scenes_13_main_scene_popup.webp -Click the Select button, and in the file dialog that appears, double click on -``label.tscn``. +Click the :button:`Select` button, and in the file dialog that appears, double +click on ``label.tscn``. .. image:: img/nodes_and_scenes_14_select_main_scene.webp @@ -186,9 +188,8 @@ will use this scene as a starting point. .. note:: The editor saves the main scene's path in a project.godot file in your project's directory. While you can edit this text file directly to - change project settings, you can also use the "Project -> Project - Settings" window to do so. For more information, see - :ref:`doc_project_settings`. + change project settings, you can also use the :menu:`Project > Project Settings` + window to do so. For more information, see :ref:`doc_project_settings`. In the next part, we will discuss another key concept in games and in Godot: creating instances of a scene. From a4af06837ad42d7166efd9370ddd00ad0679f143 Mon Sep 17 00:00:00 2001 From: saabdo42 Date: Fri, 11 Oct 2024 11:10:28 -0500 Subject: [PATCH 021/263] AnimationTree documentation overhaul --- tutorials/animation/animation_tree.rst | 323 ++++++++++-------- tutorials/animation/img/animtree13.png | Bin 9030 -> 0 bytes tutorials/animation/img/animtree14.png | Bin 9326 -> 0 bytes tutorials/animation/img/animtree16.png | Bin 97417 -> 0 bytes tutorials/animation/img/animtree17.png | Bin 16001 -> 0 bytes tutorials/animation/img/animtree18.png | Bin 5505 -> 0 bytes tutorials/animation/img/animtree9.png | Bin 2753 -> 0 bytes tutorials/animation/img/animtree9.webp | Bin 0 -> 2048 bytes ...nimtree4.png => animtree_animtooutput.png} | Bin .../img/animtree_badanimcondition.gif | Bin 0 -> 923226 bytes .../img/animtree_badanimcondition.webp | Bin 0 -> 42158 bytes .../{animtree5.gif => animtree_blend2.gif} | Bin ...{animtree10.png => animtree_blendmode.png} | Bin ...nimtree3.webp => animtree_blendnodes.webp} | Bin .../animation/img/animtree_blendspace1d.webp | Bin 0 -> 13044 bytes ...nimtree7.gif => animtree_blendspace2d.gif} | Bin ...ree8.gif => animtree_blendspacepoints.gif} | Bin ...nimtree11.gif => animtree_connections.gif} | Bin .../img/animtree_emptyblendtree.webp | Bin 0 -> 11348 bytes .../img/animtree_emptystatemachine.webp | Bin 0 -> 7410 bytes .../{animtree6.png => animtree_filtering.png} | Bin .../img/animtree_goodanimcondition.gif | Bin 0 -> 281883 bytes .../img/animtree_goodanimcondition.webp | Bin 0 -> 43532 bytes .../img/animtree_goodanimexpression.gif | Bin 0 -> 543598 bytes .../img/animtree_goodanimexpression.webp | Bin 0 -> 43100 bytes .../img/animtree_goodanimexpression2.webp | Bin 0 -> 42944 bytes .../{animtree6b.gif => animtree_oneshot.gif} | Bin .../animation/img/animtree_parameters.webp | Bin 0 -> 40698 bytes .../animation/img/animtree_propertypath.webp | Bin 0 -> 7798 bytes .../img/animtree_rootmotiontrack.webp | Bin 0 -> 5900 bytes .../{animtree2.png => animtree_rootnodes.png} | Bin ...tree_statemachinetransitionproperties.webp | Bin 0 -> 10152 bytes .../animation/img/animtree_timescale.webp | Bin 0 -> 3392 bytes .../animation/img/animtree_timeseek.webp | Bin 0 -> 3244 bytes .../animation/img/animtree_transition.webp | Bin 0 -> 16744 bytes ...ree12.png => animtree_transitiontypes.png} | Bin ...e1.png => animtree_treeandplayersetup.png} | Bin 37 files changed, 185 insertions(+), 138 deletions(-) delete mode 100644 tutorials/animation/img/animtree13.png delete mode 100644 tutorials/animation/img/animtree14.png delete mode 100644 tutorials/animation/img/animtree16.png delete mode 100644 tutorials/animation/img/animtree17.png delete mode 100644 tutorials/animation/img/animtree18.png delete mode 100644 tutorials/animation/img/animtree9.png create mode 100644 tutorials/animation/img/animtree9.webp rename tutorials/animation/img/{animtree4.png => animtree_animtooutput.png} (100%) create mode 100644 tutorials/animation/img/animtree_badanimcondition.gif create mode 100644 tutorials/animation/img/animtree_badanimcondition.webp rename tutorials/animation/img/{animtree5.gif => animtree_blend2.gif} (100%) rename tutorials/animation/img/{animtree10.png => animtree_blendmode.png} (100%) rename tutorials/animation/img/{animtree3.webp => animtree_blendnodes.webp} (100%) create mode 100644 tutorials/animation/img/animtree_blendspace1d.webp rename tutorials/animation/img/{animtree7.gif => animtree_blendspace2d.gif} (100%) rename tutorials/animation/img/{animtree8.gif => animtree_blendspacepoints.gif} (100%) rename tutorials/animation/img/{animtree11.gif => animtree_connections.gif} (100%) create mode 100644 tutorials/animation/img/animtree_emptyblendtree.webp create mode 100644 tutorials/animation/img/animtree_emptystatemachine.webp rename tutorials/animation/img/{animtree6.png => animtree_filtering.png} (100%) create mode 100644 tutorials/animation/img/animtree_goodanimcondition.gif create mode 100644 tutorials/animation/img/animtree_goodanimcondition.webp create mode 100644 tutorials/animation/img/animtree_goodanimexpression.gif create mode 100644 tutorials/animation/img/animtree_goodanimexpression.webp create mode 100644 tutorials/animation/img/animtree_goodanimexpression2.webp rename tutorials/animation/img/{animtree6b.gif => animtree_oneshot.gif} (100%) create mode 100644 tutorials/animation/img/animtree_parameters.webp create mode 100644 tutorials/animation/img/animtree_propertypath.webp create mode 100644 tutorials/animation/img/animtree_rootmotiontrack.webp rename tutorials/animation/img/{animtree2.png => animtree_rootnodes.png} (100%) create mode 100644 tutorials/animation/img/animtree_statemachinetransitionproperties.webp create mode 100644 tutorials/animation/img/animtree_timescale.webp create mode 100644 tutorials/animation/img/animtree_timeseek.webp create mode 100644 tutorials/animation/img/animtree_transition.webp rename tutorials/animation/img/{animtree12.png => animtree_transitiontypes.png} (100%) rename tutorials/animation/img/{animtree1.png => animtree_treeandplayersetup.png} (100%) diff --git a/tutorials/animation/animation_tree.rst b/tutorials/animation/animation_tree.rst index b7140e3e1..9a173b612 100644 --- a/tutorials/animation/animation_tree.rst +++ b/tutorials/animation/animation_tree.rst @@ -7,28 +7,30 @@ Introduction ------------ With :ref:`AnimationPlayer `, Godot has one of the most flexible animation systems that you can find in any game engine. -The ability to animate almost any property in any node or resource, as well as having dedicated transform, bezier, -function calling, audio and sub-animation tracks, is pretty much unique. +It is pretty much unique in its ability to animate almost any property in any node or resource, and its dedicated transform, bezier, +function calling, audio, and sub-animation tracks. -However, the support for blending those animations via ``AnimationPlayer`` is relatively limited, as only a fixed cross-fade transition time can be set. +However, the support for blending those animations via ``AnimationPlayer`` is limited, as you can only set a fixed cross-fade transition time. -Creating an AnimationTree -------------------------- +:ref:`AnimationTree ` is a new node introduced in Godot 3.1 to deal with advanced transitions. +It replaces the ancient ``AnimationTreePlayer``, while adding a huge amount of features and flexibility. -Before starting, it must be made clear that an ``AnimationTree`` node does not contain its own animations. -Instead, it uses animations contained in an ``AnimationPlayer`` node. This way, you can edit your animations (or import them from a 3D scene) -as usual and then use this extra node to control the playback. +AnimationTree and AnimationPlayer +--------------------------------- -The most common way to use ``AnimationTree`` is in a 3D scene. When importing your scenes from a 3D exchange format, they will usually come -with animations built-in (either multiple ones or split from a large one on import). -At the end, the imported Godot scene will contain the animations in a ``AnimationPlayer`` node. +Before starting, know that an ``AnimationTree`` node does not contain its own animations. +Instead, it uses animations contained in an ``AnimationPlayer`` node. You create, edit, or import your animations in an ``AnimationPlayer`` +and then use an ``AnimationTree`` to control the playback. -As you rarely use imported scenes directly in Godot (they are either instantiated or inherited from), you can place the ``AnimationTree`` node in your +``AnimationPlayer`` and ``AnimationTree`` can be used in both 2D and 3D scenes. When importing 3D scenes and their animations, you can use +`name suffixes `_ +to simplify the process and import with the correct properties. At the end, the imported Godot scene will contain the animations in a ``AnimationPlayer`` node. +Since you rarely use imported scenes directly in Godot (they are either instantiated or inherited from), you can place the ``AnimationTree`` node in your new scene which contains the imported one. Afterwards, point the ``AnimationTree`` node to the ``AnimationPlayer`` that was created in the imported scene. -This is how it's done in the `Third Person Shooter demo `_, for reference: +This is how it's done in the `Third Person Shooter demo `_, for reference: -.. image:: img/animtree1.png +.. image:: img/animtree_treeandplayersetup.png A new scene was created for the player with a ``CharacterBody3D`` as root. Inside this scene, the original ``.dae`` (Collada) file was instantiated and an ``AnimationTree`` node was created. @@ -36,78 +38,77 @@ and an ``AnimationTree`` node was created. Creating a tree --------------- -There are three main types of nodes that can be used in ``AnimationTree``: +To use an ``AnimationTree``, you have to set a root node. An animation root node is a class that contains and evaluates sub-nodes and outputs an animation. +There are 3 types of sub-nodes: 1. Animation nodes, which reference an animation from the linked ``AnimationPlayer``. -2. Animation Root nodes, which are used to blend sub-nodes. -3. Animation Blend nodes, which are used within ``AnimationNodeBlendTree`` as single-graph blending via multiple input ports. +2. Animation Root nodes, which are used to blend sub-nodes and can be nested. +3. Animation Blend nodes, which are used in an ``AnimationNodeBlendTree``, a 2D graph of nodes. Blend nodes take multiple input ports and give one output port. -To set a root node in ``AnimationTree``, a few types are available: +A few types of root nodes are available: -.. image:: img/animtree2.png +.. image:: img/animtree_rootnodes.png -* ``AnimationNodeAnimation``: Selects an animation from the list and plays it. This is the simplest root node, and generally not used directly as root. -* ``AnimationNodeBlendTree``: Contains many *blend* type nodes, such as mix, blend2, blend3, one shot, etc. This is one of the most commonly used roots. -* ``AnimationNodeStateMachine``: Contains multiple root nodes as children in a graph. Each node is used as a *state*, and provides multiple functions to alternate between states. -* ``AnimationNodeBlendSpace2D``: Allows placing root nodes in a 2D blend space. Control the blend position in 2D to mix between multiple animations. -* ``AnimationNodeBlendSpace1D``: Simplified version of the above (1D). +* ``AnimationNodeAnimation``: Selects an animation from the list and plays it. This is the simplest root node, and generally not used as a root. +* ``AnimationNodeBlendTree``: Contains multiple nodes as children in a graph. Many blend nodes are available, such as mix, blend2, blend3, one shot, etc. +* ``AnimationNodeBlendSpace1D``: Allows linear blending between two animation nodes. Control the blend position in a 1D blend space to mix between animations. +* ``AnimationNodeBlendSpace2D``: Allows linear blending between three animation nodes. Control the blend position in a 2D blend space to mix between animations. +* ``AnimationNodeStateMachine``: Contains multiple nodes as children in a graph. Each node is used as a state, with multiple functions used to alternate between states. Blend tree ---------- -An ``AnimationNodeBlendTree`` can contain both root and regular nodes used for blending. Nodes are added to the graph from a menu: +When you make an ``AnimationNodeBlendTree``, you get an empty 2d graph in the bottom panel, under the AnimationTree tab. It contains only an ``Output`` +node by default. -.. image:: img/animtree3.webp +.. image:: img/animtree_emptyblendtree.webp -All blend trees contain an ``Output`` node by default, and something has to be connected to it in order for animations to play. +In order for animations to play, a node has to be connected to to the output. You can add nodes from the **Add Node..** menu or by right clicking an empty space: -The easiest way to test this functionality is to connect an ``Animation`` node to it directly: +.. image:: img/animtree_blendnodes.webp -.. image:: img/animtree4.png +The simplest connection to make is to connect an ``Animation`` node to the output directly, which will just play back the animation. -This will simply play back the animation. Make sure that the ``AnimationTree`` is active for something to actually happen. +.. image:: img/animtree_animtooutput.png -Following is a short description of available nodes: +Following is a description of the other available nodes: Blend2 / Blend3 ~~~~~~~~~~~~~~~ These nodes will blend between two or three inputs by a user-specified blend value: -.. image:: img/animtree5.gif +.. image:: img/animtree_blend2.gif -For more complex blending, it is advised to use blend spaces instead. +Blending can use **filters** to control individually which tracks get blended and which do not. This can be useful for layering animations on top of each other. -Blending can also use filters, i.e. you can control individually which tracks go through the blend function. -This is very useful for layering animations on top of each other. +.. image:: img/animtree_filtering.png -.. image:: img/animtree6.png +For more complex blending, it is recommended to use blend spaces instead. OneShot ~~~~~~~ -This node will execute a sub-animation and return once it finishes. Blend times for fading in and out can be customized, as well as filters. +This node will execute an animation once and return when it finishes. You can customize blend times for fading in and out, as well as filters. -.. image:: img/animtree6b.gif - -After setting the request and changing the animation playback, the one-shot node automatically clears the request on the next process frame by setting its ``request`` value to ``AnimationNodeOneShot.ONE_SHOT_REQUEST_NONE``. +.. image:: img/animtree_oneshot.gif .. tabs:: .. code-tab:: gdscript GDScript # Play child animation connected to "shot" port. animation_tree.set("parameters/OneShot/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE) - # Alternative syntax (same result as above). + # Alternative syntax (same result). animation_tree["parameters/OneShot/request"] = AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE # Abort child animation connected to "shot" port. animation_tree.set("parameters/OneShot/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_ABORT) - # Alternative syntax (same result as above). + # Alternative syntax (same result). animation_tree["parameters/OneShot/request"] = AnimationNodeOneShot.ONE_SHOT_REQUEST_ABORT # Get current state (read-only). animation_tree.get("parameters/OneShot/active")) - # Alternative syntax (same result as above). + # Alternative syntax (same result). animation_tree["parameters/OneShot/active"] .. code-tab:: csharp @@ -124,21 +125,23 @@ After setting the request and changing the animation playback, the one-shot node TimeSeek ~~~~~~~~ -This node can be used to cause a seek command to happen to any sub-children of the animation graph. Use this node type to play an ``Animation`` from the start or a certain playback position inside the ``AnimationNodeBlendTree``. +This node allows you to seek to a time in the animation connected to its `in` input. Use this node to play an ``Animation`` starting from a certain playback position. +Note that the seek request value is measured in seconds, so if you would like to play an animation from the beginning, set the value to ``0.0``, or if you would like +to play an animation from 3 seconds in, set the value to ``3.0``. -After setting the time and changing the animation playback, the seek node automatically goes into sleep mode on the next process frame by setting its ``seek_request`` value to ``-1.0``. +.. image:: img/animtree_timeseek.webp .. tabs:: .. code-tab:: gdscript GDScript # Play child animation from the start. animation_tree.set("parameters/TimeSeek/seek_request", 0.0) - # Alternative syntax (same result as above). + # Alternative syntax (same result). animation_tree["parameters/TimeSeek/seek_request"] = 0.0 # Play child animation from 12 second timestamp. animation_tree.set("parameters/TimeSeek/seek_request", 12.0) - # Alternative syntax (same result as above). + # Alternative syntax (same result). animation_tree["parameters/TimeSeek/seek_request"] = 12.0 .. code-tab:: csharp @@ -152,30 +155,35 @@ After setting the time and changing the animation playback, the seek node automa TimeScale ~~~~~~~~~ -Allows scaling the speed of the animation (or reverse it) connected to the `in` input via the `scale` parameter. Setting the `scale` to 0 will pause the animation. +This node allows you to scale the speed of the animation connected to its `in` input. The speed of the animation will be multiplied by the number in the `scale` +parameter. Setting the scale to 0 will pause the animation. Setting the scale to a negative number will play the animation backwards. + +.. image:: img/animtree_timescale.webp Transition ~~~~~~~~~~ -Very simple state machine (when you don't want to cope with a ``StateMachine`` node). Animations can be connected to the outputs and transition times can be specified. -After setting the request and changing the animation playback, the transition node automatically clears the request on the next process frame by setting its ``transition_request`` value to an empty string (``""``). +This node is a simplified version of a StateMachine. You connect animations to the inputs, and the current state index determines which animation to play. +You may specify a crossfade transition time. In the Inspector, you may change the number of input ports, rearrange inputs, or delete inputs. + +.. image:: img/animtree_transition.webp .. tabs:: .. code-tab:: gdscript GDScript # Play child animation connected to "state_2" port. animation_tree.set("parameters/Transition/transition_request", "state_2") - # Alternative syntax (same result as above). + # Alternative syntax (same result). animation_tree["parameters/Transition/transition_request"] = "state_2" # Get current state name (read-only). animation_tree.get("parameters/Transition/current_state") - # Alternative syntax (same result as above). + # Alternative syntax (same result). animation_tree["parameters/Transition/current_state"] # Get current state index (read-only). animation_tree.get("parameters/Transition/current_index")) - # Alternative syntax (same result as above). + # Alternative syntax (same result). animation_tree["parameters/Transition/current_index"] .. code-tab:: csharp @@ -189,62 +197,132 @@ After setting the request and changing the animation playback, the transition no // Get current state index (read-only). animationTree.Get("parameters/Transition/current_index"); -BlendSpace2D -~~~~~~~~~~~~ - -``BlendSpace2D`` is a node to do advanced blending in two dimensions. Points are added to a two-dimensional space and then a position -can be controlled to determine blending: - -.. image:: img/animtree7.gif - -The ranges in X and Y can be controlled (and labeled for convenience). By default, points can be placed anywhere (right-click on -the coordinate system or use the *add point* button) and triangles will be generated automatically using Delaunay. - -.. image:: img/animtree8.gif - -It is also possible to draw the triangles manually by disabling the *auto triangle* option, though this is rarely necessary: - -.. image:: img/animtree9.png - -Finally, it is possible to change the blend mode. By default, blending happens by interpolating points inside the closest triangle. -When dealing with 2D animations (frame by frame), you may want to switch to *Discrete* mode. -Alternatively, if you want to keep the current play position when switching between discrete animations, there is a *Carry* mode. -This mode can be changed in the *Blend* menu: - -.. image:: img/animtree10.png - -BlendSpace1D -~~~~~~~~~~~~ - -This is similar to 2D blend spaces, but in one dimension (so triangles are not needed). StateMachine ~~~~~~~~~~~~ -This node acts as a state machine with root nodes as states. Root nodes can be created and connected via lines. States are connected via *Transitions*, -which are connections with special properties. Transitions are uni-directional, but two can be used to connect in both directions. +When you make an ``AnimationNodeStateMachine``, you get an empty 2d graph in the bottom panel, under the AnimationTree tab. It contains a ``Start`` and ``End`` +state by default. -.. image:: img/animtree11.gif +.. image:: img/animtree_emptystatemachine.webp -There are many types of transition: +To add states, right click or use the **create new nodes** button, whose icon is a plus in a box. You can add animations, blendspaces, blendtrees, or even +another StateMachine. To edit one of these more complex sub-nodes, click on the pencil icon on the right of the state. To return to the original StateMachine, +click **Root** on the top left of the panel. -.. image:: img/animtree12.png +Before the StateMachine can do anything useful, the states must be connected with transitions. To add a transition, click the **connect nodes** button, which is +a line with a right-facing arrow, and drag between two states. You can create 2 transitions between states, one going in each direction. -* *Immediate*: Will switch to the next state immediately. The current state will end and blend into the beginning of the new one. +.. image:: img/animtree_connections.gif + +There are 3 types of transitions: + +.. image:: img/animtree_transitiontypes.png + +* *Immediate*: Will switch to the next state immediately. * *Sync*: Will switch to the next state immediately, but will seek the new state to the playback position of the old state. * *At End*: Will wait for the current state playback to end, then switch to the beginning of the next state animation. -Transitions also have a few properties. Click any transition and it will be displayed in the inspector dock: +Transitions also have a few properties. Click a transition and it will be displayed in the inspector: -.. image:: img/animtree13.png +.. image:: img/animtree_statemachinetransitionproperties.webp -* *Switch Mode* is the transition type (see above), it can be modified after creation here. -* *Auto Advance* will turn on the transition automatically when this state is reached. This works best with the *At End* switch mode. -* *Advance Condition* will turn on auto advance when this condition is set. This is a custom text field that can be filled with a variable name. - The variable can be modified from code (more on this later). * *Xfade Time* is the time to cross-fade between this state and the next. +* *Xfade Curve* is a cross-fade following a curve rather than a linear blend. +* *Reset* determines whether the state you are switching into plays from the beginning (true) or not (false). * *Priority* is used together with the ``travel()`` function from code (more on this later). Lower priority transitions are preferred when travelling through the tree. -* *Disabled* toggles disabling this transition (when disabled, it will not be used during travel or auto advance). +* *Switch Mode* is the transition type (see above). It can be changed after creation here. +* *Advance Mode* determines the advance mode. If ``Disabled``, the transition will not be used. If ``Enabled``, the transition will only be used during ``travel()``. If ``Auto``, the transition will be used if the advance condition and expression are true, or if there are no advance conditions/expressions. + +Advance Condition and Advance Expression +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The last 2 properties in a StateMachine transition are ``Advance Condition`` and ``Advance Expression.`` When the Advance Mode is set to *Auto*, these +determine if the transition will advance or not. + +Advance Condition is a true/false check. You may put a custom variable name in the text field, and when the StateMachine reaches this transition, +it will check if your variable is *true*. If so, the transition continues. Note that the advance condition **only** checks if a variable is *true*, +and it cannot check for falseness. + +This gives the Advance Condition a very limited capability. If you wanted to make a transition back and forth based on one property, you would need to make +2 variables that have opposite values, and check if either of them are true. This is why, in Godot 4, the Advance Expression was added. + +The Advance Expression works similar to the Advance Condition, but instead of checking if one variable is true, it evaluates any expression. An expression +is anything you could put in an ``if`` statement. These are all examples of expressions that would work in the Advance Expression: + +* ``is_walking`` +* ``is_walking`` == true +* ``is_walking && !is_idle`` +* ``velocity > 0`` +* ``player.is_on_floor()`` + +Here is an example of an improperly-set-up StateMachine transition using Advance Condition: + +.. image:: img/animtree_badanimcondition.webp +.. image:: img/animtree_badanimcondition.gif + +This is not working because there is a ``!`` variable in the Advance Condition, which cannot be checked. + +Here is the same example, set up properly, using two opposite variables: + +.. image:: img/animtree_goodanimcondition.webp +.. image:: img/animtree_goodanimcondition.gif + +Here is the same example, but using Advance Expression rather than Advance Condition, which eliminates the need for two variables: + +.. image:: img/animtree_goodanimexpression.webp +.. image:: img/animtree_goodanimexpression2.webp +.. image:: img/animtree_goodanimexpression.gif + +In order to use Advance Expressions, the Advance Expression Base Node has to be set from the Inspector of the AnimationTree node. By default, it is set +to the AnimationTree node itself, but it needs to point to whatever node contains the script with your animation variables. + +StateMachine travel +^^^^^^^^^^^^^^^^^^^ + +One of the nice features in Godot's ``StateMachine`` implementation is the ability to travel. You can instruct the graph to go from the +current state to another one, while visiting all the intermediate ones. This is done via the A\* algorithm. +If there is no path of transitions starting at the current state and finishing at the destination state, the graph teleports to the destination state. + +To use the travel ability, you should first retrieve the :ref:`AnimationNodeStateMachinePlayback ` +object from the ``AnimationTree`` node (it is exported as a property), and then call one of its many functions: + +.. tabs:: + .. code-tab:: gdscript GDScript + + var state_machine = animation_tree["parameters/playback"] + state_machine.travel("SomeState") + + .. code-tab:: csharp + + AnimationNodeStateMachinePlayback stateMachine = (AnimationNodeStateMachinePlayback)animationTree.Get("parameters/playback"); + stateMachine.Travel("SomeState"); + +The StateMachine must be running before you can travel. Make sure to either call ``start()`` or connect a node to **Start**. + +BlendSpace2D and BlendSpace1D +----------------------------- + +``BlendSpace2D`` is a node to do advanced blending in two dimensions. Points representing animations are added to a 2D space and then a position between them +is controlled to determine the blending: + +.. image:: img/animtree_blendspace2d.gif + +You may place these points anywhere on the graph by right clicking or using the **add point** button, whose icon is a pen and point. +Wherever you place the points, the triangle between them will be generated automatically using Delaunay. +You may also control and label the ranges in X and Y. + +.. image:: img/animtree_blendspacepoints.gif + +Finally, you may also change the blend mode. By default, blending happens by interpolating points inside the closest triangle. When dealing with 2D +animations (frame by frame), you may want to switch to *Discrete* mode. Alternatively, if you want to keep the current play position when switching +between discrete animations, there is a *Carry* mode. This mode can be changed in the *Blend* menu: + +.. image:: img/animtree_blendmode.png + +BlendSpace1D works just like BlendSpace2D, but in one dimension (a line). Triangles are not used. + +.. image:: img/animtree_blendspace1d.webp For better blending ------------------- @@ -276,7 +354,7 @@ This problem can be solved by adding a Property track for Position as an initial It is assumed to have only one frame and is not expected to be played back using the timeline. Also keep in mind that the Rotation 3D tracks and the Property tracks for 2D rotation -with Interpolation Type set to Linear Angle or Cubic Angle will prevent rotation of more than 180 degrees +with Interpolation Type set to Linear Angle or Cubic Angle will prevent rotations greater than 180 degrees from the initial value as blended animation. This can be useful for Skeleton3Ds to prevent the bones penetrating the body when blending animations. @@ -298,7 +376,7 @@ This allows animating characters in a way where steps actually match the floor b When playing back the animation in Godot, it is possible to select this bone as the *root motion track*. Doing so will cancel the bone transformation visually (the animation will stay in place). -.. image:: img/animtree14.png +.. image:: img/animtree_rootmotiontrack.webp Afterwards, the actual motion can be retrieved via the :ref:`AnimationTree ` API as a transform: @@ -329,7 +407,7 @@ Afterwards, the actual motion can be retrieved via the :ref:`AnimationTree ` to control the character movement. -There is also a tool node, ``RootMotionView``, that can be placed in a scene and will act as a custom floor for your +There is also a tool node, ``RootMotionView``, you can place a scene that will act as a custom floor for your character and animations (this node is disabled by default during the game). .. image:: img/animtree15.gif @@ -339,66 +417,35 @@ Controlling from code After building the tree and previewing it, the only question remaining is "How is all this controlled from code?". -Keep in mind that the animation nodes are just resources and, as such, they are shared between all instances using them. +Keep in mind that the animation nodes are just resources, so they are shared between all instances using them. Setting values in the nodes directly will affect all instances of the scene that uses this ``AnimationTree``. This is generally undesirable, but does have some cool use cases, e.g. you can copy and paste parts of your animation tree, -or reuse nodes with a complex layout (such as a state machine or blend space) in different animation trees. +or reuse nodes with a complex layout (such as a StateMachine or blend space) in different animation trees. The actual animation data is contained in the ``AnimationTree`` node and is accessed via properties. Check the "Parameters" section of the ``AnimationTree`` node to see all the parameters that can be modified in real-time: -.. image:: img/animtree16.png +.. image:: img/animtree_parameters.webp This is handy because it makes it possible to animate them from an ``AnimationPlayer``, or even the ``AnimationTree`` itself, -allowing the realization of very complex animation logic. +allowing very complex animation logic. -To modify these values from code, the property path must be obtained. This is done easily by hovering the mouse over any of the parameters: +To modify these values from code, you must obtain the property path. You can find them by hovering your mouse over any of the parameters: -.. image:: img/animtree17.png +.. image:: img/animtree_propertypath.webp -Which allows setting them or reading them: +Then you can set or read them: .. tabs:: .. code-tab:: gdscript GDScript animation_tree.set("parameters/eye_blend/blend_amount", 1.0) - # Simpler alternative form: + # Alternate syntax (same result) animation_tree["parameters/eye_blend/blend_amount"] = 1.0 .. code-tab:: csharp animationTree.Set("parameters/eye_blend/blend_amount", 1.0); -State machine travel --------------------- - -One of the nice features in Godot's ``StateMachine`` implementation is the ability to travel. The graph can be instructed to go from the -current state to another one, while visiting all the intermediate ones. This is done via the A\* algorithm. -If there is no path of transitions starting at the current state and finishing at the destination state, the graph teleports to the destination state. - -To use the travel ability, you should first retrieve the :ref:`AnimationNodeStateMachinePlayback ` -object from the ``AnimationTree`` node (it is exported as a property). - -.. tabs:: - .. code-tab:: gdscript GDScript - - var state_machine = animation_tree["parameters/playback"] - - .. code-tab:: csharp - - AnimationNodeStateMachinePlayback stateMachine = (AnimationNodeStateMachinePlayback)animationTree.Get("parameters/playback"); - -Once retrieved, it can be used by calling one of the many functions it offers: - -.. tabs:: - .. code-tab:: gdscript GDScript - - state_machine.travel("SomeState") - - .. code-tab:: csharp - - stateMachine.Travel("SomeState"); - -The state machine must be running before you can travel. Make sure to either call ``start()`` or choose a node to **Autoplay on Load**. - -.. image:: img/animtree18.png +.. note:: Advance Expressions from a StateMachine will not be found under the parameters. This is because they are held in another script rather than the + AnimationTree itself. Advance `Conditions` will be found under parameters. diff --git a/tutorials/animation/img/animtree13.png b/tutorials/animation/img/animtree13.png deleted file mode 100644 index d79e64655ae97b2c55cf398c6a194454805b58c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9030 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 E0{W&OJ^%m! diff --git a/tutorials/animation/img/animtree14.png b/tutorials/animation/img/animtree14.png deleted file mode 100644 index 5248eb063cabed5e76c463a960b0a98db4710863..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9326 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 TLl+3o5fOnkAsXcmo`?M(l#z9B diff --git a/tutorials/animation/img/animtree16.png b/tutorials/animation/img/animtree16.png deleted file mode 100644 index ef8156d31d337c4432fde84fd9c2db1c1620423f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97417 zcmbrlby!qiyFW|_D&3{hB}fiAba$5uNC`tDFm#K8k^<5U-HmiNN)0I>-7s`W*Spd0 zbDr~@bAErlGhFPs*6g*`ou51Qn$PO0a@ZIY7)VG+*b4H}nn*}!3rI*Pg^y5x5$UFK zQzT?>bp>e&ZTIP&Ib?KyPO|SKrCbATSZyeqNXV{1?6ZlIk7&Lmip(RU_nZaZMLRWr zd^u4P4oo+8_|B|`U6F0Dz*yJqzh5Q}LqU&WVBe^Db#~U31ryOVMlY z<4V7rTwZ-rE$+y{;VV?;GX2BvVz(M%CAog?ry;zsiIW<`;2XMc5YBr>kdVH>kpz5? zQbx&ds**ZayvD0aT{6~-Qs7ljFE>(#2DXAD@6?b(2CK&SE{c&^w)7fGZ7&z@Zv1$+Ur$U_m(sy#{*YH*uFIE58O)j- z{jKoq+2!(btbXmj=@&R)&Pf%9+#4N=N4fe$3n|lwpe9)?^f-5-0gtEo}WxZ z2KCN&t-b=j?2UCfb~2NQMp>f|%t$ec{y*hJl-htjK1+&y7G#QNOTT?s+L z#2Ret_kp5)Zi)fwNxht!!Eh1dTU|8SwFo;g@0*Fh{>i;Cdm*ByFo*DJgc}BDH#c{U zU2D>Md{QiCSsZjfO)5gW%GToSVLS{q4^ty|MJY>O@^<#w>gJEN$)6sOCORl&q zl}YR)1(oAzB|UquO+PMb7?((H3^WJ|cnVTm$29Sjb8FFfN(1albc7<)hJSCN=~!Mu zRvnreYbnhTpXA^9I~i(mglgjW(SB$K?hpgdUL8l!GFBVF7(b3M8%{MxcS0GtE4r*- zQ#r1jc0Q@4{B)wI_;Kfw_W?CvFOK)_kHng6J4!witHMGy62TcPdYPNQdQlNAKtG$O8)Q)ZYh+&Wc8!+b!?nDY%Cc*HCWbc2E`{aT0L$3(2$cEds&0M zj@^jv>g~2V;G6?;jY$?)EGjKbo=DoTyKKgmhYT3)Wq$O7z>S_foq;G$+a?@uY*>M{ z1dlfD(%eVM?>CyS`=-!1B=F0PQMg4usw+vQ)6t3;jH94`s_FnX<8LKlwn9xZx4EoZ zl)pRP1kXf1c?Tvnwz&8{j!pio2Z=sYi5rY$Q%n`4e z9e-$vEw(xM9_tehZhA(Hksrr5k`P*RFxY%dJ?`AqX?ES((Gkf74RB*n@amp8TED0->+RIO5UTO?QxV^ZY*0fg2OJhQ!cS=K6)^DMyt zw^WZIVnRX00i2be~tWHn&K79xF z2+c@~i32xO&2joajwB8S;TBBGc%e7;ayX=|O(JE+C`G^ou0oA&6~$caE?aMwvIiu< zS@aBSWlN1&kh7=P-bZGsxV0PwZ|r$@aZBC4!t+5dZ0dh%*NoQf4`mD`MQgV3q%o4oicKbR{zzRh1*I5AAUH1Zm^pwG%WcmAOd>_;90pUKr0iyH&2ZE4*FTcQn z?|>II3|Sm3^@nVv$|!jL!?vOi|J>$(1~^G80a6+IDEWVFkc)~KNJ;1{yY~=)&wEn; z2 z%Be@mV_NGJ`wL!DB$U^C{SKE|Dn$%jvPsQTj@9|19Y5PR@bTYyZ*9)ywm)xFUjyP4 z)`4c^f?aIT#}c!PDemcMQ%ahL_V5chM){?zl`uqY`8hj&u-OfBkdLk<9jWuVUj^@A zgvp5IlLqa|biw^>aIady%_S#ol37>4jd4=paZoNQV$DYxBR@e>OY+lV3xp zb!Rt6V?vxb`-3c`bdHCUv!S0~pw|TspFiyS9X%*wcGD@et*>hn^gNiE=Xrtc+$e}o zph4*;d%>@@RLHv{ZbBg(obX-O8;o_KX>3xT-$8Jb=2+2+^eP3BG0ZyOm74ctu>*Ck zg$1f}v@nl9Xf6+#KMwz_z{1JEr`xOWO697rT0|lWA%SmIG;tC)34Mu5Tu}ULm=u;! z7ChKM1A<%~g(EK&;5!P!d{)rRRkUz4cq$9L=ou9Tv&VNrS~8wh^nRqY0EqF;=v91c z(E9!&!nL#dx0R*xb`y&We&Uy+GYuwALPXf@C3F|-k&?#7TG6D!AFDD(&H=GJ;Uan1 zmAGnp^pSU~q&o_gPDm%tly^ld^lNOwFM`pKUC|#{z0V8vUiGcg^r`SvGV-8?_UY@E zZdatWBl-aqj8#3^BTTWx_-H}&@>iAV3CSd!*arO5oC`;`lN?U7;eQaP>{+I14f z)QJ1~Dc;=+{a(ETt_!rP8hI5qMs8G{=Fu`}k1u*KhuLJ+6Z;6)(FP{sNz3Ngq%oYS zalz~t7T>5MQVj_3eb(ifJ=60n?JK;Y;lmkmRg=N*X}&Hi>$^ph z4%QM{9x7K+Sxk3y>3@A2z$ZJ|EKnr(abdOk<{T9jdx`zzd^3yjD~hk_QZUVLeSmZI z>$(+y*Ab~LIpKgY#D>7-HG9Kc4}O-mVb~DC+!NZD?zQ4PXvQE~0 z=`}lmBOZDc@l+_sfBlM%DfI!*Ur!YWo9%YYh?MIvFZk&*}*vwq+4Z_SWnNOw6v~a`8A{%B%VBxXw*7(wC*8XhQ*)e<#e)F41Bc}lHC3i zxN(-R1T;b31}3~ZJX*g{!x=JK_AsxznEhUh3+euI1J<9VBGk%=%Hh{2NRhCm%Nd;b zBGx~{PA+Q|Af#eoiP9NVU|U1MzvHhVNG~CE_PBrP*b3=a8H;tvrT=HpP!RHG_GwTN z>$Wn={}|m0v4J5Q!=8_>HHf@(0f_j!*#tS#L}Jq7pRu*AkUs?c8GEp|ep^zxRWl<6 zop-J~tc!I5Ch712v$mC+UJ(G)EmXi?LY6&nO<<0!_fv~f*!A=#63^e8Bej8#F(=5k z!(3$lk=eg?@2&>s6oUXs^$9xPQ!xofZ3BaN>fca>ZZnm*@}HJ&y9RR4W*u*k_$*)n zEA*6n{X>+2;Va0gDkbu7+Rqb-7eBLZN7gRS-|oLiFOp9ZxqaXk*@#b1Np0U{ctEyy zi~n-=8Oh}09-dn;+3CA87q=6C*G8=HNG1-+SJ zNu9Bm`a{sEgOTS2R{Taj!)-KS0v~aBlPd#P&wt*w&>mCq`w~#K2Aw5Vkoo4@*xp3u zfGqg-l56&+>li4pJy}X%+tC~sng&rE-Nb(`Bjg01rJ+3>^jpho+lFk0#A=_X0xS-k z?5!=z3MQL9w`NP2d_CQRO}%{xi>%KT`x@dKy%%r_8}^!g%8XhMvpXKjrbs>{T-O&t zB*{k@#q49ASx0glH-vQ`NU@Agkd#4FgYnfzR5QZH3dEtg&uxnrNQAU6i+5buG*jk{`$!D^D zir5ghEU%MD!jVKfA>8cTjgmLD&Fj!0^TFSzkAs`*emlKfuq0NYV!+ZF*jpt-{=u}&q6)U-OFAV0IAFO0O z0V@r?>bcgh)(MdAiT6vpLjhNM55@^%>Yki#2m6U#;iS&`Z4!x9+y2b$`uai`_2UVZ z?z5&JLAO{ ztZw^4y1`J3?Nbq3Ucx&!z!DRqQWX<75nuke-5>AUe1i|80n=&q$&!hfpwAPU1*v>( z(p7i2m31{KQ5IrgBfV>|F@LGtlF7{Z2`-=vt2j6>py!F!tdxsLhVKGSCgRG?#Z1e` z`GS!~FjRxg-tBmguH2a?kkn~%KA`+b^6Nb@sP{xl_pT0?aTQNGi9TuBKvc zyo0TkK11}`PVorPh8fSy8}h)0QI-@fxs{C7gr`)F`BD7kiTzQ&nD3S?kW zL&>=}>*AlPi1=R;lOVoO(m@Q&qcS1M)$B|$Z8+_T`dEu@l>15@ZnbYJ4+hI<;9GW0 z351b9#qY;?&bdVl&V&l9uM-<7p?B0B zolSBMu8#~pNyY4``faQ{hT<2P88?mSYt1Yngv<&9w}*lF#@?< zq8vVVtdMw#{7{C}0N)BP;jLwB#;0R!eOJ;{jv+SYH?1D=8)>lEsRav-J>_>@#=|5p z>`kln@SmRZX6>#&3*g%s;4fa_jHBz^9e~YXH%=oGr%b8LZ6^X1D~jKQ1$-u-AC(Jx zTDjjA6%sMHw)W2_JeFOni>sRI+95$vj*yhC?97l`fvQS3O=vI2 zi(XddpkeZ0l_VasJrph@1uHAWkHed^JG-{fnsmbgcLYflLm4Z#=-q+IMQ|hs1c1}X z5sJRF)^itfn8|L`jM0Z7VL@Y)%QhKuR8k1e>*${jZ!)72F_*I$>p`rO_9EWb2Bb=p zt;Dd5R=JS{tpAG1075XkAujzUX`!TfgU3)k&2bmn!h@SA1O_$rl>|xa8rKx zy*L6&r$GT9H+1?h1xLbUMzF3Cq|6V3gCkPSZ)loyn?PDqXZ7#2BR3^8Qy zFomo4<4}y(+}tU0w3+d4g3P$$X1mb0c=lg9!u`FU4Ly zala=^Ma;YfxYAxr7zM>Y=<#lMKYvp$=v4H;94~l`++yRMTr}K2y7=J_&IR{b&_mgK%!bc;FG6jU<8g~)(dZwOhNt&ZBJE!o&eLe@Fn zcwHJ4nsad2o3JJy#FW`~w5Yn&eY5IZhXMF#s&DDM^zL}VaK>#fD^JrCOm7szdX!T~ z3tSrXq#^R}l@muQj%DDwTM^iH<&Z}dK#Nn@hg~HKibXE?@!9)WBz z^dObq$*xU+QzMXijn55fvlH4LY1E_EKc333+Zp9;BV8BrR(_hrIg3MA8#+ebROGg8 zpBk&Rxwq7x>GFb53-!13V5K*D-ro40@9j5Vh-^?q8aabOYv*q1px3gxQ{#^hjfV#x zLv#0cDu3pJ^3S~(x#p(fawDIn+v+d6f5>0ErFpQH!?d1_CbE?kp)>*!MT%^tfQ3`! z*?-|hH}M>6CWxLv$D(VO*zqw5e@1u;X%pLNB;{bethi+rlJ_6MMIW-hj}}Fhvkevd z#H*Me;n{LdP|2DF!bg=$$0wsirOV?yAV`d+haF;mej99ikcml($?;XnmfPJ<&mwQw zGZcZ9@Km#0y7?X5pwp{n^XO5zTGdPAP+?YSzSt12KpS_kT4V2 z5JRqM)tzm&PBsW9Le=m3P%f0Dq)-v^@=}3As8KGG^0^cUC?2pWGM!yM9PaMyFnpKe z7yOz%eGFN-!$x44re{t)@1l$|KzXu3@|F4+GY&`zyfN+2EvZ}D`Tnnjk{|~(>H_h8 zkG^b<7kOh$tE{AF*Rfz3pluxrPoKr2_@QBZ`h1L(Q^@*zdcfmHoEWM!F6P%?e|bmu z>)J^YNR{FXEHP1n1^C`|THnHY=4=o~|#goJEN#&T%uWzsR)BJ8d zWMu)^`nddjIMG@wFa+AuH_a#_a#K{+a(O!A;4t4L=-cr?!w6k~0x4ZPNdlElH6u`f zfeT^lxifXh(Q>}r&(W$ZFF*csY$I>y+0&Sqn6te(ue)2HsKYhCg{?uOMN`Oz|3?er z;P?1>T?i~2)=_ecC~_bt$qQ*sw5 zlgRALwmJqRasB`s?1XrsXgo=ZZ;4`p72Vk)SF&@6U@+KM`%Y-q)|bkdx5?w=_3*w)kAd zzc6G$;t}|OpEsN_x=jEJ7_b#lrzDdM{J(O<&%@;SkDpd}nvHyOL80S|6Lk{KsM*At zj#*g`tnnWKLIj1I9GxM9{({Y^f!;7+@Jpl%6aM|B8|Kff6iL*xtvO;a=O2!t{9)YlIw$ zXgItpJ3Ay#x9p9Ufq|`+Id%sMMy18z>j~uTjF6BJ&tJdjNYRzz6crT{Ild@*cnFdx z)YsL`)qBN{kYj!1Rly`>ADx&W9zb59&&!5x+plkJ-2xsqln9E~qHKE>W@c>pfvbY( z)2}GZw2)`Qt0P(8V|{%}>*^3>P3vCTpNkw$Ov6{x!I3$Np~BHW4duV25WD~9?T@YqbC z6mY!|L&JECjViwMYkgrlb_mU)Fky0qxjX>51HMfqbzH>{fXR<}vRZ$9bkh z#POi36DLpgW^&H!j7620w4>agLM55+ySHR#2l4aI-xOF16=E#(N)29>8)pc>+UXrx zDR`|lNujcjEJ--t(29ekA)nyGTF?JgEJt$?b`y^zdNL5)%R6z;VqIQUVyn+TAaHNK zS;+SMk&KhcbPg+pyq5{yMzTXoI}P6BZU6VY?=QK@u(64pmx^){V9!k3N2=-&@f=1y z1oZFl_VP0`d#=nBi1fY3b8PruKpUJl;E*(*pzUvt;AB@5)@-7CQjbK3;pgu3lg7wj z1z?9qM?FWS;9eL$O41q!GWG{_x&H^Lm(TA>{RsOyPQpLoHyC&V*uw z3`4G766A>8%Ww9*LD!C1ibzVDZsNh(#G;T7mI!vG+i zieVnJ>Qg@a7&8m(swtuGWKPI34YW&^&@A2S$uj{m9%SZe{*%WY-P>y>=tPU2UkQjy<@6_0ZTdPYhDY0Oni@W*JLDJ(<7_~;X35;2IOIX=uUHia zpj`S7rQPf7lJQ;;yZI%Vg}GTp!EB`!IXt>ZkAHOc#TKb6lfGixTv^>AAbv(C2^kjk zxg7Y2N%}<^b>(DxGV$3HPL)*Q?ix8YBvShN^pu0ogiIbfi`UmEm`beL__ECjuPQA% z=Ub$hkVwB~w98bWVSvoA*0t>+B@V<76d_f%h>!9)t<)_r~NUV71W2FK(mG zQZqnS^GC=s($j%sD>w+Og^bTXlkkZimmuj@J4$C}fe0z9hbnm6$4^P+*;sdGbXj1#Y>$xxTuZ4&s|R zJvlLR75{R5?foM8{j<6UtjW_g+ieIeO|w)nzldkm0W<Un$jKZl~%1mpM zyOg)h%S6*^Ew;X16s9D~N?Y2tVry{!QgaaaI2 z3wY?eg*9356}Y=`*=bi17(;bg@0@=n(_L+6bzY#BJ!iNqe(=5{hdE_&Z;#z^;|pPD zmi&9d=vnvoL3PwoX1#-2mn|->r(QEu6LpPe`Pf&{NP;{klL@%}w>rs%g50`3iO%d= zm~6LEnn|M6vOMEpNw&1{+l3?yBZ(I~kp?6~8;2bCl~8>4u_L zD-{|xTkL8!akRLV3!WnhBi|yG`8%{pEiz%A^{$oW@Nu)-)Qf3px3u)H2=QCbO#H8HQ3eHZ2G;ueW?O?hS@nRP8yh|1er*l ziq+k#=jS=Py(u%XOb?ZCA;w-OB)i!fR7)PHx<6Jk9u0r-KJIm@;y=5^y}l$yC@9%!)w%( zJi&|CNKONj@DCFQX^oX}JM}%C3pBP&XGIE^co42Q4h)Ztm5p&@+C6RhGdyU3&jZm1 zBg;ih!V+;sr;JTo-=Sx?9HKo$hP^tkA<*#q#Uno3o=rA5x(P{TU&=Ytz%2Zs%~; zvv_yKchXLBkVs313TQuDF?iA`qp_9>pG)H~kxV<$=@_GVc!cfa#e*P5GF;g61z+)W za#pWq@27^ymgUBx(A;d(T5(Wr9Q?>pixmQli5GnPcAS!ME6T@p^{ZcxQBt7ud7Di~ zrWXFvk?FF_-CFYAr8*aTe#lEa${5$}J?8Qsu{LflElUNjy4`|%AQKCC+Ys?EqvOQW zkwc~-Bj4%o{TwJ-k*TW2R3;`G1*0|Zxpt@ZK*Fb%rdw?DA`DsbH&NMng|i-(tG9&L zkJ0mG%+(TNoA)F)7_J}l+v9E!X-C0}AAmcBdu4b=$*nzD3~AZ^5!Yzh`Ku_n|L1YO zlvCV@@2Czn@7P}a^0x@QJAGeVch23VV6Rc#}KRQ_hy zBcUw;Py9JHLrw^8kxt(IM4J)1LK(Z>>Y?shub8Z_TJD{lc!2Pzpf?DO?yZ(wKC(c*qAE6jY zDS-o{zI-Bjo|jwHh?~Ka`Q&Np?C3-Wcc~Z9F5g?s=_Cu;ArrF z{s}B$NcK33nKXU-8Q$}TMe0wo8WU0Nmj!xa#WR^vD`W}dXay1mSRDoQy{B_O(>Ylp z>Ej#S(P<>Vk1;8$LbOjmJQyN;8b#mJj!ha1Ukt~2RxH}mJ*xp70Wb!51`LA_%R}=2 zao+LKviuw)A2c>ZSZs6cCb-@~igbjPR7mudoE}F560>voP=go=6#gQA)H>S5_%M1zoEleGE`si&}N6 zDsp{>Zgv?zNMRMwms;9jmq6erij`pDh`@TOthNvva{_5I2S6fJ;{IgH{o8E(NL!KZ zCgdKI0Jh{I>wPj#M^iziaDEg8*=U+MtJ1?)XKsgB?JvHih4j0HI?_vhw(c5L9FIb7 z*GS`*1P7MMHWVUy$2RosM6gNTuIYH&TWC3Xwg4)uwBY;6TkS80H2g^F>L3a%xUZfE z>O(`H!_Ga;7jUkr#{6uXF2?ov*A}#Akd+Mk$;0N~AMzCg-wUurzUBNVPfo8!6R-F> z{TtI}SjxG-4jVhHo$e=J3cf#j5PAa{(6iiw2FZe@*wk|VsN~)NZ? z9WmKxTPrMyDwOj}`Iak7gzV|49VURi=fu{3jAhzR`k5!}Lsy>su?N#`g^S;ZOwvr$ z`+Sj*D6~{UXR)_HFC9cIgadD7IanR9lF%`Ra^)9e*jlf>|4QYLb%1Fibm|@YC_da` zx;qn8+Ca{oc|x$#OD<#jwAyUA4V7$|T$!d&#`k0t-prei3GxG@O6?{;j5MN-Rd}KP zi!i!iQcUreCPFZ0G&K~*(n1dKq`z7n)fRCU45b7Y8NzVX`g_A<7l6(#w4ix!1nZK0i8{LI_)3Vm7Y=!?5~DOctr ziU&W4;`gH>y?=#IKk=OmpMFVgl%`+h^LFRZ6RXc1`@JH;7zRlwJmFPiCX$NAFMIum zBBlD0+M#4}br_N^-;P-a?Pif8u?kUe!$mtx$FXG5jQok;#SLYG%6)<(R&W?A#Ld;F z5XaA&<4fs2p(h(O3NkB@kPeSOEeX!3ASgtMfv*zpQ+OThTy$+$?Ks_=-#wDn-3Q~p zV0v9F50Os5+B55@{`JYb-F&7O@exoUw5J1JRMJe?>N_G!p)IS5_;tLyJiU|9Wvh_G z{jn%wh69>8j~z0SZd1jmlZl)Z1qmn^BTx9)+ zXKR4QESYkM{lol678@8o05y6U*~4!VA23VRB#Fr`?3sUuKIsaUr3{%V8>>{}Ij(Q~D5OzPf5K+!EA z`~D4wk!dPz!{YJKp#PD63}A3hH@fXV4F2w~Dm^}MjljaH;LM5j+QSZS^1HJkqu4Zk zckAz8bA-S`goUybG4Ek+h8ev>`7rUCYJ>sSI{+u-Euxp=2eJMiYxnU{;P-5h15=e{ z?bl%KR~$?WIFTarEse5Ncvt6$Y-z$w0wyIQB$(~m#Z1v=kWR_G7=R+R^rZ3h9;PE!U z+f95_6wu8;n*O?6Vk@Vth+OGj6`$zJmTm=9i2* z77M`rKK5s2=doa>Y!Vhk7`1@q!w>YdBMRIGir)tqUn+T#iVqa~Gq&C=RGTzD?QnbL zPEU>rdiJY+m*#26?Ns~3l%5u3WZ-6YnEVozSa|MQ=fLLOf|o0|AfXapj@MrfK6pl=G5Z{2yIFqnj@ zmfIb#cCdtDLh9|dsDz{G(}T68m3TEH)O8f4e)jJtKoQ!E%Kwgv&>pHeN{%lY z=#}&i#z(TKx)&XCBTFnqCo^1CvJ|S}$-cZc+HIptT+QtT0Zc*kg70dlwdWZ{ zEfmK{;!aG8?QZDHKWGV5GC-vyn{}_d;kZP%}5M!$oG3y&=ch7T*zc6*^ocm7%8YQO) z2ZAi{rqe-_wTO9OX>39quM2rXE<{rD`AtXjhyM;P7(krCdppI34bi4n(>Tnzr%wz0|3a*-w$yKD# z-@C*3h(Vp*#qyU-^paAtOi@(LMG^GCtct9C}9N~T;mr-J0 zqv{J8s~ zh$nW0@OAuP4JL$ye?QDW`GvRs=Z-eU-1+$@6k;!ZM#o1J@2zJ#Ru*DhSFfNE7{r8o zUswNEzETY&%R6FFqJbRi$##z(`xl(D=xP2vy&Tl^85h4V484jr)F5QMbi)JVzl*|B zxaH2Mfmnwj9*Cx-2!Yo?Q6ip}34y4*%iFtrm)az^msuTSK02^6hXFN8c%Uc`%i6@; zNYJ|OpZr1ZDNF;2Vs^PJ=HY)B&$PKJ#P+GTrzgip*<4rGlcbp~`Y@C?gk(um&@FF0 zw}sEs7W`%Eg0lFS?>h)2UN(4LZd0gwxd+QJy@iR+gq(c0N$&DI!OH#e<7)(*QhNEv z_h+*xXFFw9R?Sm_$1OlnoI9~c3U25$8_n@?!erg17)lQ)_^;}?kL4`sm6tp&u8GeW zxiC<~8=DU&9_>DSkW}$)vj6)Cu|GOy9D8MNAKcmW@@lGU2f|^L_!6wtgxbXT0!)n0 z&cXQR%%}xXiW_^3Q$a1vh|RpZwwla3xwqxrsZ|-Wj}tyr+)6Vs&7(04y6?P^?>nxY1JDT{6R32 z+sW@IVKV}k%kkx*><_fj63{=O1riIL(zVG==N*pMhoxxpU?{mRt4O>zaG?S?5!{;Ej{QX{`Wh|&I|I1N?v^*A#O%(w{nSDjs|I?pHJLV;(X<35IY zuA9s6skb(sck&PQ?oK0okw{U&bZqaS$F0L2R(}iPbjnS|Z4=$ohLra#dWPlAl^o|k z%IvXdmC^CpX{Wn8CY~7z$|5J#^Iuc*aHDN&fkM+n)6h{hJ?I%=pF{e+xh{H)4KB#Y zggrCK9i=4E8XdjJ($E1f#j5U4hBI3aTLOrBv{>+U+Pvs*m+Noe=@=2W`dgC634=v- zoVTAVM9nyClNR%FlN9A@rhz|DdM($^xj!gjuJ}a%{c9-XQU36r&qCo_K9jromH@Um z`}u&8DRrU($J0kWrX@Di1Ri*KsFd^-sc|(pR<%IYU8NU&bA2py?J4)KN;;?Cw!z1t zIQ=ath0v+CQG=5bTnI&KMTV3UE$YRQCD9rRv>BCFhSU}fnYRzj{Zi~?E7(P!2VGcZ z3pjkh&d4IF6>YmekTB=02H092O#D&cw4t1HeTvf}TarfU76ro%MbAfwqBl}0fw zCFvGunQ?Nn!vL_bka#^xzQ#L)#3Sr+psl#e{kMSDxJO;6>>@5b@Jv5}R2*CH6?)9c zK;1ZR_34)}@->uU!oZWt(ZtYaB0q8@Rkf_TDOWYghsl{D?SxLB+Jk*=JGx6FO5arA zTH-{jg+kI{T z?dcW4!?y8yhR%S28rw&wu={<8F)H)p%jB*7Efpf20EiFP@YAFPNhH&aeek z{XlOFT>~`ndjFM~b(^lb<9gdtR-0_P46`!bZj7F`OWpbd3i(%(QTXkS(rq|S>GYs{ z(@JivG=HehSWMnf?X)MwiywVOFGmM*8*)kBVIWbMSW<~&^f;1H$V|aB%t1nH02Y+rf$<+^4}|EMc2J8l`joy71t zlu29N_WLD-xyc;8dq?G0x?L{tK+@n7@Pl3a;0L&+?KI-lbq^ll6WBW9l1R`NSGKy` z)eFyUI4sUY>cj-`F%6cT$_51n-+t56wLS7tw3y3 z`Lyesh!<{pVQBQE@kVa;?+zvz$c{lEk^vsY$}(}pvn+Ljmmbf?3trWj-b@#=IhkHm zc?h{pW?pjiJe13(hY;atgXvJ-<_^Bj-r*XIn2yPXH;+ySi9~;GLJwg1b+Hy13J-Jp zEn!01l`YWt(5#VRe3|%0UR^R@RpFPdK9kX^6ha%V1$sh)o@K#Vh=Mwijx|U(N-oup z*QuUoaVB~&KxhfNZ~Ld%AXk7`^aYS74!me+d?7#T-Suxq)O-sh#O~IPGfgC%)4WW| zEwRoQNU2!uqFqnkZeY-@I!C*jU+`IFPLbONhEuSE&pOb57ES7iJqHK!O%3mfT(w)4 z(-3ud;BnBE1#Wed1sPKb;tQi(@t6qNVM&=#U=7z#x5YtM0xYD3HT;I}SIK`0+b(`( zq&4~Ox8n$TmGe=*gg%m7`5ZxqGhROJWxJw%)tm&--Hy|EgI#T09(bO^%HJI^J>`i7 ziKmh`nCnDNrha%@m&%+Z2nulef)QNlbvN+rbPc9p)0b&5)-_ z)c$gf-uKE!X*ltE&|%bz3C88ij!>EV zaOQCJ@8m%$g=92{u%Jg)$Bw{qN@~&aB^2=kj4u&CtLJu&!w={rUES=rdLHIvxW|x`qIj=# zWsd_t4#CZMI49D)m)fGJCygbqsOoihgM0fsPptX&^2vM)viaJW=;gUt*#6cY{tAu0 zP@di!!4rqO(|seK6XMd9ZK@Ai=eOjO_+pPg7bxOxKw91HeSYQw=aY_x{BA+Bh~?3F<{l#lB7C;R_TX8ReI=CVJc|K;MUktP{6RK?((UF_WooANy1x+w86=r6RurS( z=wZsfJ}CpbGefB~uqfF_MOqXzwwm3K6d?5PKYv#Gz(zBnwn5}?Y`2Tt)pWh#ce^p~ zQ+*zDda-zfi=|Nu$uV7tIiT-qUfoavEIdOV@|Tq-9RmFKvZDXoWr-b@&U%J*t!App7HMelNx zWibgHy#suZ+;QVSj7RxMm8-J%i;84<+Wb{nN1SA5ra#(8{-ROb&-I*SUDP~0d|a-w zRv*g2IrtrnRMsD|L7Z&V2}<$o+iBC9mAh~B`121RxH+gNB$doudA~b3o!0}{KEUca zR=>Cy{cEz+e zwLr`SAq7j&EG^^Nq8UBfo{VZgZ@t-d5WBgkJOYC$arPq0;>SSW*1q!EOa^x3zvv}s zwtP|7(6IhQ>}?iK5)F*&Z44(a8EywjS3)AO^9O#Le50qd8IMUmrUts4JW8Q~jkpEf zv!vr|K1!|~5WtD1Mh~2?gh3`bQazC4(1qD9$3`n}0eMTUwddH^etASM{gO5{Ah!a0 znjV2AqtQSMqhX+dc|eo9a;FJ~hXKH#foVjwG04;7=P)l(x?h|tMWV=%K&@#vhsj~c zQbFOPWf}g_RKdymU$TDt-JSWhUd`>xw900qkex% z!_!qJ4$d--VJ8$Gk!>Ad$455?*oYvv30!{mtN!9g{YgSSuVOfBPUEIr4QWo{p8ex3r)|+c5bdTSal<9}c47@*Jdia%BD)zOW%?I?%%m z>^^sPfL_=r;7nn~La1x2>!|#!YRFPq0dpV4-(?#+1W_7nxnk0AVR)o-;6AfLnMqfP zhN}|+okZ|hWDx_*!_wm)TM9(S4Q>s|GaMgQW55sj=F` zTiIc~Bzrt&5NOR~EixM0QF%Ign8Z02%3COR@)!7LmD!&g%fn=iCDZERb{Rq8WM&xu zoyM~Nps~_o=;o;3PsR#0$Ke|A_dX70UjwMca6jE*#eh-ylywT5D_gr>dnVNa8Qlxh z%dl7SL7rAXBrI$Lj%uRaCp0XkDEA4CcqYg+nDN!FW**797Vt>XmSA@b0-tN1{FsjF zed*A8BYrRDFR*SU7N48<#$L=HelG=6?Jf9yfy(+Na{|t+KnyT~uQOnx`e^g&pfmD| zYxc20;k-d0M$44>W3%^Cv>2g^I+O-1{~ud#0TpG}whc=QlF}iaiV_2eLrQmu3f`1} zFr)|!At4}0r*t=(bJyRJ!zzH+yS%7(;pyvEAaA&>uy>|wv)B2q!+8gT4m_P7$AoZ;GA$=M=Z8<41_ z>uczsPoc~C=qoSqW-;fkU-5c4HegFefOxdSwPYi&+IfPXKEFL6Bi_wm2t}=VF-*jL^cQ&s!&=9 z(489{>E(w?NRYiP0iUYPd8Q#Zb*^t~cW%c+uHA#*2L!O303Ca}Vj{KI&N2I;va^EDh zX_%1s+Z$ZvibK@@c>=yZ00TxZLQV_xCuQpc_M=$kDIjK;QQ@UR9p~W_3I(tlR~aaz+x2st=SvNj%pl%7 zZNJ4s$W35WA{DM4eUtZ!yp00w6l=Gu>xavgdP5Q4N@B|(G(TZfajg^7od{l30$-`v zDGa`G>X<;Wd&xeA9Sz+ep=A(t!I8r7Uw7wB(UgZMNlKqQhaLjifHOxm8|iRo*bhp7 ztg^^+zR3IrjO>=2qKZdic`xan=#-mz>Q~^d_ogq7l_}%dV7Qz1`?d#^CcFtZ{gDlM zPm;s$j&1XA;6m;BzX|bn_dAedXOh|zR?`uH%vx7p*LkbVj*!d-*1xA;Z&kGAK9H-z zB6DQe=yYh($N*o8hNj@+DQkH1^Wnb9^fvOK`5G$k{xjJ`c6u(Ua<>O0o^r9Wfrx-qPrrA>*{cwo=T(J(%W-@dX4x*NYhK6bgG`+m-7iI=Tn-Rx3-xED)qu?-xLCei=vpzz1R&5#F<3)~JAFY|fY`Z(~2<%g&he62OugA+;2bL;b} zOX0cxh613y4=cU(4mmXIvsrHcKW9M0yVSg-F(0(m5T)$o@s;;7UhD0SaNOOvh|fpe zV+{nS@{Aix^bnXvoD?_vB#ije_6~M{fJS!$54uY=+PO}29pOmed zh>>DvPh?|l8K|D>@~x@sB&|z%va;6g^ntax1S&@n6|2FGsUf5XjBWu3!nKI#+;MTO^Q-_nK{jeM1f;S_DwLO@LcJai8TfZ{y z2vDVaBUDOs&RYE$J^^9!FZE<08Q4&)zG|Yg(j;W2Td+Exqv0LS6yXhMhPJKoi_6S| z_rnq%*-pB$Wy~MQK-=mdsfhPI_xK~me5=kuFUNY#w~rrBT5rtjJHLEU>v0bOdjvQ^ zmUa9k^Yz9kgn7JjN!ytq@F?mt>|DSDu-Xi%tgAfl3JFcB&MGrmYYLfBEN`~nm`SO( zWHE;5H!??Dyj!CoqmIL(^Eno&`QkOJ0M*ignjDU$*e?Z*(we>GmNMx+I)6o5eSzI^ ziP>p0QEAg1a=t#oz45c7K$7=v?4ZOe0SgK>qZa2J$S~|NvH5E6e#-Fwt1kC_cQf}*O_ z>&LD?D;0y_X47GfwOCpMoR3Q;G#XX05hG9O!c@Cog+&X?tqqKdEPXiCPpRLP zV^w?WQeGn^Y5tXpE-Ajgx{8oMsbcQaB^oh)dBTx;1}JnEGT`j2%v@YHnda(AwIJgZ zA9xOlF!)CcZzie?kpaCfHtN_*^$WGbPHDZ9mo7RfVX;fOEK%lS5C=U8?sh?pfPvu1;Omj!xPPmZE0-P{>aNm(j;A1-CWdn4GrGNh@6t5B&BL zez_SUfB=2`c_c!zQt{u_u?svbLhg|O9CCY+mSAd$l#Hjrqf+y9oC@l5QkVaj&6M2y z-JfV?0z3lsW~$^Okr9_tLd(Je+n-FEBj#F;eNRjY78)-%9kFXJX=GtuX2A2f9gmJf z?3Gv(pSkU1N<#cV%{mWfZ+NK)E2Kl0Z5F08+77E)2|&T4>%!5P2z(;h>DIB2$aVo* zs~<{Fq?BW|Q^cLI++O}-UwJE^9Vk1jQk&(pe$?x=^k?A!Zg=JaY!UG z{gx`30AJbuFfe)vTYc)?_Bv0srR8po%`#m&B;CdS3txgNE?2GotQaFd5T|$E%0t$8 zkm=ORkfbZf!$YB_hjzW+_6;ahK%uSxlWK6+xbHIYdmp$!Ru@a9hEJcOb~yOviY$l2 z!bHTLPVXReEAhl~0VyBZ`VD7`ik{Pr-UFPwhl`MFyZ_mif&VOmS|pBM7y5#s)di6z{JPJj`@HFEjj?SO%_a7N62yc~|T5{!Kat8IOrN z+u>#*o4&r}Y|=$r7Z%{*p#RT@OV|oDbvvPNSyfUp@JUJfI&^Qa^QQY7DIG=14#3o= zT6UT=!*((PN}k7uwD}V2#!04VB$_@N%Q`CI4(B(mW}-OpQ9@`{aNgRkc+S>`3D%~ziNH!eJOIa4SJ?s7>oo#LIcJzAw#0&Ey?gO zPB%fa@-w&^7aG-ku8K0=RiQWo`Ik~pHd3aAu}}kx21wacG)dB;oQhi?Ua#)av8Q~W zE0^B!ef&kNRJ){rVp8C@{m;3HyFrsxCPY;RQZR$Xk!u{nj70ns+o22y?)P)y_B$)7 zGZT5Z(-zBk^-kkKQ*Ggz(SQFJ+$JoIpHeS8#Dp>43M;aJhROM6td zMfh}n9rQ?w2^^=uJBLNmPb59uV3Z*KDZ*5&qd=W1heFmME!IOvaKCc6n9Clbqo+v0 z{JtgxsL6UHl=dhcji@I5YXOc0XMb;D)SHQ(_w6ldA>d>+QJ}E zso7%CU0ZjTmNQXw?dJ-u^Ukd8GbbTo{_AN$`B6c-w)o+-;@Ey2)&_KvipHAq4JE6~ z#+`8>`FNZxpc^8g;aO?#_`@9bC)UJWtyREIr#9c!Q@`i7*%8buTPs;I(4pNi6%Q*5 zH;f3wVfIy1w*`O?q_oRh9WebgA)w;$Q4Mp()2X)O5E^Uvba*mFFddomIkhURxFM6; zzBjY`p^izK55Ztm>ZR>cq{}g_)_g+|1!+v~`}G$W{c^`^d&4GR7ovrta#5DA0ILju z%dxrpr8ZXqEbs`rClnrc*0T4q#7nrQ9Sl+&+V@?Q5P0y6oFs0WHaXz*hStV8F+9b) zEu_uoSbh;dc=PSfAnDqNl!@%X4@o)NcLW^vyZiox+}CS1Kd|0X$7!ayCO_0}`A+Om zknfB(Z=FB+h%h`^_^HE={YuedF$3`_KkcuY6G@Cuzr=sodWs=Ks3-okfTj!q0&r5Y zTG_q78ku-8J}3F^^5L;z;~UYMlM$hAzB|kg6onfOrFbc=QIB~=v9^1PY#b#xM_j$HLE1MJz%9F6XEJyEl-mt5~Ps0S>B)c7}+W? z{Uhxrmxz0@42Lqw?#dY(zi=&EkDH%lCdV?|Hd~G9(dE{uQxm?wms9U*K&g4HUHn5m zt+DV}F0Y2{LOKg_WE;9pi_c5?tET8Mm5C$!P%XS9tvR~hKW@N9_Y$~anr2NI>(`#s zD;1+XIvnuBxv4k( z{mE&{x=4+zC*p9ny-MF*O*UdIU(ywR{pfoe)b_oC!Y7Xt8IqxVd~E&FjWDT5Rq6VA z({n*~rwl}@zqO14Or;Lcc`+N1`B&N4V6T0zrK5;7!;`agw@;zFM?uveAE-}^K9WMJ zwa^ZJxANNkH2C5AMBC4e@#0$Q>%fP@K&d=9>jz4K&Z%=|9!9P#Dn@L(ORA7kno5#l z&x&h$#K}i1{0d=c78$_ToRAwu8%38CPxSroM*e!QT?wi*7BM6Du1Jl+`x2%+E~;r( z>8e3%R5#h%DYFr!is`UBB=4x03J6VBAO90NK@rpHw;mD<^A%Q6;ko}-6Sc8ix0D*5 zgi*jTg1n9fl~Np@f#D9I?!p+Pnt)?>>wMC${W$D=|2rBIznN6dFB>7iC zJEgQ#UK;3o$$0~BZQl@Q;_HA;`L@}o|IG2R6;vL+FEL+k`t6oj4vbIk{8*lc9UQix%#c8s_y-K$JpLOwTtUBvXJ&t zW^C`-cb|K*?i7;w(E`tya_;o&IGrUFj+om?*jCxeII6E+;Gb2=f) zB+-$B8I5UiwxwD)rZFc?=ObQcF@TAoO5%vGqFvy)dhs9pI1o`~6=Vb%koN&*V}Q+h zY${pwYx6^2zVyqRB>thMZ1>c4|2+>|r&a;eMU`k-;%y6Z<;^5DI!jRl4d^|8!2Xn2 ziH;3i;h`V&r6JBPaA===q8?a_&S;bKMhMV-!jg4re=D6Whc!F^Oeg!T#r)`9&zmdW zMcf`9p_d8-et}*z_oY8X9nF-BFE>QI!sPyp!^m6N{Z<;z&d#S!r&gkqA2s=I{e`_( zWWN!lT5;?zM5~?+8FPB?qJVrP%&%JYD#xQZ7#8nil^&YaFRXhyIQE34bAsr>vri*b zx-Q7QMZtBq`O8mf*V6t3p5Oe47?`FvmS#v;39KW=G zZ!cG7vC{+Cr!TkZ&-=wCeh+YYl(Y>#CbPXg>mG08!RC_XY|ft~o%>OealUS$Id||U zp{F~)<(pGraBzN$mtZ+Q0kc)a4Cb?szKg_71YeVgTZsIBsjP=w%-6bas9cAd41VXo z$51dNq_IrO?`v_#j@M7YnlQ z8O06;enjWI_rPuCYVKM!w2$KzHt3J_;$j?ext|$&J1?tgWU=`7P~6g02`7!1(SC?i zfN=&5#W_LSCa4jnTOnL+Fsfltw2z(r=1IVEMfao<@oG_QIc=E|H7bpfR{h2IAgLjf zzhFzAPW&K-n26bF3 zj>VF^iivqJsPS@I?@Y0pz>abT?-ER4Z(uIZYx(vrFlb2+3aGC++&ALB^WDXul}6JF z+wRGFG@lpmGnuRJ_@JJPAYyYKk$azo2%GxvD)f@xZ2@c-l{Qd-_=+uc7UH)7L3tm* zJ!cJ2lLNW$v3}4(-f^IXd6d9U`AWrQF{20?>3F#=bMq*m{tO_995on0@mU$1C{J#- z(9Z@0d{KUT)Gsjp5^-Q+-wQ_m3*fb$Rw|MPr+!Gw5csClw)Q7TP*=w2Ejbe>_UM2k zW})=o&$#y&oeicE%S;6l_*xgO5n^#^OVmV2lPb_Xqo{siC-7FFQc)`?l{eF(^t4Jm z3s))i7%t8sc5R|bgPV+%WK<9?^O@sDek}60N%x^1q-jGGxe(9>L;&UeGGf z5OtUN(Wwjij||mBxg+0EY62&uoJ3j_%9s8J@d6-~!23Cwe^)@loI>Jo+3P4pWHS_< z$x)ax2pB;S?aBT+6DVXs7Mk_g-ERan7qj!T4AkTsedvT+l8^;|B;xKz|FsPW&5?o} z3K#&u@ZVoU_6`G{EatzpW%NG31C-^<24n-v$092BQE)oM{(V}AU%%pC5FZNJ`->*q zAN|Rjze;Cv{olW9CURO!iLE=6*yoQ35T?2Q+*;Y?ZKNG51$$|qGGMX~J|iXwocF&= zgRg3J5D`9B)5NWH@vcJpUy~`qj@n@B=P2hNLT_@d5n55D#W0}mV6&Z~`oYk~;qhn0 z-S1>sfT?Kp02v?^!Ob%{A`}vj48h{!6g~gYqiH4YsjPP;jME(SF@}<-THIxi5agwU z=Tt})^Op~AQXW{XozJqrKpjprBQ6mqhM&d$r>+LgGgDQ$mPr-zHMqZnUv!u{fUd`X zliW9x=jn&N=dVS^0aeiFAn4m4L8F60LXEcYO<)4NG{Y0DfIF4rPxK9jwc0qzWXL zDe(p)6Yd8y9aeC+lxm|SR*q@NV@ z5Z-}cJpH6@lT{8YY~;CV&ezj_Ox!iP`Ct-jm{`lsMyHFJ(F5vW%oGxzto!x= zJQ*NX>Uv1tAJ-A{O8cK_G%J$VTEZ4W&=r0#`cy5o*0*3$R__R4NB7d0K%k{o0A}I` zc8@0IbL-hSW=Ll=0AHCwV<(sgNg)78{WEk8J$w2kE#i}~8-Pz@NJRw z@|X-oKLhhbB%}Mr9=J&=MvtUhPt7!55-yE|>0e$+lMY&JuRpayeD!f8xI7u}OKxL@9B{qdxo(qJ zJIDGJO26w=uuOjgx4*dRCPU(ef)5vovBZ0t-D1aIJT(Xwef-4{JAn9 z1*0yKrHb_GKdO$7l~vJqt3A>UAKkPXP=_A+BJpnu)L?Y8Qf@oV2@(H%8~|iI*)XAJE)!gA}m7ylHZ+pqq#Pc`2h;1qv_ki>$}L z5H#wrh_{YM?X@j?BcP~&@#tv{QMc3OzKi`GKue;EA>iXx4eARxg=%UjWBSOJ;?l*L z;pth|Jw@scVZkv3*cVSg=eN=>4ln<87pOw|8-#{L-sjVQ>@j6g7|kw|w7jFR{JTRW`IpFI1Cl}9 zXUy)O{$E(2FU!D)JL}_m%nYc}AhPD4v=orU=6R|Bl;dd{=O8s*B)TsdStPS&a5ppM zWBtZ5*Cgk+dJ69zO8K^vNpA|M>({uD-^Fg_zsL(>@B7Jx??MKR`l<=f+k7=hR8snV z<(kgOnJupE*Iy$WE&e4{ z0_C9_&4;L&t}1dWzLWaWYfb%inJI%2i1=H*A?k)hH=K5xnFf!=udm7_o^Ywl{rVTe zj3HI-ewZ(0vwax7C9@vtEAD2sIq=~)ti=?xsH`YRr)Z>Y>Xo@lTbx@DK7)N?i)9*) zen}A+sOlf?#SnM{U?Ah549CR0{~O?xq)mC=5TgDTzp0{R(%{i$7HN4qFRNJVBLK4B zr%v)Vr_@XWCLdwKi42dvC9?^4^?g|gJjJ-7}vjj{5NszM(7fx!5 zAm*aroij-MAVf={*p)H-A~G>M8xpWYdM(MJKql2}sBr&c+V=Er)zHU0O8*u%W6}8P zizekv2~gDlhTRM%z=VtN5LaJ-k0H}gO7FH+Fw z5zR_gn)`43o6r~xZpxr4m{NH6p%`snBaB$tqz~*K{2^sB#|l&seu*40 zB?`?f zXn;(~JUNAfIljd-+Pw3x{^{jB+_?WHS3DoRBtJGDgB;fW{mo%)7G22MJZ(I?ShdQU zWw;dVL%`Pa1oBre#MS)~>9GVf_7JXQscig*6g`i)^9!XWL2`49$|R1!l_CEkOVMB1 zEbt>~mTl}`Ou{j99`bx{8!ERzWmg*xucRzS6hken4}iKz?V|#U-+6fbfq_{2ej2|f zVZ4B;P(x~{XsL7E5PLa#kfQ-uUYm;Q!NV(Wd;B(^>iv6cKgZ){S2FUk- zVRPEBU^qxRwUezt`}CSxaqotHJe_q0jcfmdBxCP$Pi-Qo6A}?R)3u9CIVB6f1twp|t=3LZ z%(V&*bPmFji!RNr;z&%k{KM!ZEJGeQz|Zz*jv9A8ZZk|OwRn}N0fPHknWTq!O0e$()GW>; zpiD(uw7Hwv>Jk4{VU82<%45;w(Z_7_@C{X z+=lGc`t-G8zr`)Z(ZRCDpg!w^j1g|ORE`#C_drYw_H)0*P|MESwT z(N`^b=*qdO%5FlhV%dJP2q7W{fRfseXF)eWrM6up=35t1k_=4~DWiJodeag2>H?=! z-y;4|hz3_hxuVQ)yZWTn-Ql~7X~)T<)k6=#pr6x{G!Kh+x09^KHoPkxt!)Fso@IjE z%&RfOKtH?rMG#u=I#Ar($G-SP>+S1o(jwdr4a$X*D;`# z+apr>;dt@9jt?VE$b7kDT)eS)$|~1?F@8sRn{80WeoUObB>n@JqRTu|u{fvGNWwKR zdW$y^sJMpr=(Tp%8CU)-v>xXd+e+O>|I=q*_~#$|pcc{6p64FGr`cdBV;~h$t{Zg1 zL4J1W(9`;%|I#`Vj{Rq)`-f9)R@I+*7o!fRskaFeO|GsTL%T|_==)sP3R=(+I31ffo<>A}UEB={}@ZtO_f%SB{K9HQr z-;MRg=L2H^3?)2sX2cp8Ibhnt1%77R(}pGIyQ1$V%q1yw-PSZsI+qJ(vwo=uf2vGM z49}V$p1%EqyvHmjmouMi<5LFN_+lY*{Z{(oa{QKRl{j~VnAX!gB8J0h)E%BgMxp}{ z7b=2=C-kE53DeJUjai$;VmKSL;RD6+_6h3!jj#>gZ|BTH1)UVi-3>`d@?gtThM!#4 z{=V1YGH3WF55!+ zY&edt|6-q+7*SN=t5j2tM6ntyFX~hzVcog?znJ!dR5bE!p2NiVjmN3CCAq&&xv<4o1|ZYALy4RjU2 zm@fu3aL>38&aPg=OptG`_#^65Qp&r*YO>j>h18;d3v3K>)nc!K0q$8wvU`-s5T&z_ z?o=@F9`(2e^!!Up9m>p%e9R9i?%M!~M0a~cskx}EYD8iO6Fsg~Kz!6YSMZ6qj5*&li0t@palwZRnD&SIR&69i z26BcQ9uOE166r6TbN{(d1ANP(+}@FVr(k!8lZeNlHZndrBU$(5i%%CbY>rTfWyo=Q zocx4{nu1c7sM}5VVk~J5H!`GllJ$iwy|Ni8f4pzI;n~4xQb6750d6G?jFRL*NjC3Z zl&MPSKN83gC-r!t@5-VQRME=U=pIHX)BzgWJ+>u4=(VWrGIy2VB^9OCr{B*qF@v^;xHkNXlvy;MSSK z$zslnh}la!Q{tTT2!-A{kLv0SBa(>gF{k1Iu2ru!@3O9JNYK z;cq_g7sC!CmxE)BD9#)OnSs;mGXcbsVoH{PAI~kzntS-TLKU;=c9VSylz-%r< zYrZ=3rJyxK^X?DHcdCFcoLc93l7ha#-1)Lt=bn3oy=siG%>LBRCH^-H!?VNVmdQm* z-s(dM@-vN8DT%kQ!NZZ&^DL4wh}&~((7c$=mI!$f=TGwwF}F|n!9*a0XnXvBE#7Yk z;BtT80$8!^0JY0+4RzRMygXWbSbp{`rMKu38#_3h2i9P~*^lV*xP>Mvxbb zsVBT^J6bw&$BKHVSr94U)gM-H&=P?{V5FakWSUgvBKMjKzVf zAH~lWqF`Q)`%ydElAQ0^Xd@2ykZ;-#3oE4tX?3)jzCaJ!%B&A5M;IfVVpmM${F`w zZPDqCB30meL+8Oo3yhK+oV|hB(ayz)-;`(Zz2wd*r+`bA0b^RfTht z)3uzobGX9mpXlsysA@K)#InvyN_G^?CEhcR} zFYB}a2wcD zG`QLJg{36H9U7)e$|nZJYOqf?J(Q*Agm>>*e%>k)V^#M?a6bB(4--le{zyn5^J0P9 znC;IlE!lmhF15a@+23wbcx`^Fy0S=PvYG@zx97*P54s;kA-(~65Or3Z{<2LVAZA0t zp>Y5ec^O@HRhJIIC4Y?Jg-GXMf#mh?PdKfCr=M2$yeXvelO9Zq{z{nZ)6E|sE-4|U zf3*AAmwi&>#0Rl377(o1|2tM|tWckaGXxRZ;@lpZx;4#ohOX25)XOZ3NuVviB~L8{ z8#(YDPj7x8K<#D9U>>BuSr{`=_M0Gv60?BGm}ms$9wj-@@no_+8hd3^Twn`adfTFN zw>8bt!3VO)1U+#Kn-(&eZkZ0&-}BB>Ac{D=9^`j%5oE!LzQ5R>1Y*3VxX zgiy9Em<97O8ATpIV|ui~G>fI29?6GtL)7wlxaI+&FIm5|HjY_JrwG3P5jN-X`VgK5+It-wN&= zpw^jMU}7n!5F7%ksNhIS-Z9Xf1(#CqTd->J{GC$}v3^OHBMA4Ho&gY$#5f?*6y`L>)q5HttY z?A!9Xlz{Xhan@=io!5onZ|$G@?O{_~7L(mb?UElE(S@SzVGvl zugGpzt3FBd-^{Jqkj~!i^>s2(H#?!WZXKw=EWm6MGTDSI;FcU-ziHN=JV1uLKU2{- zDD-{~O9x%=A4qv=tdo7oSjkpiWk7zbeO|s!n!loO$*DN3iVJT>2%@>(fZiD#UH**n zkgo{Fc5Eyw@yjiTvMeDd52-w`$TDeCr;*pOXhQS@V1NkL7hh*M90il26i2zLL#Pxq z$n`68inrXGdZKE3YW{Acy$`g7f6kw0`QtO-Q0ga1Ith?9r*v-2Xzg+q-afci2 zOtmxh+hxDdqylPe@Qu+qQV{O%><;5Um?DCLs8I#3BoATOaPr(=+_3 zBPZ-Xx)wl9p5F8jA%6R_N4TSxeQMM>MG6>D=3g^nMggFA@zuM2KNj)W*+`v|JF?Q! zQDHC6Rf7Rl5Rmp{ZyA=tXFDD}1Akon#t?2E=Y)_z1TqAgPAxb_68LyZz&Jz< zJV9|$mb}EQHcp?;5iNZX;x5!jn8sDa{SnYH>VN;+sP~^3q{$rqQ;|Hy*;SU-%Am}w z2hbmY?U5e{l6?3uZ|TLsG_>AMFry(8=`m-uQkR&^k{5lw_QXK9p+RYYdYR{mc5(U3 zkmv5I27~xBOKRf))U!G?tXKGpfS-06%Rmc1l|SIEq~&A8yt3<%zd2i*!-bTyBFLQ z&+owZt*?D4;bGq1E6?|faFW1fhD6^s@m=zm2p{f;m_NZB-7UqMmzJ-;r$ago^@{aO zzf%o6-1f16-fL4b`F69>rzyfG-5-y%qMv0^e@J+>StW@+5dRtBaw)%XtLVW7BMbJ! zwn(C-iv2@MMM_2?(F)N?y7DnWox7~1p$lZwj<^xf(tpOa9>R2Rh)p4fvwM2vA;&|W z-fvj57*O`{3-SwGBcv7@!aNm>sy%~`fOZA!Z6zPgH{A|j`wP6G+Ef`YFxr5@RVvmf zv*$uuBP{>{VLktf(3fA&&usz2@d#eaOsbktQ+_zhVcLe5`1h+*bBJ?L@xW3 zasEUpUn8}jT(mk9>$SZQj6Tmw=o(&?zCR%PxD3Moxf3zTAaZOT6`DnaIu3D$@4#_* zYT0?v>%ol7?I1h65b(D7oN||)`nT&(2fs}=%`Ye2iT!;>N0)i< zWC~PsbK9>ZOj%R79;f-^wWqUk5`{3g-t~`!cb*0JwE3$&A2oU=E4Qu@O>K$z8H3(e z<0=c@X|F-)5;7AK5#@GQNOO!GbTA+UTlJbF&VX%5LNEdmZ~NK%Mq%sQ5eS_K8+-;n zcEQIGXJc=s6-uxLi5EuiHTPME=e0fFD_LUS=z)>z2FT!4UeJ3HgwlNwJ$ugCQ~qiA z$sj|L0LgVgZX}E51{S9Lbu@Uc*{5|yS&u|KH!6d2LLYO)%(R0im0r#T3Lc8|qh!U& zbFCKBb|xBOnKdnW7_W0>Xr2&gQ?)C`UGz<>s^7@qF_sjN5P5$c@4B*m0^wwBBm?I5F|z!;gO z%1?zEpX@-4&SW1ZYb?gO0LLmh`Ti0_O&w z`!e~n^`}!Bdv_z{6@J`9XST2ZChAL-IrobJq1ylzfQoT4ze>S87QMJb@`^b^$)0qX zBd+3mJlNg#LY*I_|32m|qyg{}~?}#K`b&`_%Y4 zYmUnE`t|VBCKSPMk{}2)m7gCYRX)6%@)_HyeqDIG!At+8IFeB=`g>~Q+b@+bKALwO zI6k%^(iFt)G92l5JpX4ITt6K>)4txdV*QXENDyCv)Uyhlrj*G06TU|+*^s}|43Gfy z9_2qfi=>!e&iSD8MzG$nWb__SleO4pkcd&S;&XMs2GL|xMU%-{0YHSmpRfpo|0>8T z(7}!R3IW+2QbkfDeg=CJFU93s^Cvv>mOyrX=;G1}ZOUx8`be6i<0*>kF8iJ6e)K2n zsJCG{ln7c!KUz3{wY}SrnGRWhQ)X$Stb01^R@9?ie2!3V8?Z1ZSZ-jE3l;hBjp8_j zN3YI6Lm&n`NUp6Ws)Th`oMl_-XY7XlPDaJ(HU;I_lArto*L_T%* za10Diddz!gIdb%)POi>7Rbwt=ENHDurpMulSj`;gdhgGUo>Fl%!({zNNh6BKZ^G1O z1-Ezy-xM1qJA=DQjtSOM^u^EupXk?uwkhavHD?e=SHN^8L)bCuJ^uG=o*ruXdvCw3 z(}mFaF4YRfy&sO^{FS8dZ9L7$+=F`K|9OCr=lhPa zNbf-ucJd!F!RMu*=CdU(p+=VEpI#=}m06IIa5@$Pn2EguYVq!y9Y#Fi@UhQSO+v;Y z!uSN?&t--*9zY>>Ukl<(a~f$acegs2hB&$e3xD%0uP*v@256edO7Q;0hfuk_x5|4=R$^Er*UvJ0@d5^cZtG=e90fXzTe`5U($lID>9-`jNgN&qKeD6<{0bM(> z;0jJ_$K|B0uLw-p>?LKU(qLqpwLjup+-tVKuUT`AUn;;FJrb#XYz$vw8lv8|R)n<} zlj)hg9cNXMJdE6@+}3s8(MD*PVHuQ~Baf4u+n9~z!xI)Li4$WZvjDj>2PU)7OW6IB zO)c)c_z;zZgA)z@?~`ZXWEJr@b#)?DCXc>=2LH{SkGE=Cn@c%@K$}yvEp~9v>h*KB zPE7gS?McrDOfr!Ct6X{HVxA5mu_#=ybpDgTCGWD5t<* zY)!s?+SKI)T#*hxuZ&YGd=}AOX&e)gGgA0{?@_`6O(xaqI{n!39`1}~yODvNhF*M0AQGd zX%uT!XO3#`weOf)KP|Ty9QtwB3JNboo9G};!42-3sM_SUzf)Z)wzcjWBA+7qle|qT z3xYWarn7%(=RF&l5J(wx42hdRK(Tk&xGAmrYTjlaIO)L%0x96x^f`EBgcfuA96NyL z|F=^USYDZ@t}HsuRlIfm8*h>^-*i@&CT_zYB>op_e7}Vq78E>`%q$dMy0%6q;6Yh% z2?Q0|^Po8S^?~kK4`}UJ! zDUr1LNPZvsePU#YBZybO$%B8h2czEnUzu2W^ad^Bxlba>Nc^hmu&U6ktn19Q6wmco zud&nv)wwW}J{*QpTq`{Fk$(4$#9!+XxH_HqbWv}tl;B=U(k_2s+MLJcW1umJOmHkuQPc-eex$1PVZGy zp4D1URWWoV4Im#-5ee~`oV-xK6@Hp#?mSQRHm)}K^|`;AoF7d#CIwuM58uzWWYWH% z>=}zKjU0PUoJvu$EgM|!`bU1Mpn7xVL#U%XA?kE)a?Q( z<~0GBj}%B9$`@a#yhvTg3AT8@{eIWg_os?5cTs$}E124N411DAKioEV`W$xT-|B(w zn5dyfi}C(xRqvb9p$iY#h;qRO9v8l!2&QNj^wD>3xzZ;7uEuo0h-;?K>j*@qZwu*(&MP6&^{Fi4gS;G$$|`VmJCT! zmyuGs0ZF0L&NE{&OuLh(^w2Zxj(mrx{V4a{YIu>Gv%ld7(P&+r$XG$s7G%hrX?!t; zyxNmDRh?$;!1Pdt>`=vzCwYg4HXY*hm=shQQiUKz!=r+2p6cuXiigY`+m3mx89b%} z3{J|L@f>Qx22N+4C|0vR@?>k;Q<$!U!f8j$uDtcBa4Qchpq3MT{KFnd*jWz8>boc` z`Q%Rq4|--c8TB_w8}T9Q;OxAj=j&y4N6Fv+aOYawELCGA+8qWCZU5W4Ic^B%&oR!rq2Gmr?<0?Y zPRQWQ-%Z;lAMwU%uWXQ?>)ZcV&$G|9@O4h|Nkd|C=7590!F$P1pPLLI2vF?Dd(->rzyI^vu@OYiT|@C@Ui zeInNZ`x%F$UbVPo`teo8>SHmx4Nx@v=SAr1?my6EAFR|yMWomD#nsV8^Cq>y>?x5J zBJJBfuTcgH)WmgyZLn{3AlElp$9H|fuXI7j5EZZGxzUR`PArTVNfC}o)-04rsyD=6 zKqQ|l51N#J+x6JJoakanRJ>&ZmW;nnnX-Qrj1KqW!JqP?+@tn>6iQd?f}|nFv-o@~ zdmHjbxp=O|DkRWVfrRcA@eKTYDkZ^T{%ftRFO&N#gnq+~THouzXJh+4q+t4WKwDvh zJ(=04SdRlvx=k+@NA7Cyr?(G;#}(}1iwCNbd;-`~H4Wdz8pDsGa55ke+YPTlFz+Vd z_k<@HRZ!9Z{fVi|^{hW4&JdOP@HzC|jf@`%Lmh?}IpF0$=1tD~>2KeJAiTJfRt16E zegk3`xAtsODY(fCl_F>=Kj&n$KKN?7yEWr*CsOH$m9W)w{2wYS=_H>(#%=#t! znv7J&X0}Y-nbvbpA;mzg^JXw%ER4rtKXZR4R*YGRlTm=ge@C3eTv^JSJ9MbMj>OsG)tBJDz0hByeVaeOC<`NZZ}tH=r)R)I4;o%&U~nn+;x~9M z3aPRlUJdxmJUTYUA`tdGT}@#kH_=!<3>Oleyp{NoI*taNpC>u-h`p1CF)N-D^jj^?F#oXlPB zF2B*;(6!K!QStC->r~YR%36Q$&Zs1z!-kSRvxLZy#v$r+gPv{gz9JZ?s5f4lm&cfk zppIGszRoAa)W3xB^EzsMhJ@Y*d%n3rF*2kDdmd$m);tC0+PiDyH(%>aiea+*G1%kr z4A<-Oe2TT@T4q=~NRN=v>(6Wj7vz&m{j&6wFB@su7J?>|yT@XhvAwbr#Yxd$fq(`N}jbWq-&-BkJyb1Ub^fCm3kNkGc06 zV8+ZLb;VrN9qW}fV769{3~!Xy&@F1*674)qrpvkr4*|w2@5?UFt6!dUqHwA?HshAH zv|9l&mP>hwi+wPAOZ(3lAs#N}VF>lp{hRC6zq5p{7QV_r=#0zaGd`PtGBTj zPjyL>yRcAw&i?cVkPj~SJE(J>(I)IEg=zrcBq8>&A`gAeW zE(G@#5&Yc+W6xmON3U%s!*(Y%p0J`eW3i5NvuT?1Z@FZ*A11THPFBB<7ox24SVrmX zGx`M6lPxi_r08J(2wJL~6u1ox;o-1*(}pN4w#i>$^x>|p6JysNiKRkc2?aiFzY~)u zl8=(wlf=kZpze44y$Elz$3L@AyX1dx^tYa3+K`EY`x4nMUa2gY4_}_O1?7K1&@+X3 zbYN!OkZ=<15qArtTC6< zf^!FDRnUg=P2(+ z4K)+D#Mhr4a3zz-C9`?qAIdi?A9e85fKkx`zu*}5T6_$P+Gq4uN`eOd0hiVvjLTSH z74WMs)-PU2$LfxNFUxKf_$+9&hdHB(&~=I>osNA3*C;`Z5H!6C|Q;|?f!oDK9bUW@`dmD z9iMk|USROfD=8E35PUZE*jpx(JaL{rbN{hU%ugZEA!)gOmC9H%jb z0xWUc&7l_rE3;T*(HEHw09d3WL(hE(oeB8!CTQ%^=LHz`05C8``{x2E1jmpZIKqEY zTvGg}Y2p;nPU-iW80k;u>K{LTdig@?R7LlXgNf_>_IxnjFH@Xvrz4q{(Q>~AJ22Rb zwU^$vI@mS}x&=kQqqq7Ifua2f> zFKJe(4{GbYd06wD1w;8C#{|aw7;CM=!_)%eVeSVc^CmP`dXbpUQ0G;1QJtRwK}KA{NtjV~n;^fyJ#vS(ME@$5ZkcJE(21|6@rmI(#P& zst6Q2(=MH7>wP%zE2ajrM^eB;yx!M*IdBEh$>DllHUg;~XgQWApTIFrKqi(t@vIYj zIlDpja5Nclk@4|b;R*?FIa#`^r|JLg!xyQmQ-QdX&hiG^GP)Ez0}cX3PGFg@F5fM5$^d?+^BgFl6nBwv zBG_%Z1!;l$`n~S2WGe9;1%~jr)PCxM31V%UC zLC6_u(7kg^K4n`Rs=OY}#l3ZJ2y*AM)a41KJO+1H$C#sdoEohu9~~t%lbN3BM=%qw z$@P!daXYivP!?s!u)GxEJwDTNs#i!1E05bTH2hq-U+zPxjopurj~|=k5?>noDF?tmx@~>(IL@DHa~ot302LnGMb23*be4 z&anKhiB<5x`!aG(siA59;aOlHfUdbohGv~tf;MYd&@Bvs7)=Gq4+(Z~LZkIKTM97C z^9I#GWi4u>^MlD2ei$!nK~s}VJbE8?$~lX(B2Uk%Pu4X#eB-9rrwYL)`@Ic)XNLY3 zKS(|cgU#5bZ8;_GO#({yqp;2^lIlu#ISY}Y(7MaAthn%u@3;I8UcWb`KclBVF{ZqD z-C-Tn7Jm8jq`Q1p5B)+Mc0ohB;0GXz%J9utR91_~dbE~@Ro|e#>G+NkC$ojs2*za3 z2^RMuz|Oe2kz+qcgSvu757S%K;E0#R*^cXIsLaTkZZk-gWb*OzroL!jsI0P)r zZdBkx;$w4se}hU+vHHj`=US)scTr%pxa~Sl6M1DvcLya2J0ej^YVD}KU+-v&5UdNP zt`F%s$8`zwpJeGw47^F66?Mt8H6xx@;}N=vojBGthqi~t{@(U2&H6y~@qH*TC?u~( zH=Rd!j02m1;}@zssY7QkZ)G?6T?Wnx$rcV6j|!I)T(K?o0bd$+FdHLBJ-!bccXaVP z{7m}k%RN$!@>vdaPO79J^;{aFbAc7PM;KnAfF?cI&=f~IGT|vM;m2~O+4F^{LO?q7 z5Z~8A+;>UfDG&-od3c?-?^K7!XbQ>X8lM>@q4ddS{As+u8=4nN6^=Urvfc?VKnh^ zNgUSKk&Uta@QBFhmx{~4eHqsE;<4&V-&ZHfd?=oyB92m?$pX~F4@9<29%rT6PG1H$ zD6zxdxG}*ja(q4p%dwGcx$Va7*|YH!?)FqoaT&WFpe}wJ9!MLcPSr0t2)d~J6rZmB zv9xi^b-PWMSdI~s6~EeH%6GL0zX0U(&a?C-W~7WCW|3b7GcUui@-G?P3LYPckRFRbouzaxW9I{XoX0!ywG{{_~4Efx75s|EzX-&Y_5@ zC`on2)quYjfDIwu)>x+gvB;Pnr;aDe(CTh|iEKEW3nfer)ibu@`$O$jeHD zob@qR&aBeb>f&X+Yf2YcR`5FNz4?=+-`k6uzh7h3M7`s^rPBnJt?x+lh^^|ni1Z`; zy>5f&rcPK20Wj_f2UOl763^9Sy3v;`dgbTdliJm}&v$&xonN-|k%!R=%(n269&=6j z=N;vh&qj_@`@-Lz2CR!)ihy)cK=`4lCIFDh8Oe)~xZ|%;4pzP*m44SRxX5AQV}%H^ zxN(Oq&FZF%j|Ji6-74*G%68#IYny(X>y)=cJ32YpjCOAWn2dneGZsMCT^e+i`rCFg z&np|uBz(_wa#B=KpN;j66S3`!yv3_*u2Jsma7;9_CtjK4uhb=Zu&)e{OAXA2-rOIZ z8(#s|yP%2>gAi?3(|nOgeq?;Nz4M)VYUlX~=+Cuirz6OW<&PV2DBILRY^;KzZNK~8 ztw63pIY>O7R1e}fx^4jB7Hp9rLFb+|M+lfdfF`u6_ac-h(2x5NtEuk4Ot@ddS!WF%awpnpk7F~jzd}SAUQ0O^YZufISa8hq z_bU-Bm}2t!nr!W5C7=1x-a%r%PkH*_R*%3(5h${|r`~JodFzl03dw+M;%6jOTp+FA&<|7VFP7{*GS}~GBaoy?uCsV` z=kADzw1>9#BJ1J;&oUiK5sErZ-pfD8$10*$Gz|1MXzeu{&Z(QWGsRwM4?>nwS^g}h zj<(T6O?Z3<1vMb$gn4D*776=tHMO-4s5eu`$4td?&DO7n!)iatJc4ueh>8JsJ6IKI zbV2cnx@ySouPF1VsEnW4NnOhq>mR9q-j~i$d=^%|lW1lTY0E(+2tJ3Z56=yVB_zH2 zaM+7wROckui7THC4R46ic!nENV7)}F0mhlX;60{ZY5tx=I^GfW{%WK7as!-v z-v|7T4uZo-W9jaXEsgg`-OF2_xtP7UJodjlF!S3Dz6J86e_Fu~7H?fKsBJ!@Wujre z5PJ7DgAcYBm+#ibIvs87F*#lO?(?tP+frH3!){jOP#et$?f1~949JM+UOI<*?`9K_ zt*r@Td!T$8{d&tJwh?P#DCQBrm~-Bx=}Y){JLjsvbYB-A?c$DbRgUlS+4T0zu_fo~ zN8&UgM`mZTP?LHuPQF5ivBu>Z2BY1Q&0if1+=lrJ(S9r{M()fG8=Jm^!&RQ=m{)_{ z9v`Z5_5JjDxid#r%OnK~ytd2J+?lg{k4>i{f27?D&2iAs-kSitLE}DB9Z;oUH11d!!)&Ojyb z_G41;JJj0QQramqQS$zGpdtsT)E5_(7H5@iJ0#Ks-Sf1YF*vq8!BfLre&BQRA*zV; zt(if>y9`Hq5J~6~7QqCfslt=b&O+a$RdZqV7nQz|MfdyAosc&gqEL)g_5RezX0Kt0 zI+}qCwGLngC}6bXP|C+7qFp}aO16b^8eUJ%2bP2%Zk!O|httKs?#63ejD z;vv`0EOENlcWMs|g$qvz=fC{?HRgNNMiNKGIEJjpkY+=bJB>IU26sKfYeD`=b8EN8 zFn!pT%gM`u9p+0q(o9!-btrjidlW=%dt0%%)urBF&@ojpR0H)7di9d8bpW6< z1A#I1ro=18433Ulz*;o81>^*!mupH=GfkH7v+ja8+L6O(heLES_LlDfQ$4 z(4&s(;dVi8JEhAPs%+qOr(lryMqWg)JOaVt=jzoB_>3baSfJnQebrC%JDW^zZ+EtL zC>|D(wP&x8E8jMhxv{{@B~Z1S;H-s}0YF5;P?*bhN06*Zv30@bbD9 zVcsGdz}vzl=_ivVBJQ@WxN6Tfa{}VvYyH|gU-;OEr)!}`F3N5MKD1y?4i5{k0iwr) zx0P!8qNR~Ncg6OttXAgeACHu`SkIxLu7_fblZW+f%LLNFoJ9QC*+b4}#NfeAac=`h zbN#xF@K>|$WDcvQrGJ*h+JF+h!}tbMj!;Sxv65?RUX6BBmo4E`ds-Gx$)!cg52~w= z5eTWyd(DI07CyF!db(Um-iIPjj(NL8dC5A;LPlAIZ$5fW6cF;jAUX*3fo$Y!@^X=A z&^cp~I8Vz>g^71Gd?svz#ErwZF>Ps@{s0}`zdwCh1@NOVqW)At4Hpm+8NP(3s9^K1RozzYf77*#h7J!yX77 zaPSfid=6f-(8YQJq+xlZ(dnWALwfkz5nI|JX1`4qM7Y{%I#A)}f^HGokXD>CK;$|0UIf%m(L z8c*l+_YQGYaF&5+lPWaMKlCb7a9~n;7;^JwSOltEiGs!i7JMjIA7|awTUzgZl7%Un zGJ7>oHV8}%aK^Tq6z1X}a^CkUnC#|p$j8B4$$_7HF$;}Yzn+Pl=Ry})6@)26@b*#3 z{+td^>meg39wzwBU-DA8L_OO;X$$UibpM3VPBhhULzdLOp|ZlCU-^WaIYNCNFzi}v zecFdE9TV{-c-TQ~Pdc(0ZI(LZM&Mr~csp3X3Mv>X7JpC&hk9-%0?0Om!J{+`ao}4* zO_ay06VZM>1rhRG>{=l`~$mS4lf!C1% z^d4O}!Z+zx3ZbkR@)XkQJNhTv{E3)sf*@-~krgSEmqBb_4zlZ97MU`6;QE?F_hcxU zOg7sAPj<^02r@9kc@3LLKXY|01sOO0dj-L6{S6IT?gVzef^u#wcRl$PIAwF*38fse98LRSLkxPu*9hmWS+MWy`q znd!R_!Gc^&*0(kYZSf2Pao-1qoD;+Pt10nP<5L2L2G9JeUahj2psRy7@-Q~mKkUwV zJJDN!-jmj?n3Xko-a`AAl|pa{4JKp z^S5)$vdtqaFn$TAe+@bmR#qEv-hTen4RU<&HWj_cV#bgrx)r*W2a!cCa+ugOVMSw3 z5|6#)y&8A( ztNIPK&;OoA4G9uZa@J{Rs3?&>)6okudP9hm@!qIr>RL%lPYrDO@L}zwd|ws8`q*wS zAs?jjb4}q4(5t;#AEy4}85gn)mpXrdm1X?vVLUZmnPOhH3>{TY(Mlgu%3}1Vepqbz z`m5Jk0ueUOA8*ok5%MPBq`^6PTg?F49XM+1)ja$v-5gI(T>Q$xqEoj?6D{G`1BH#K+@J5a$&I;;aO%N zV*Ov%{nS_c6@wNY@-{EPBhVzl5E@G)j#tOv`F+q*fd**kc<(+R_>g)>V6(sG9olyx zI!Er~?BH$^L8wmA-$kUT_spMUPz{*jc9}dTF6;w*om{a3y!0f3%+IwfDja+Ad*tAq+7^7!9v0DAA1Hz zZAfMH@olmP(rWffv587z7HmT({^XfoM>k_FhzTbhr(T`>e#1fT5FzlEt{@BQO*VGF z#!b9FEFMLC8!0H0uoAF{AH+8CW($o)4@0bf>zx}g80*i+3(A>!n#|H5J(R(EMcc`? z6Cd;3eg(dVxH;GlxgW-?C?DJewKn>D;JwnD!&dtJzI3wI!;U0fsOjNDA6K9n;u&`U zF#@Dv82nvg!Ghc=`7GM&wMxe-aG)q4K+jja3=>2(y8 z^y&|749K7{x<{)0ruk^8j*^5n-X1Ru=yn9+n^;sVc1L?~0S?P>l5+|K0f{4zP6+PW z+cESIGE&gwUlQDH{!T=2MN9rY>a5t903M{2*|xOf{h8utC-3fG_FB{vd^#fa98v5*EUdE!K=Qi zYJHVoAE{RR0;hwzSGC=hI%VDu_m-|pY=`d;hs^T}-Tnsg&(jW(;p$+Npwq@?Klg{S z7qHxm)XKiqtm3hdWygzI1#WI0!^ET?QSg2<(rgy-FDAnQD7v>5`Zx;OW4!8X#J=#` ze3d^__pU$2V;jKVseqq6^Ha~tvr z3}xVmHzvyA!9rl-q@6G3W8YEFRz)Im!+1@ctvwZ^yyUEb3y5>TW=6M#g3Vwc(UoG^gEkvT#|ZMPzK{WbaU`OXT{w6BLUqQ(WvcQiY>|>Kisz6d zk~+-rbQy?Kz@Jx!FR>~)il?3Mr)E5*dQC z)-6U#m+mKw+j{k*|KFdl4tssk#Vy`#P1=52-&kGlJjW^ohY&xu{@NN1JLzKLOBb=p z*52v>A~4YBZa3IqC;U(K9_);OnGkG$T9II`Yz zh_LDNiPfbVt_DlXbTc?g-X}5IL3RjZDu*u*+O(Hsfm|fDGn!T4`9$LfFnHgbl!oKf zX`h@kcJ33JdB{!95S;M4P0$#p>=P*c34RMXNp^9Ns^!XC!_M}v_9ErI2P3XwEpR+9CXVA@ z(aVc)Z^)(KINkoH5~1^rVgVm>S$ZK_@sbG_=Qa0WG>))GSJ#V&=cJ4vDJsPlcvRaT zaz8Nn$#2|<*tul0jn15_^xXI??w%%I&y4&awXsh5EF7igdSvUgrK-^nY85|q)iC_O z#(mz!U>CEdst|^)G;1!{+;I}9^)>XboCZ<%rN%Gh6}Fb5Ssm^dz8$FMo0NrN({S%Z zR-c$u=J~`pg^z4?djIq|<{|3KxcEL`TFXrS9+@t0D8TJ^yB${ED1jRI#_x>Ti@nX8J*=AbN+Mons z^;+03VW*SNd$NHU9LxfS)nnCK;DM&8Gv2K}H#r3HrA>LzqA`cZ14C0|Lp-l>1fOx8 zB;8?iPo>Mxo;5d$FD27r7_HLM{<2^>>9x zfP1ZPgYCO;dfmxbxo)(BkhuxBsy#ZN5u8Fr4Slv=rB4X#7gn3bz^m(m#<>cFwk0I6! zu$y+TA0Tu;6QgYVtMTC3O5^ewVr3{XmL6rQf=Z`IiF?_2`8RmX=|u1j+~<|Y{zHs6 z1m}+9B*`P7QF(PkZUq}vk!TyaLtA||ph7c$6bcIOnW)u|- z`Nqon)bQBFLY#RQ|K=709R%szT!$TN5uKYjRZn8XZ(6sPm0$6-g7&}?*wq{+s?SYd z-q28mS+-3MzPhe2F!Ok(_9TF*uJ5acVF@UB?Bh`wJzdsPVr$U}75FghFxu1QRvcKa z$6+0U0}Uw=aKBDimyV>@eEe^V{H}CT88#vSd%1XYar$UR#j<^E+aH2+@=T48^R83QGy!mynqP1zw0i%`GZ`RP3aBwrxNi$ zf7sHpm>P}-QflbPRnn?Azs(;Z&p+9q(wcWmN~Vs(kLe-sdmQ(~+RSqv`8r9q1jTHV+;39zxTOON$O058TmUz3IfLXAvLszknV`QUm3v^cKG%{rv_GVD> zeH_tj5;MBSG7s9rb>iA&{;JlIQHjIdScSA4F1GtGhNgg{%|l5RIND5Vf$;t9H~H)S zI_c?TXa!anL$ipgDvws=`P}@X9pr&nU%$Wu#L`K;CFj4D2g8S=!B?4gx80jP6T3Y(ztC$0D z34y2v9STSt-eWj(CAe-y-7b*&k`0Y_fzS*EzvJhIW_s-oLT;)+R_tyd3UVvNVS=l5 zqKYOgaatjyEUWl_yR}}6{J&Yb*NE}@OezUgO5@Myf$%&R-1Yz3!Bqw7tp`MUzXw8z z#D|>8*X`nxSFGCelk*-9Lx6r-)0tK19A#K5Bv~hIyDXk&H0iA+1zfT@2HJpk3+87J<_Wi_2cYESq229(bxo_;2^@Mxtfk>T;2pX~JWP<;>_MXP9MpdX z421rEJb7q$=ZAwyL^IROX4ez0Pu|Zkn!e|T+;Af|G5eEyd!r&stysc^bY@@w^K8dJ ziJK;TH0l=-BU^Z1nP5gc6P99KhpgGdi}!72os+*uBH)4Ofzi?L>>nFGnkrcDb8kNX z`jYl@t(TIJ6v%<=`=#(=_Ur8SZ_4~$d#yTxhcVzf(09+F7qqL0&PyQACH@6pitQXz zflC`<7=qq=euPx*<@#?&L5%wxzXyyJ|32L9AF8h?95A7*rh9qR_9|NGYlOY%4zNYY zG;zv(%!)yZNwskk^D45az;_EQF%70JRO1n$@#?9O@#^L8L_*}!3ZUJPJM{#H=#SQ7 zJ}*gPkT)V6GT&7|6NAH$?YnkBaBgyq=9E`f5BqlBWlJm54|^2OJ9@Wfdp9mj|6%o= zd#xCwLDUz)t?qbL!yx?@2W#ymWS3rS2t3X&YIJ8x-&R!un>@Ip%bQkwjz%Ed=(HV3&%WlniqM*dBx|Hud0E>Od^E~&7 zFSX(7#iuMpfd`=n<<^y7#}4s3(?nq7h&VUZR*y>Z50!imj%|bX)Z${(hxV7Q_#_h% zTNG$M@(`I#M&t|p7@#?$9&%Ug@a>G;N4?eSYaSUTR179m2M(z&bolFE*@T$!%$C2mk7<3cR|37vVAmZz>qU!bd5y8M)nk3V zHq#C=EP+~OrZk!y)b9qASgGIC$sCQYh?l{9$ZWjeO^iISwFbzgQUDYD&#%s~^YkX5 zlAnNv{psZ4lfkFOANb-c(ab8ExCLS`bbt7z4A>*DUm#Q+X=N|K5m^D=CH8iSbfm?# z97*Wyizb%;9YIG^0}T4$7uKUA&xzgJCZo`hg*+^`3j9;_OXz?7Q#}hbAB}EH@V%)| zy@lM{Yyf_o^A7Z0V+*M|q4%#1eBe6($p*lxzJvXB{jixo;9<{_DW-I9TLIHN|5{t2 zVQ26gAa*P zW02{k7oOmO{_i>_rxLE6Q3yo|i89=cMXlgKR2O)Hj5v`h1KdUpep4^2_K|NiGUkD% zqLD-QdWP^jbi;Zux?TZl)87}M`2==4SZ>{a>$gPK3+#a9_Q4xyv^?is^{e5O@*dAj zzoUuOf%EZSlQU+p#ALnb)$Jwo!Jd!_<3AyLV~ zC7zWp2QWDY@PWll-I)Nm)Sf9FF9P=HB@Hhp;}^ky?;=2b<51E+Yr0N20OL0RW|}F( zEUV(xp*DP{ha;N0gMAk(dhWBfzIr)DcDhmE6$N~M|EsH&F&Mq>YUxr#5Q;YA38JDv zOGwHLt8o1j>U&Nm;ANk*j_Ay@>%ToaCvObK^vd4f*{*e~;ARz(xRYC3QXyKH73A}+ z8hs5J1$O0K=Z=(Mc8ui)g5x&V-`%15>KJAac75co|KRtVz3~_KeHV?!&~6OvPSNaP zuov7`L2CVHND87eb)8s8yJ|O4Q*xcMADm+#EBXhgO5n>lxODm;d#p3{EJUeB>+db9 z_)j}mIg*8yNr=utcJu@Y@a_Xe9TOv>vt3{X2**eJxW8}wM!w<-4fEdwVR@SA4nMzm z`^$6_%b4q&{U}TlzR}3RUE(~Rft_r=aU=l(i9w|H(WbbL`@(1^pST?Bla4M>jE}(i zC;fNVBF^x{nyr@K_d;+SwdYs_Us^l|X=69;{V3pTxJQksJi@`lzf(X1?!ybU-RE0t z-F%;@!d{dZxaU>3`YGQ)FU|E2+P(cXR%-NOf+j3Ux8l5^$Y;LeeTgTnI*hG16@Px* z1|a$<5QCnGYKiFV0Y088S72D@!R$vi9GkStM8AQyC2@{rh>cGlTqbR}18*iJLXlWQ zjpw=Jj*J{vQPyzs1M9*b_5d*kk)00FS0^>4vy}|q%;xxoX|+p1faP8E!tm`W5NPz< zV4ieOeM&1(@ z!O>p#M^#c32&Ye%*?D_7g!(H}a1G4oeiwC`fiNE|&!@gh!?gXToR#wRoQyMX=^T&K zYFV>L!jD2t35n`TxyVqzKg1`@l8=GC%UpM=xEP1P+b4+bPzrdVRV;>c`rK)wnzHX7 ztQ3uxQr@KE7>dRkoMTyZPXglBGH@W+mtz`DT!Ajcwxy2aF2~+*QW_}hkdofr?Y&aa zhPmH=#DSN6LnFiG)iL?v3sFhs-mb5n=cY>IxvvLYoTJ(PK~Pz)Dxw=_q>m8NqNtE$s4=5 zcD@A_$2yq!*qmJamvEg4J2u&G2$H0t_rt+a%>Djd7EvL|bHJkmmn=bh*w>xRW&{+N z4)M-kYi#@OYb*S**z|l{QE0QG`xAoHMh|GVoCR;dh9gGa3>f8`p5M4>)!P)vmRo-c zQQtUMquSfJb+Llzev8^XC3s>%@$y@?G$;8N$N=fVyjJitwP#c(&0w(oMlBaVh9gK( zj7*tF1b?IgqT#HrT4JA@V)YlL=02|cq)Or*6WA;N<3#_L#@HQf0l9ISk}$WwZ{KSI z)zy3Ku;)7xwm07H9TK$6Uj~04?DP$>0l|1X1wo~9-IrXl1%?+%C^Zj8y^v0DjDSfoSi7n=&$1%e=%Y{iEk9jw!0ZnVmVi2z9pi#H|jTO=3yr>Fb>AFFbp z4e-{Y4`tNPFMR8LX}x0@rU7|i6dt@4IFQ&kF&xRu+O?VmM?RHNcbGfN6Vd}mrmJjT z^n)2%WJFqep{6-FYL)@;DE@FE&B}^0$h2GOpVAA|-7Pd`dtbz#i+L}vj}%gTS2hem zHA=chZ=Ynhn<^Rk|4eqFRPZ;DkIoXg$cL6TiKtrRfhsT`6A4+SIS0Bg@a{+nEbov| z;y`|R0?S?E4MMfdD=;oZq)Ef6VnGEJ(qT1sk0oDAh)G#{QH9W49X~jzw0~chVJiZ4 zyI6$-DU*f>osGvML&_Z9!3vL?pcR(?Q0_H9WcdmVoNIynA%R5C+>!660M!!=^zHtx+SIVBPg2?4{tD1=SiAmmrjTNOASCbE^qwLzI) zSNp5H3>+wEhNLYXC9Z>(_h)?z8%IrTPxyqD7qSjXmKiYjlLQ&q91X-e!w_%4=*x^H zW8a8v8_=LFZc(_yRzti6ViKDhJa431OT(&nesMkvQw4XK9)z#z&0XAx$-<*FHMPRU zD<-$I<){l|Dv}U%ZxuRZ)9jz|4FkT2Up{k6>WS$lt1*xs(@Mh~r12@o8tcQp>* z>+7&ZIcLJ(a>^QIC=WyamV)t((T(3FaZ}@iDEp%JjGR-icMvsFMrLDw{eTL2KwI)*qKujZhbBAlSN#WV5>nQG7f%x&5YT&fbz9t7 zUS|}=T^#pBT|xTAA`{M*_ z`z?r197?SIWPu~U^g{^agkBdalh0D)7Owi~--pbu}fpd!_Taem=Aw(7wtc zq)eq!u@)-&FMcVQu;U_I1AxzdK25kuGxspT4h)*0*fiaREm|`DeN(~y zxOfI9CRY7yW`v{6ppHC6v;(QljIwfW77bRA>w^7m&JN(%p3h9XY}ru$?RhK|IR*26 zNqDyyOs_EJ^MyN%>%n@T>1XZm1_J|x@-6Ql&1@sN`Z^2I77H9vcbTM{n$Qw%b<{o&baqs$GwpVytA>Wb_7J-sE`|y z3j#lRCvlCawtl~xNZoo39ykn0?>WU}wE{c=s%j-mlLiumfO~Xw7`&o&|7-rTcht;f z9jqsR;ry2PEa^B>|sgpuJ#jL1=DUp4r4HM z_RXZlKyKQeKCIXF$~}*xIY4Wj=->|^O&*Y@n@u)&QSbjD)6Rw_P(r|@ChmKw^Q4$h zff%@wsCw84Fpa3SXx8;;l0irs;G)#PRDuhi?SE(2p((w-H9?I>gwVwxxp!1np=Wpx zMfJFZwtH3I#W=|<+>?Aj8B73I4Y$SM+7K$fwdhFUe9)}?{?mv) zen-()ZF?6C2tao*)sEKd?TvvOB_?&RsR#Bq$H2jf zazLz*(8gB&ptdxY7#Y)vNnQJN0p^<;NcI+Zab2tb2nQ0}Lf9oYovhVr5sLy#i`jN<}Wl)s}h$ll9}ORs%$KmDu4YeeYd_x&X**Ncdb zJ&NUur1wBK4@`8?Z(DLZ)hNOYhqNooAOBfQdz&ppXPqbi($2@$f-urg4*Ns;K z%9j5h3C!OLN(GB&z(bV>?U9GJ2x?Zh=6e*`1Z~w zLueslzKy@i%vY?%8&=F@R|b{bJ@g=c6N!!f_T{pPgsA`!GX;I82gHm~NNvO(?1c+J zvx6a&Ah~KapHJ162$onqCk#SgI-li26A)|9J2z{ZBw>L-MGa)-t0&zD2Hxn{Qt(%U zFLnSNJ317NdliEf)JArz#C~HfaInSPf4uX9Xs228kHa@F{`uy_{Ad_JIyK{cgY9H$ z9M}Lo{Gjh?vw&W-C%pc3VF5m(HKaC$vw)hZMEvFQnaOa9q=GhJgyT-vqW_WPM5=bh zJKnc@7WE?i#OZmEDLt%l;4&hHe;_F_D$JoMs(PDQGDk3Ahdkui1mx_PRD({nn@?S4 zU5)6HNp~Q1{QN}DQ}8Bfkqs(wCqABjzkK_doqZ&*otHOr+*YmK2mQenZ1sLciSbso zcWf1lQQhaw{nG{C%F(Z+H3BZPwqo8LM>_)rT+kP(6R1a1zz9W&=pq<}S)rY9rGUc{`?%jjVxP!U(h%$)O?09oDvm5=b|yM1Q>U^3A~Ai6OWipFH_Y4O>h2h+(6>8y(%l)Pwu2%lL1fn)B+jqZCrZw~t&3i^SDnuu0_a_i@b zRkWt625lJlU(*d&_&3S;h5iZVtNjF+dl%h9^ww*Fc5;F;1Hfkad;l9oZ|l!*WH!Zf z58)H#i*wnzg-a{}U1?w{_ZOS?7$7PLO#a46i-9bjE_;GRVPs*nGJcjQ@wi?*53a1! zr9N%|R9A7L055Lxb6Xs-@GGAIC^gpWmO-Q$8(2Dw{(#=%rwzE*>h!nYnBBmWG4hFq zdnkJOGKLhmG--2hGSeHtf@61qo6++W2d0L=)U7+tV$$jy;lv0#Cu5c~ivE7@*;^G9 z^Rqi|)cK&FR_S5u0967JRpJd^SnQZ*praFhd9gCR+g1Bzk<;30na!9;2Y<0p7lq?Y zUR^X}Naj-kL<%k*|A-XCa#0GfMImS1JZPgCU|Z4cykf(_upVe7gF*P0<-L)VYLqGW zCIxiAp!E^%04_Fg(A>Mt%HKOJig(G|4S5n`?lO_?-H){Wp!V~8iEWPBnFbdrD4awW zmtw|pcA)y{)=?8#Geh#6l4R|C_~iqlSq`um*!^z@4DeN?0W_s*ae!t+483S3>ks1c zFJn3%h+L(; zpv$?uWJ0v!APX89wRyS!Ng3|Z41^!a2t_^Q$XVkrg^{rk^sCVg;N8K?=A4%&BtRdk{AzCf`GxL;%b)EV6{3`E_5u`#lVidlG?p za$5^+YBxJl%ImV_28S>)&QIzR_J1hEa z$~syK(Y42_PCR+m-Wi?7b%tqHPrOUcNvj#nDEPdXk=rJKhlHL@DORa4gm(-1)fTP5 z?=LX{!yTM5n)n>2>4_eFrJ>#jr%Z$lZyzruUchiC=e=_KF-DIIhNqsRP}+MXzy6>4OT3zu^X z|Mky~*c`uc>kJJRa1N0rV1Zhe1;(aA$Y}bFIE&8~1o7QgQdIn2GwE zksKgd*ofSSq^=q;tM@!HX#WU(zdYwY=J-v3I^KI=035OCGHjY*yM7K zIZVtm7j>y~7lF40w7Qy^4WZW2sNQjU(6RqRe*$$e7%iC+a9>gY6>e710g-{TzZG=7 z5u@?Y3JZyjExjpRi8%dD5X0Za@p4Pi(tn+Je}8NY>FRQz_}OgfH92pVrsLF?N4CW8CHSK!{=lz*yv4v(evt_ zpb3hmHO+ht_+0bLoOxEf+@EfyE`WHp=KCjU2e?JlMX@a`LJzPoB1{tVpvu_Ac88Jt zKER&H+hZe|UKftI2X1(JBdgU`N7GlE3mecrJmbM{ZWCd~Et3giN6KW--$Mc+*f&xs zo$g zRh|{s{Ar64h!P%daqQv>kpq=k7L)?E=mfUHx~JU+eKP;Q7jFa0&8gfJ@|o*#5bzEE zuTBI$7f4;$&{^Y&4o%AKJiT#;k;5Hj8F+M!Zpw{1KSys`$8&_u(uXg*56;dYx$$$5 z#rf}fwGO>khzwH#O^AO?wY8O1gT4onLP2+!a{YkmjSXu61Zm@wrVHpRMjIQR zu;Uc~1$L*?df$4*d&#Tcx9H0g!8_IzeejL++q#*q=dqdJ^y+)^{=2|!o%$3XUvPkB zO%WVJ^8V;{jZ1|fIypX-w8s*}=rkNLzf}n${?VB#*8M~4E8j2#C@v^)a)D4ETyxRm zM``H2j}|+z`S90T*~*C^WKf#*wV|wai#*zci_-9$$yjHv3s6M#~u0 zdO-eK+^o%`kO?i84*l&Ik1_z_g904zkghaVCYh_>98YSh1?hQO7V9$h$3dc*`APqz z{R4l8{lMiS+0%x&#~UE!wEj)Q!;8f}X;TEQD2W`RQ zs&=v%Pz3=Q64_oxrjmhlP{dC_fo^0&T~+2xm0-Eko_0k35JU8;*$4mALaZP?V{#~8 zPBk!Z&6uU7Kfs-RGV-!lQ^dI5ZzCh^MdcU*uke64oHBKZ{PTkN;u=llRWLC0f=&0O zL};3LhC_XzDBMP9YBoO7!4{Bl!L}UT)>)XvtFKjme$b0aFmQH%T4f^ku&aWnz++%_w zBz#;~{#JbmF_uFpW>%cw-1+|_04WwZ>tFMmRekyLk>u6RoZb@=Ul!Q1^|w2;#`Rtd z72OhGj*}g5@WBK$@`7wYAT$sYeD3XQ89R_o9!3ko3h~mHZ5_Wh6lTJZ+8=9lpGsZ; z4Ie*tw{7ibUJdwL?m!SiL*d?*if)R_eF2ozb9vw~Sg3pg^|wr!~i=dbIy3=Fw3$V?LayynE$2Q^1kcDL5nVrBYtsXz&J*en>a>I z{HgoVVVylNE#Vj-zdB2>@{2#P?5RpSMyy9Sn5pUcy*{iZpAnXZ0;d4<;O?NIq$Nvw zKsixi)M=|d%B(&mUX+9k@a5pxmJ}})x{4B6)y;xXUdEu|mbbQwi>tk_tj`gODHNby z`ln*#28u*bMT6HDkVJT0|3gqL?vnfvU{@I;BMsuh$nzq%!qMQ$@!!tT#rKkJACe&c zELbj8T1!8tXhE9-CqD>Cc$Oi#u7+l~5_&Pl=JFtQBj4y=?+`QV-eba`Hq(q z&@{`yBcDI5{fzE!K{cYPj&6Th*NL05f!0OukWE0W5{EEbN*IQH;fRdI zFwkc zde(ZK5IYys6juW#5Xb{iRu2z=vtYq;w?T3scx+-qLHeEh5c-7yv@$N>v;w;w) zx4G3wBty;4qdt}h0<724fI5rnmiCub&Hly{m-m1o3uFR3P$NVrCNQPYOTR|l&QYB| z3APdjQ2DD>PNX0UEq30tC$%kJ*vgeSePzwF^DOB9L)KTuH5vB*q6jEbibzN)3Ia+v za)flJ2&j}GFp!qfAR-L|X(UFcq|)6Dqf;7z(cN{f>GPcPKj(aW)0AziqHZx!%~8`N+q0~ZOp zG%O@0s4#J#UGlBc+E}D!oz{G~Wp#ol#WmlNa}W>Ci1QY#v5d;;@l}jMu$O5`}O~IUS5H zn5iT#ql#HPl4z0?WH4Nn{1hW8KZ@T}Hfk;^rRz9I&%wf6bAt{`>ThZ9j0h=Ge?8uW zV-^6L@S)gcRLxpF-)rtYl(!V_f5gfWAp4L=9@8BXrJ@2Vm%2@$w%>e(eF^w9qi`Kl z!@y{r^*1V5@`HPFT%KG5QKx@LJba6vC1>h?oN+AieRE3+wU9|J46U4Eg4M^e(Fy!X9l(5H#^v%uY9+xxle?8tsHmg6Kk zeYv)^-Vb7YTS<4rzoPt#n|t!6>Sbksy<_t$kNXXxIuTf(*EZwCfsv zs(<%ZP7-9Zwx90v@f|N8e`N^+q5_%X4ZveueNtS)SK!Qunf92=C>MaX#B7fCCy%$p z(jf2Rqf5bGZnkSF0R`ooNY`wiB55<_+_z=?PX$}zft**~&2NAXm24rp0R%RC;VS(x zw@{Y?_H?ayJ3tJ%F|l@3Sk4cT1LQPPq4%#3_|4qwpTbna?yiybCU)f zRG5Mp)AO)00T6Pb*XYk&HU&<< z^Da&I`c+ikC@KlN-W0~BS7m!VmMtm=eil@v{(_mFCFk`xaTY!D3W8_oftu&p$6Lqc zJkOqh+^>AWbcLxMROG;}w;8nmx9bIYU73aXul{5YwreIiw)YFcFH^|cJ}Of~UkO;v z?aFTI8(`JT{lm+wD#cF}8)?cI{`lV3^wNIgw1-KFXML=uF3AuiO$&46w!bdnAD1E) z><&H-fP{3c4rBN=>7GtrY?sxjc<7@$C-P-?lS*B;2hS3i0i}$P7NgS zJ{%%XIZNJi^u_!bm+ypif0OP0rws&1PT**`rC7{w<@(7Zg=z>C>;{dWnN-e9k6)x^ z6;J#DDB^oLKui1v7~jAA>e*@_PM-o2FLDej^%#ew`v>>d>Ps$LRNMnzcYn#R46m@b zjZtoD1R{b%K8nAaK0rbW@2aYbFg4l(ap4{<2OP;X2_{4AUlb`2HP$7|>Cy*5LN3IM zWXjUwoO%BR&)6Jpe`hDQ>%GoZy>+MTGFQcbp=RRUEEFp((ECx=&Aiw zg75o!GHrqCBc@XV4!qQNVp^Vio6~wZGW+jS;Y*zdQl!E%@spmRzbaFlll82tQ{(&- z4FLyBo>c?f_O~7(8%{wTn(dvumeF$y%*96*ilWXDx;4xje=QHIRHcs+>$YPoRQO!mf9e~QhH44cXn`1vK&Q~)oIV}H8^k;~gPLReMn3McdgbzLpZy8~ z;D1c%9s^W0NBkdJL@BsSLLc9`#+(LW1g(6`P1yYf8C~jU9QH52X8|;C#`iPto9mb| zmleEoM(W!m#H3^sNIL zzRwnjMV-cvjLZAKYgTtUZA(!bxUU@tq8`+cc9SwR!l2=k7ddh5ELUKdMZJs zv1(apeg6Klw`5e269bnjwFahd)wU~uqB!NB#l}S~iX~EtwFmdg%(g4lvrw>2nXV2~PPp}Dh9j&QKEvZ@7wQU0u;B5jYZar12u?N3_t+M}(<4PnE>JotL zMCyPLT>1i-X<0C3Vgth1P;lj{`*7O;gQPV8V-{nMc_RI7ct!Xg3C~-{f-kc&%-Tx( zD+n+8Bo4QM7~beS(U(|3BohEIsHV>vAm02Yd5(;PiAkdK`+{44OnHZs96shc2MvNY zxX+8Xp7AKG*!R(_LU*{J1%@Io7BSMm#53){CEy|BcoRDda|u0nk>R>T;!y5g!8==D zD9C$NsON2QcI1HJ65vltEt}x6^CtRru1YrC>7eJX=St%F8YUxtX9UyYQG>BzA9+bI zdXDD0!WKrgJ06s+oAS9ht)V>c_VMwZSd9OqLjtUN88I}~&@~N`0la4a20+Zq>3Pm? zNdKPMU?i0FtV2{KcpiQ?`Q#j0nde1=77d9Yp#RDgER3`PyfN*&cX6?Q-Bj0Lzds}D3|#Y3gkhL#tErJ^*kQ*!e(*DaREYNpfAZo9waN;Am57AbV=WMp8*+L zlQT(aaZ;xUQS75E_+p}M3$(W*iSOF@DO|dtLcYh&0Oe9Zz+@(9gPwx;{L$pcB%t1G zc>BIZxOYt178EdQ`UsK;h#c1W1^c<{h0%!pcQ39c>b34uL{U&i=RYE-=KwiP24wYb zI4#I-G29f3iS1qkK0oQaGfr#6h2hb(=k4g~yf5s-MbY$EYz7e=j4Z;ekOGCN4x^SI z2V0iY*O;i_mNON~i70x?9uH4xRk&>QX#F0*jdaUE8Gc>gdTD)w`@8i;J3hf12JoV3 z_d4Z!bP5SB+SQ62X7uf#*t~RnTfoA~de2|#CXh``!nE=*VBiQ&MG){Tm6)1;Y)S?y zt0qAC{7wOUwq4fxJ{fdj{mvuBLP_5?{1^sy4fN@X}1zLb$)%C!o8Und1+c2@yXg$2V8xSin z=MlKwZYGy=i?kx%28#0D+s4_1WDR(@p4thlN6+{b>xNKxcE z2J%7f8K7GDA^}BT`6Kt!W-YcfVCuy;;`5UUx=Dy`KL35x-ptDaVTiZ{;Ewh@PYk%j zQyvpWgO*{aENA-5K&j zz1|1fI=<2Z(1)b`%CCSlf8Aw`U5b2t@RVN@ntVEh-}veiYUki^q_cE{%tKC0vpsbVM8&P{^DetA z4do2E6|7`eS8nZX)_9BG%e~{g1@VRNW{0SD{$a|}7vqyvMb=TvTj-&-(IfML zQEdB9mS3tJpC0@s@>i&I&bw3ijE$4j+xM=TkH$K`*T+GWRjv{=l^ML{Ld)6!k5i{^ z%t*77ot2I5Ur_nq>j11daHPVtQ^`lUrzL+cqX~F=rQGzIE9eVxs0;*4900)-gOy7wq zorI-f_L{U~l^@E?h~@4)JR;f&$#pjEC}kGoaVe7WMG2LuC{=aXFD=fcdTWZdx*m!`%Y*X5cfIJ+*kVQ$ zE9zgW`Up9Pj4j=#g|`TZD0JtWk??tzmHsGI9ipd`ryhqSUf$aL z9vg<^ru*1qG2{;iz}2RFT22(}f9WHf=f4+V3u-C5yiiXISqoCT!nLAj*lH7b}a0 z)3|MP|IY+(4S_#Jk4@5T8~evD=sE~DyFujQ6n{9?o$+;NP&px6{nd1A0Enj1M@C1D zb`?Ye8nR~d4lPa~D&;KlHvrTD0*e(PwDqkY*Le@@jHVR11OXKRWcgWhAKlewU%bX) zW2@6tpCwC!D1nJ`GR^nYtzfel{vYGDs|Rh8D?b0Zhi8@<_h=rM8A%oM+u*i^`3;5y zSsn{kv(>fvPhmHVf~eQ>+}Ufz1s5pMF;Ny(dv4yhh^!fO4w$hP~iR?pHI?=3{v=rIV_^ z=NuZTDx%_SW-H}p2|mCGTE-~dB1xn_z*546M1dGd!;e!RM)S#6?;K7}ds>NmhqZO9 z&1vinrRzWu0a)#MkqmZt)KFCroz~{Pcz$3j9zFsr=UWRo?Ef|3@iE2_UuN0PSvl*OV|yMBMYaYH)g}i_+SFU#{|66|N5kD0|ngfk6%XS1+`k|HFLDxk#p- zkUPJMg-x8~*2cE|Gp!92@jx~I@g0~1Kf#AHZbB& zC&Ro~r=xX5v@gz&>aN7sc-Z~a1)m9039HC`JOvI3kuNWIzLh=L+Fz%6cIut^2sbT* z@D#XO9|E1NlP2PqgS>pjN!I7QwI_;*I=d=WgfA4n?tHx6Pj|U3?GALvtP^HKtk1zW zPRURVpTpD!7EL)XcbK$t-&8CCQurm%Ya_2N>O^%&XD%_kUEB#l)dy*nI9mYuC+nrh zHsT)+V(rk)1swIXP=*h0`mEP0cT;Zu<~;7kEWW?<`oG_HUp;n6qt3O=^6WYhcUM^g zied;Gq<>EyB6rL{QN4T8>GrhC6*gDxPLLJi!An_ZL5HpBn$H(fSABlL$m?bw*Jhi` zodiFLWTHgv?4my(7A5KvP*YKljOgB5NY>PKF&p@kVkvZ5yw*pV-@7b)Rz;)zsSM} zWXg#_2h-%_uJ}ZLnH87-=!#S*%5}p`FOkQMk*X`Iz`S}dVc&7~YjZ0h$%omb*$t9U zdFf^;MD_ZPh6p~dy06i%KU(s%V(bOn*ZpDII@B_>^Q(@d5uyANvCni$uO|d8F@zSr zk%ZkNw&IQ#Vehd>g6v)ty50omQEX80N+gwELVE0op}RKOhhOFy5EkK54^*F~ zO{<1ZEw`0MH;7JR_Yb~Q5PhO~j8v7CQ%QVNmxSrjG3b!oAV>{5lCfq!-M<~W*&<(1 zJ+~SvIF%BV)0Rr)c-f*k)tWl>q_8bvwZ`x4Vi8y-V2r2tXL=V_21*2|3TkP;D6Ndw z%k6~%6qD;j!}}c+p_q7L&K5ONwU1yT*a>U5Lt0X7Uye|s_im9U@fo;v$yX5X;H^Ng zNUw!c%kD(CO3A6nKn|v2A~k}&R5P_}2cR~ftB{2fdh{@JrF+`#Y>xN*BAl+cZ0o7L zohTRWH|iuxV8)Oa(&Dx|wDNuIhU06`BA*qZgiWEdl%3PKjYa2g3RaI}a-!*xKhI62 zjSIz1#>8PN8CXK{LrlqhvM^m2p;-@S)}++WBBbN?=zHitb_b=0 zgOnv`gb>`PHsC|)>TZqkMirl{Bh)hh(r&!VVePY)q^pgG0R!P$KF`mp7_;73aycVL zDk#uA#AR5w+4lR%q%^8scOrbc5a#2zI(f_(y7T9}9G7|U|$ zm~2|uh>+&t=ouNS#*EXJ8!(egfmkmY(um4<^(O5Nra|QP@f!)Lx3LHk(pMr^C3{~X zyNOR8E5vq>QDRRoQy`NI=D+7vx-t~q@p%BeGYt{^P8k>=8Lgjjz0nf8F1D=5 z!VP4MHrEEmaO{xA`oQD!mG4Ugb>znLZiN8*bdCO~`t2oZU~Eezy>> zlxW>m!OCAZTU>xH9EAq)%&xFJ5CbA>Gap`jz`bA?`u+oy0UNgez|@w8i{#dANZbJK z@?`B^jMCJj=J(VAm)&#TyjJdgoKLBjC^$?^YSD=*T;IUU2#P{J>;}@`GKmMynD0I{ zG`3i-nXRCHbw#h$Ebb%;eS{MUQXC77HDVQ1tI#U%HxZtm^tuOIVEXwVgXf+0$e*2} z9BNtZv%A?Td_g#*=QMFgfUCk{C&}3nHAra}&gd(IrLB`e(5IE6xq6OjOM^IridS_n zW?!UdTX1*r{tDA^uz8URkulnRj9GBLn8_ifO#G?eg(A%~18%>=)(gQ&&kZ=vwaQLk zeAl5n^1aBR`z|F8F7a3{y95ykO_jI!^*)7Xv1>Pw4{f$9pC{UjHKzRd@gubDF`hgz zG4fbl#w4vtnTA%Xhc8Oio2TZ9b2@6vwVS5oU_N+)Wy>}J6>`dNm7`ayA1Ge5sD&al zA5OzXZBL`@`V`V2I?fWw^9noptHs^x+vTDRznJ8p40t&hO7o3T6ExuH0%Y`{@1L(- ze&Sr#eqbCXPJd`pQPB?n8n*p=Tk~HH&G{HdNWYan8fjokE|Vx2>Og*@NrJ=%zN!_2 z-J4!^z*G!%YSZ(KPeukQ!3NaEs~}nhRn}cjbcEA={tuaJz)--l?&xjI&T9_+49>si z=&heYUo0mPYCu}_nrp%JK%S1hk;k_Qwkt+eh(i1PPl#hyLLBfRC}je&Q`}(OV)2YG`>2&VC<32 z#L3!e@pElX1yj!KUsAybllR^Abg#~yAf3Poc_PegLH_J5lkrf7g^>~pcCJ-Ubef;{ z`CV(q;%zQ$?@Yyir*dh9_h74H0wK`f!iFANe+Ml0;Yl;+EQv4_RqHB%Z_+x(wp@+o=+HROawNhxQGd|Kqz`2 z+sD!BsOmqL1}1_9h+Kx-TAg3B4~OvnE~w-hyJty|R9hyuJ*}D3L(k7_!+IB1D+;c= z9Oq5H9cl_98^)pbf!nrFPi=lrlV<}lXZ~>9mM>3Y{X3@HF*CIVxXKt#KZCN8YKVn0 z&CRFQk`TWA7J_?!?~w=>Q*rc9o+4)V$$hKOdvR1;Y7W`8^50}4Bg^GR1T|I^zRh|S zEwk74|D=O{OZ=gFGjKD009c|p-Ms=BS2RI=qH;f_t)BPCSJ3c^BvdX1$EfIM0Nlj{ z^@X)qi(rR-%tYjE3Si0HB zt1V+o!0~#;%f{`c4Pqi%eq?M+P=nAJarwnG%oacMfIvw`jxI7PW+4!cdquLS1Z*L| zf=+wU;T9WTr~HW~4Fj3}OP^5!3supm(H4hRBX1Y0dm#4TQKaNZ=Y03_e7TN(rTbhm zXP?`-fNL^J%!7g>;qN*76qAY}v25IsU2xe|3u~rMrDk{+#w4kpPY+#FuPD z+dKsJ;M{*opq#n5%s(a1uo(hR_n%yeiPNlB{|QI;us$1L_MoB|141f*Yf_ zDl3-q%7)_TkfZ}nUnZ207Bb?+^|X1S8wg@KtRSudwj&TpGs)O^P;+H-#2^Yg{?lux z0(98)$o`Fc8sr6$r17naPn72D26=derdlyec3hZ~*|-sbskMj?*@w>3XIfVR&2u-G zn^Z^_iP%BP#mDXDViF3ih1Yw=BX*&r1yioXH`-{S3nIYq4|Et!(2yuaIF)9eKGjY95ciVa;8daA!LybX2zN1>w z3>9DJwOUtmN-QHoN#w30^x$w#iiY~e1h7nfS4J4ed-84_;e>fwwwaqTraNMI9>(;B zJlA@*J7&afKpFs6gf1a^n(48yAfqG$D2AJgIX!L#EGI*eds9`_UvD|i+TgJAbw8&l za9-nV{!tj9Nz&u6k1%hO3xz? z{k(epQ1VkMgo49n^<4gdH(%GPc|;!b^tT#eh03I*gROQuxCV_86|3Xh4J<#1Qw0g} z2SK&YU#@+hANrwGRA7Z5+RB>J5F*R9=XyqB_indCk0IX^QxHVZ_Q>c{;HrU$2|cMj z&hBPXUb-T_TS&@c&_YZjm7P9TyINsC3+2Ydv&m&*YUoI|7T;EQX+NdiD{f6FHnIN6>hlA_GLgxsyon)U z4g#SAO{<4b6oX^9-JfVjxDegPmRcqQ7~cc}>Tj6CZF%>31>&Cbd%#Vw>$|2k5aabH z+2wGP_#4e}edq%otLP)P<`l~*jYbK)-=J~@|HTByZQ^*NKGWwFq$Rh;rdKz9{BRnN z{atCk_~`oq(r*&b!Q*LI&LNGYfxESY+}jq9z=P2oV(K>IbiPUTTDmW|3oV6VI>X8R z*rbC}@6QHSilWfyZnsvosB(vv^u-@mOs^}JMS6AJ>J4633{Xy*NE9NhoUoE)RxK6x zqtKDgHoD0hT5v{AyK-+OphnRh>1jPyy+Xjk+q6^vJ864t-wjWho&z5VD%4ZDubA7Y z1)TI(1p>EtDV!#sdPJ!45pt@@uB4K*F8X#kj3+RBZEp{WVR~14lN3PdJyBy}sBWD? z>Ug77fxUw!=lwvu=1@4UbD%%b{Q=4l^4>I5en@*-&L|bHIa`o?_xgwc3#XAuOM*B^ zxNgAjYbF;zLfW_~NcNSF-4>^AtZOiPT0xE*LI{-%sc4@YP1K-Kemg%stXJdo@+g1K zIklOS1=&!g?G^vNact|__feZ9Ob|K_=Qj=o#4tv(&QmTcsHY%z^QxThL)$kGr_o6s zngZJ*66wi(Xf9W>tS9igh8pp^ob*Dhy@}CQe|BWq7{rVLP~hLoz&9w>-grrJlTe?i@BVKVY=OS|=EZ?iS;!!Dz2ljvLiC+Sr) z>-VVp(m{9M);?1GUUZZqOYBs>{LN^qu9fc1PHZiQb^8sclb)mxOufBt3-4}Z9m9uE z@=A0bw7Dj47SE&~U$}69xaCMZ@}iOQm9O0f+4EC1$gd|Q{qY(!-%1Po;JA0VNIu0* z*rC17Ge#^Dd|hCBESn;jo8hzO=_&oqrwm9=pi*l5>LE{>(;((5`1(xSw45+miG)b? z1+g&pi-ORPL7X@1B)=n!IX-jSEg3jcwN(AMR(c+VD*pULCHOIN4vGesVRu%%f6l0d z*oVES`EGruUv=*%i=S)B8<65HnBLA-2FXfW4HAdi)1CeB(T%E5xG{XQ8K_0bG=X2$^<9>&>9mYU_bI8Cw~e#U6u`Gwfa=dyU!vGcOes#Dkdn-f#3o6{h-N4W}w?0;Q?7BbGfVLTM-<=*Sb-t zH8UnOe0JvbIHgGK=%&QHS4)~d1eg;CH25<&*+&4i^E??C=xe+TRz*|JjU;ke^Wl5d z>`T!D5wm6{!l;X}d8`YQGtf3^G#CI3_fj++uT$_fr0Dmb=tM!cYd>zLCcn&sPE-A4 zu|{8X;rmP|!*bj2C24kU$uUElE^G*ZYLIkCp~Yd0qN95_XD*fn*O>#<=ev#$p#7rZ1)Yw?PAA>S}>!_0ky_py}4` zPQ`y^HZdgXk)*mu1=L6Ct-9`bjy(@^^T`doi+;UO> zY&y*o$(x+GS((G%GUKaT-fNg}S&D^LK4F4#Gg@!Wrj|25hiGvT{3+bRo#0OX zv)eQF_dt7LpYcJ3FYMbdpXF3G1WA1-N@p=^>2@;3_Lqp{`~~q;wQJh%(}4{om%iZP zpZv)pa&4(UQtGceAu6@1WaR|v9)Vq3>ST^Mz#mX6$K-`lwARsxd}i8%K_nM8yL5_mk!%IH}9{ay*s2WjB-QE=mSzpont z_6D|3G<7|Zajzg!sY3d@3PZPomD+Evl6p?m3wbV7?IXlo2^$Ry3FUp0ILcIFoo;I; z?H4@dc=np_^J$dDlfo9tM+SHqM!`~<7ohU7#v9#C0KQHW^Zm4drsR$WutM5`RA_vO;pvx&t3jDz6`E2aL|6Mp2|@_ijuiZLZ1GDq{r zK@wVYIMwrs$((uJqsH*$-JMO}XH4rsK}p|(;>td(J%IxO`+WGa52a+Uru+81QO7|dxtVRleT)l#b`2PAmm&w_4jk1xPt3WskoJ63 z6a&J|P?o92L>g(g(n(hoB($Y2hPB97^NDD6WuOb1AldSEq&&H)_;4@5C(cZ6(- zz4*_UgE1i7WgpSQ6w<)KfoLkl)JdNX#Asqyz9i{;kL45U4=Q!yAQ!1DX8b#Lxj+7n zU8)kxOH6bJ&Kgh>P(cNnq-FyPH}FBwUch{?CV_J~k|4r;JG0_^%pDM}Yyjv_8}9^o zw*u%Z_#()bO+aq7gO)59%0&|_N9x9F;)a7%NE3utXJmCiCgrc>TJlq7kmIM{>Rad! z)Xjd|PYD{jtXtCs9NDp~$YfAhn7ioo1@#<|Gl3>8!^E#(psArin$(u+r<<*FAj(&8 ztn*MFbuHH1>G|Uk$p8KMrIJx>+N`qc&{f>y^5+%;aQxQ-valh{D>(PFaf>*2D|@R{F|@fnJ4zh=0Gv>|zSB2c1L=*$!}K zLD#SsjG>kmIFt9Q634D$Rw921`$?9@Yo>Kz8Zy;-JD)Lw{I9c52v&fySxTFDLBwzd ze}PQ6EG+&KG;aR;xBk{(0E}`O_MYnRK%1Gpq4U}c*y{uZ5lo5ZzYmC^L?}-T01uC= zN0t8h@&yrapW%$2W~cPtNCuFL0Z`jTKxt`z43VflPauXfGBE)(=u+M9Oi7HUYj&Q} zg9(|h9@rL+VU-5k1^DxwkzocJw7_cTMW z{!2lwHI)Z7iYIxui1{tqQ&x5;z^q(~#_n}0#A}|`0F3hg{CH_!j5Mv=^}zfeuy>`A z7BwboR;3mbwS7aQ-Y&i+gNk=-JPozjnJkK=g2}!?htIwVb=#T7MaA@Nbt>MD$|Wr_ z8!UYxFTD5i_`^{z_SMzA(i29qO&z{sn63@Yz8z>F+S2T=*oFMx)iHn|c^dE&Qe4s> z^%HVh%*d`Ay+!c0Ch|a(VqvzT+4HC9tvzGD0=@zYfhO=>#NV3b5@^T$St6%>X)}NO z>RgmTfQb%Cyl}0rRJ!1^bw;9VWeGOGSUYE=uR4dJ925Q>mUb>4JIt|gsptBezI$?8 zImi3eVSg{|h9yIJC}}iTF(}wa`urZXtadmb^7dC-_P+#`56{!)l;mh?DbzY5?`fTD@QA~z zVL(<5M1vDTNp8{LdV5mEf|+6hb5#vB;Z?4FJFxnlb53;MV}2B@fC~Ve|L+qZ0Y<@J zvAc1`uFmhz6(WNYRGw~Mh=q-s|37^jn_hh#XDN>Z`n#E%y9arX;<&&Zor6zUVQC;~1L4jZk=-A*@TC7gVrSEu~mOZt=j@d=-`Ao=J5r}=D+ z1lRSDLiB^O>9+SZ1*xBZfU4n-=--uYu>Rt=2G(%%N4QLnGyIxTOd)0Ftda`{yuS-{ ztL`M;_la~Nx?#T+q_op3;d0gR;TTqX>Rh#~=W5|%Lpk9a9N$d^l^ckODDF;e>rJ}a zuc!n${?VQ=6M2oN{A{8R`w!`YS^0xe((r*lU;NcF7UEt@8`*_X3xorSS9xQfV(}`8}-GNmt`1WJV0uOw_6Eo(A!%F*HOz5HPiGSxrVopU_ku zENuxr{bh$t%79bm(hXE!h1jSn3gAeW;trb6*wyDu{Gq%(m^h77?s0}?lhOUAImypY z^9~nwbPR_PTMAZCVt))UDF;tnqY`?zgE?F28>}np9&Ux#R~jV0!`%461GOKcxzbX1 z>*w2l0%Re*=VpNVnklQ>P}DOmoqVz3$^%bgTH*epqc1t*_BlK>4qHOad%CR1{w^Sn zzp{8Y?9^Q8^DAcM?_6#e0k_PaS2`jJ+G6Zf@5xQ%z2$~QIBb{MueD_fEWA(8u=2i7 z#{Tv&;f(g{?Bh(~pm$TJq9M#BZ2s>7)6aA;-!{}B{j1ocui~lImT~P#Ixa*hA_E$Z zh6}#59c{+nA1X@JR9t2dkG*&GLnRy9%MCxKNQP{hD$eitX*#DWeH^XR zxjbX8w2M1*zc|n|c{6l%@ta-s$K-FTI@_ZfVx2l6=fy}(I+v8B+6{rN+AfO=zrq_h zzSu<7?=z(LY&)V*-(jZ9MnK;p=lh8D(Dz#eR6dcK%oG}W8ESD>pPxUt;WH6ql@P7I z-d)y5`P1_=RC5&tU!V5@UO`f>C{0bR;RQ;*BXQBU$Qt zb~{#%gp%V_=^67XA>WT_tCLga*p8;JZf+%=?msXWh3$Xp9`54&v@~fH|9Ikzh&Iq) z{`zF0&}O}3OO{&b1=Nc&lL4DgkA9eJs zru|p~K8|(s-~2iM-~hdVV-numq9_-^Vr4@0t^1;)lXOLeK0y+VaGCda6r7Ko4ym|R zVmg6YVH*K+(f$usk@*M6zWV3BHM31CmgM6ZynFrHBNA(whI ztaOWk;ntglNR$`v$2ya7=tr!?cE0c!+k~8KJsYkiaUWL8^9f zYO+gr-xh6eu6v!Y5$I>YrEHXNt#dYnMkt|U*xj|f(@@M}>gV#9e=Z`o2=!ozRprl2 zFU2tW{xfaum%%7=xz*usCHL92aK`)3y4!_wyzEzgMXD@u(^x!T59(%q(P%=tBu@V= zdF7Z( zs!teCVWit}15W%o?{MVF=9B|T&RC4q^n+W-I|Aq}+eL{D)1qjVw>~~F6@rDF(ah4# z5R!>P9bnGP2G4lAM)51L7#+`i=gyty&wsa-Y{cJ)R@I?`Q|{MwGY*vUT3sr$9i0+B zNT$%PWQ1Zn_l-5O((U-j$MZ4VrE7Ox*cU`rL!v%z09mvwYdgHZfAr;@TK0DSKTPoEdrvPH`x<&4AR%waFPA^kt~`oo%fGniEchb+uoa@ z3~dp$0TL8^CNe?q4m#Dd2r}jvc;&gQ`hCu}>jLkQRRX8fSf{nTvbYkHpw9-c3asib zh;aY>O8+eedu=^m?Q~n8)0~3MvromuM}8zmG4|+ARAk!~ryR2?>ej-XGVkW@@o}o3e__O!w~NcKor=gd9V;o>ru^R@o~TCP8js z<=CLHOWtYQ2Nvw@kLZAF&(>YnK3z|FMTfGBbF@Oc?7IZY1JGVS1Zr%cOSi@>7Gnv` zMy--Z5X*#450(x%O+(m!=oOS$%t*d0xxcBbqu+Z>FUTP`CLzJSv(HZHdu9#WohDQ) zNbVok-DH5b=FWz=)ZE{ZTTHV*Q|>RQIXo?#OEpnQaM`kK5{Oe6?KL%HvMb#dgf_aZr)(R0iBzv5GPEEzW_%04H<>K7?xzd^C&` zcPb~_YG721S;;9ywfB?SuTS^3zVR-nRq}te5J9P1Y`9oS*m3UaW(sw9;fQ`J#|S|U zPuOA4iHgCr2V$R%L{`j4E_JTv;YWu|O2mC9-3DWdj#w`;5ROg9LKR;m9ONlQl8WpH$V8XwpYD)M(PdY$M2DpBZniQ|Un zQn!#lchwcl#`49sKdhAf0ROI;zLA!qg-!;Q|PJf1*lw1zWOv_FV_(- z?6Oin7jDSI-2S!RAULtJqg_~9giuF}ftZ#bC)H!tnwIpmk5ZYt5yqG4zfi1-HTdN- z#l1UsI=tby%qoTG%L}{+cTb1ltkPYtNq{1r-pguYyyCBX+V~YU>#h!2>X*C6Bg77(y8eqhs}6xBKIP( z#6Rlbii$lB50}c%aG8R{lB73DD{~@yY(IJiugwYb`TZN{uT&>`f<&4fE?cy5kKwHs zf;4M(M){8EjAwhxt9hm?%8h)VuZ{u_JJoZL<;_UcQylUOJX&W&0Ho?@Jt)AE;9_Mg zJ4XPS{kBS&@IsV4nS~I?CLZc=52=b{A_9@BpcH^&NA%aJiotSS$p)!D2{U;5=yOL9 z4z6&`BvA|ODPpl(2<$zFORXn$9{`gZ_D7E%fs<*mB`u-GVRPc3@iy=_pAY2nd(;}< zx_~*zvX<7wfUx55(NA{gw#t#NDJkO1i8}df)Hss-56WhlLB`cHR^ zEwG7p1a*;lHap7qUbs3~L1aiy(nT-S*a-`py~=};xJp<_0RHZ;a6yT`v3D}$?}JY+ z8ygxryFHPt&kMl+sXLk^D230vOi%GOaKWyZt&^?mgd9o9WAH2zXJZu5RcI&P*X4JU z6%3s}>nVsy{2V~bWjJ=WQ4|9cJ8!jb6!T;S=O06ZFu4#x}MBOL#uFXJ4P>S0L`EO8f?m zKo-m!;6>`!jJs&$OnzA=gEH8wEa4-;jd=$u{y zZ|-;?2?JJFPsFs|b5WN`I1;714)e7y?e)G~mSJS+;>%P+J2W3&%)rb6^OIt8-YNM)Las&PDVwl;~l zhDKc59FGUQth;(O(_Bt+!MN-zh*BfP)zS3m895-4JNN8eQ=R70r(PKgjkj-WEY6f# zECL@l@GWkTZp(q9p=_h@KnxL`=5E8s@->!x0Fk|=D~z|oP5!qarQonP07^o_P9v^5 z&L?@V@5Hpch4TUv!*6;?l2;9<2Q_E=ZP}V{$J4s?hX~OGZGiQe=(+z7fHNpm4gQy< zoKT_{t^1jE5!E(P6EDe%MtsU)ya(OPq*k$sVA1PYv)!61@V*@ih!C+p^wr9FO$fr4h*4*JYUb- z;z}79N7TKv0+)WuCU?yS+rG)fv-us2N3eK-)8M~iX#**;_$yrM=z%V8G7$RzirU}c zO%k7GuStVU+*JxkWdUppXH+E?K0oO%iM||d_~c_gc8IzB!R?G>S6~BUi0!_P9&H$@N$4lV5X!yKxxqx z%a;!r(y704v#a`JHcuA2N#MBrU&uTlQ&FG@f%(_>SG?135moakZ{-jvP0F+!_XHnP zmQ0R@GqMS<%v@apZSlftSViuw?^0!p+o2y4gj_C9kQBWt*c*>G6|2 zZ9%bT7CjJipfL&e(H)5KDO#@A?(Af35z1jV6Z71<;{R4sicK5_$899aVB`k!6V-0m ztgJb=d982)`w!+xBKf>=sn7_6x4@5o|;a%elxj&ZpRuDTYh$0sf+D-6>^sJvDKCBC>0KlRQv>WVJ zh~Zck#vzy4bVbkoBE_oCqa2oY4b{_gHeB#oM}=e0_vLv%?~JSMRf9M=uQJ!+!R@=R zad5DZW97|sSI125CtZ5Nm&c?I%8AwIl;08sMbBK0===^tB193^h!y#^;)m{WnkUqL4jXEM<agkNhj%)O!&-Bm z`XFwzb8PJUF`~ZE>vpu&m+JT*HD8PuTJiX+@V2Hk&l^g#-ZZ>+t0v0qQ=a&9ZpLeQ zo18@z;)>WiRTQw|nW}P5b=qj9VQ8&v4}4|DW3H!HZWa-lW4S29I%*eZpOOI27{r{6 z&-8w-_WRN$Zy)b0e5EY1>3uVD1L_&mdvQiw?RuVPL7lH%gFBm&1TpCw_=HDjZcbC6 zQ?&zfh*=EJAG`!Tm~ zm#trS+Sv}e?j0j+Hs`)EjPbgdBfYmaPg!ex5!IMiCH33cTPi(8i^2klZ7qW`xC#BR zweE1$pBXb=w61gBl&Y4xFyI?ROHPv*yj&Hol~m$MP9zE|)Lm&_DN_9zuEOt_mb$?= z6Mud}TO0Zx;`B3_)Hfr==IZ*xKi|#LD%Z(u$1djFUbM?@%yY^4Hfs6XPUd=SC~&CS z6#UZpT!1J91&@set1I#RPv#c;8$_c|kT<9aHlDQ<6`uO&4BO2(d zVpE^u+z1peB)c($UJeyKb3b38v#Om^BX1MgB}t^1HwX(GOf$OhQM^k~;tXiAvDH*q zJyFlK%2@jlxX@I6U!Z+BKsl8aGsp0}rBc2xhSD|~Lk`3IgUf>B6AOR#<}RxGE>iR% z3y;naE0O3M5-Lv>DjN!Z{ek3^yW`I|o~aIDcYayHT6~&sa5EH$s^iQG=qrf%SU#~v zXpcW8CVf@(ZsXxI=;CFQvJc|ZYYN}D!Dba_GG4K8y;k zufWm$pi&zK>Pb_PB))r8}HABUt%#0GVI z&JVLfsTDxd*+{(HFUhhBM2(Gq6W1TRDgRmyA3NGS)g8RO&*8iVPIPuYzYky)ZH;@m z)>93XV-#?o_94tlz@%EYM0XUAQh$GvC+4dfoR)I+?V5Qb5=* zIqK`3zC$x`aAKuN3bfHfgcT!1;(QygH0Xnt+-kQ5D*wf~GVez(6cl{IO zH8xdnb>NSHZl@)vQS^zYIkTF-U7 z_HXLJJW5C<-V7A|L|NEiAb- zN|!WBgRpc+x3s{b(z!@UcY}naQcI`O-AFg@S@62<`+1)46Mx3S={Yn1i8F)Uem&Vn z{fv^sDa~iYKC5@glJ@}5tAn-&$UPdTWsob~$?AC&4mllW%!daH6R5{#r>AJVK}fQ3 z%)2AcH3nuG>N3SQ9^+Y~-Q|@dSERPr_pfP_jW6eO+a+I?fsI4d;WB77_P?-E?Arnq z$z6!N0ej4AV6r+Ws}D<`?|S)`t<@h7+jiUN1E(%4NSZey4Jy`Mex;ka#^O8mFCcP; z9<2<2^Zd5d*1)9xL@pr#*6W_UJDtY18S~uB2js&{j<=uTod(V-hoeX(&7C?5rt5H;1{9}2egR}$&<4TbbMluuv z>uS)?^mych_u9)7yk|>geTPoL@LU(G4-{;%Yv*6x=IH zEo=O*g7AAQHbF(0VsdUa{7604@GYCyyho|;$>MxVO|TXVCaMl_iYN6{Asmk9N7BQ8 zUMO`1qF?k-j_=cUG!^X&(7IXY(J|S!er4e5z1SZYHCS_(2|`v@xk|IAUSn@a#$kIa zCU%)(>JmZyB3Z%|l6)Vfw|$^i)$@)XQJ!L zkXPsMTPN6f21t?wHRVh$h^-q4E7r zp))SM#gmJjJThLZr>cBD$n^GDEK2Up615U)(lR-f{_;E~`CliQ)schZd}G3m08SYk}`NX#>= zc$wE7uP~Um`F65ZJ5U~LRhf3}EDGZCnl3KjCxKeohX`k+AYj-1utRc>rlq@ z-?ZTIvlauR=g`B+shepF*VB2FJQajtPx+2Zx795ql;bike8aYJhpoz$zhvHSZkX;Z zp1sDtVu!w;k~%0L{0C%CQOoCIQ7=ZOEp<-Mu>Cg8$>wo*^N!HBTh|?zaRpE;s9>7Q z&`VeYSU2PV#l4IP!Vba9bVl?OECwEc_^~^}Vux+U5g{4Oh+Zx1M_qi9p{9oO(V6EESU$+mx|E@dWE=PRY$G-R zqC4-7`pGgf6v}J7_ObzSDJPEjeT4I~pl%OJYe21vjS#wXOl&oqoWqhzjI@Cc92~ zM(#p5+e2jln=4K~K*wAdSrP&|@yjXrvDjEAFNDVxyZjq^YD24x2RX)wrVtuJn8!ph zam4;)E_UZ9OR6-C&2~Yv&ZUFhap2J{-!?oFx^IJS_eF%oy1*;@3vI%F@Jgu_*#rK( ziUAsy0GqaFDEow%WC@i0d2suhmsBgjQxr?})<1gX6|595^@qbvV1HP~1e^yIU-U;Nm zoPhpk5LDVK6wm{jerjE=BpPCQq*nK(mBG5Za`oU)GS0Qz%W!xcsC$wIX%biW$Pm+b z6YP!tdX(FEf2P`hKkPs22j>Z_3(yw;DIFJsXWo5;992~(c%*rifNJQWivBM|(Vhzg z8Z~zU6HO5W6qNpV>;9|h*i}<}*^YSUi)os}=U=U3!ns~}9r;>Ipn8WI+|@>=EYDY_ zMBAn7BKvZou<1a|Q}Xajkll>FBd)YRwzQKFFv})`g5#I9;Hq-ZPZN|J z2rWmN$z}>(N`IBodZ#L!dB`5Y=I@g`bOt}F0wN>62vu#Y-99RbqFsW!2x4UQuXMZj zY+HaH!YcENU-ZRp$^x`lO9fKv$4&Lz8UIWefdZ=J2onIQuZ}J<2o+{bGZXwfZ{eh3 zldo~O=Jk%+hhzU8HIg3zNn29y{$SR-UZeu;;>3>2zS^H!Klkc?R?H|!1B&2R|&k!eEyNOnF;|aysETQvu=h4U<cRydlIhS*8-rh{^^q{&OTM|~sh2YWDqz(jyE`P|arVx?|Uh;1RK#<+S zE?_ei0kzed_3Xtva#{&qi@9O=wo6X3TfElFny=2@I0=GNwEP?z-tkKLz0MVwW8Q+%c2j zMnRz5&zeJF3Xgysi%Pr2b8!J-o9|pF_oH>HCg88kPNf2rp6k=~@3lUf7NIg-)4bv3 z@gT-Fujs4wFOS>9WX||ODO>duVfe%ZER*kV01hO!2g2i+%=+X|hNh)O=Rer+@w#uB z=f5LcH5}tLp04N<+#c5L)joYVv%8J(&c39GZj%N?<+5%EW?WTQ>C3MsehgR^lp5eCPizG{s@YwGpP4Oq)Vz4Xi8`pddQ9t!9)! z8&!qSMRC|msOm~eGOpKz()|^v@)sCcg#CL(!Jv#NBOAL|Z!Y5O=jw{1@hfOkq%5#( zU9p*U0$>F0>#+IyYylzc%khY78de1of>W5mGjDzjWr&~CJ05sVyUM^!MI1W7DR+K1 z6=4hN_udy($6_~Wmw9_{h(i&tw{zgP^XHrFX%O@SVAk@PBV!9^z{V1Wecr!y3)XF| z@Ff;fp_1+0cqaa({g%||(LKDbvC&U8`5plz!mt?pk&L|D@7$Ms1KRKLpDpw%oVpX- zk3-}`CGnoaqL)yu;EoB#9qF;M%{vdVIXTD8>UJK$LL0^OUJ^&(#M`d!yGyXYpu~nP z;BmN~-vy6i1JN;rAZ8QqeEJEc&0wb#Us=rADekVU_-nh&hLv>wIn$r;=8?}KVzcuV zf?$7~-R<6AvjDM$XLjiIa=OE5;KI%{1R^3ow^!u(vV9N`Rn%*)nHq>amJTvnUlZ4^ z$ir5U&*~>Ubytbdd9L9pZlRp5{`^MdY?axWXBzXLi_kxpNMX5}da6YypqmYd0Kl{= znrdU1V}GLJp*Mx;W6PJ|e9gn6?7VKJL_X~-?5q@KQFjr-+?=X{l6n~UsO6BGNQu0` zu7q>HydIGGb`36EyUXSv7JGk0s0czUk4&^(ZkH{@U(5B)JyC!9n;s$DX=*Yrnb49R zXwx<-b=W5+NI$INkcmJ(cMu~KR&pzyQQhIsT#|@|$LXO=-XLCbkxY=mg(n{6lcb*>fpI>m**MxyP$~txX7gFZNq+$|f-VSzbR#yuM%$sk1and6 zMI=}AA$kQsS)pDdw^f8TPu0;L7S*2aH#~v1N57I zv-dKi<=^LmxQO}*C*nu~79COp!%svowfj%>ar2+n9-npF-^LcLB$TV|Pc5*lE!|x^ zOH4s$0=3Tn!Jg2vkUL)*1Y}3#h_T+A2zkGf1QEYiO1`jwt~Fs*Zkru=)eq#F&o#n8qpiEx zfp;)MJ_m4reJWgHFnnG@ke@qQsp6OSq3K?9f&2&QAq!3p-ujI-P)o>#CpaB|iU}l0 zKPhStd_gGL+X-0G%{bwkSlF@ws37h%h*HTrIfOv}X00$jeq^_u_E*DscP8{1JfhNh zlIO;cJT?t1NQ()*-5s>;=s&g4s={D2bLr2ynV!8RC;$f&rO zX9%e}0u{WKn-|Gyci(BE&iK`3AT|mHx_ze>MFp0F#PR|s^{{LfcH<5W4Nr0k$ZbEK zokyz5h*ud9?%$4uPOZ7lDev~iWcy*AEp%9R=(hrFEN9L@kxZ-#khq@uUy$}602O-l zzNqdp?=LGabZ4$DTs34PvF_lhhj)uC?XR&S3yx&8}*z$05_!n2<{6xS~xLxZm@UQiE*odOMF+l3KqWETN=WX~4fYes9 z!K3WZNLdM1C2j4jdxjsQBD~*EDQnmnHKki5QC?#gp=HsomO>!OgfYu)x3@85B;uSh zGnGSE9Y;Q}iab1+LdSc)6jI@G_g*GIbhtNBnF5sd-aV29fD(nc0oLm=y8#extPQ%~ zM+9AOj;zG^SlMI&IJX^9FSO_Ae#mPV^ujneh%Mp zVtjqW`MM_ngtRQL%Uukn_rr=;Vn$xx0-248D5~HA(e=5pd{m1vAg8^J?E%gv0kL3m zqMexNzo>RJ5P;y=kGm*w@ttrk4(xGRSA_qk!c)1B^3o_n`(87{SzXfu8EF3~uj#?i zxB@RFs=DTg+i=7(2<4NExSfJ8gU|V<^C_tLb_5B5RnPtWy*0BI^@YeK#MZo(G#15 zgG^tgN@)<38nk;!Y>|J!cOD{6#Rq?Uiijw9UEeZJ)6Q)trd?fA>@s zqk+lk!Yd_o=qc^ynCk5-^!AX($j=K+ie_Zo#cb0NmA{ z8mQ(m{VsB?XI;i*USE3jgebDwb+ZBF7B~LZY^=d@Iy_1t^Sdx5F{S#}mBUi(CNgso zjhbruA4T!6CNcbW8BR$=9!iI=!tsGiA)&Z*Cl2B{+8egr)IwFV$V6hW$V5cOO~nYc z7*6y7FYn?jHuiUeADxYSL(dy8{92RZvY3dLwOr+m%+!I>GuNh-ifFn-ge;aW?|>K0 z-i1WIP0blHk<1YwgxNRoKB^YBMfutfE^h21LE1Zhq8aVyDo|zTdw7OM|D4}Xdvt;A?Ehf?$j$^l z9AC$_ZF`OKb%%qHyLV)TUdgyF$;|mm8sZP8V1^ZM3Mm*X2bG8$yGcFDly#DcQ_od? z?as)`L_EzYJS}NVc2Z=sEq?9eoz^0IY@q@8n$Fi3krhG;TE0m2H@veKcioQysL#V$ z>SU(A@=^moezQ}Q7i1IbG5koLcd(?wFQxT?w#&(D%(byiHB6)R*-`cyCxRzx)T=Ez zKe!EiCMxH0H+DQwu!x|aDm(=uE=^DN{(d2b(A``7*O!Gf1Lbvdn`r}rq~7{`FMO$R zpWFK<-p%^&im&Z4^|(_6m?-2C$nV~7xirc*U)Pv3t+dQPGoWdU8g;h4#cuQNzSpf} z=DdB1dqFOd*uPxv(JCnq2O?NUCnc8Wt$H8(lI-!e0Us#K-gm-tcf#54C}RdNY-qP~ z_Wf-)0%#YRa#Mt9@8p1$XcsSUn??lYC8uZD@V>;SlY1M-ms_ zn$8efKX`;`r>^kY2MO!a(%)lJ$BDMJ#u9lgf~%<3~30( zrgZvWkvi_f*t<{)2=eh_iOc^5PYc|fb4Kh$H5PmOa-Zsoe{J&Q19!#CfHcSgs0(e!3Ex~Jj!fga{&e8leE3N;GRup_Ll#qx}2vo{@gN{XL zv)>pwJjuQ?Nzegr;7Ci+pXrK2{_F;?=-^A3uWr2;tw@2OG#YClqQLc@><3Z{_luX) zqn36u-<+2+F_{~Y#%LVslvD;94+1Gx2G^$yd4 zKrW9*>qIXHGkMwh+Sgx>PoqG>y&__oF`eTnG4+?7N5N`9%LVvy58%2|`<${p0uTrB ztEw2oeTYNz<(JB+vb=C^4*dc3(6c9|-uk#}y(t!xr@Ktw_f95B8!*;pF|Q z#0n`=;&701QGxn=csv(9>RG66{ys!DZZ0kzY(0e})>gZJBZ>BP)*z3*3_LtiI#IN@ zQK5VEB<0a4nUVW+iwrwRvj9<2Dxq>rSjcH~O@Bk+&-@cx>~<1MO`^_m^Nx zNp+cEq|?dG-4(3h?dr^CI*J}bnR-x>XbKK!zWUf70yDi09&x@_$&-fB(`Ua5R5DHq zLGn56F8B7)|FD?_ZY%WoN|#!Uq?=@D0k^S9L|>PRmjLSdR8%bfs_hEej#Uq~rt{jv zShVY0aC2!~-!#Nq9he3qle+u1iD+O4p{aR7T;F*qsjgcT7290%9<6r2Zw)v0T$~6P z{2}Lhf{sP3chsuEFQiSMBcBo*|BY)Y45W~*C?;i(I{R6{n9ndlk@k!Had^rLe1qvI z#Pg434v#md8A7fs0aqd$zc&2^tQ2K#{5M|a*G|_%EcOINY5r_X7S2M**^daN8! zpGtUp`$}V%#;v5#;TCcfvd5IVbong9dj)d-!Qnk(uvgXxyZC!`=j7ZsnQ;OHJQ_aS z7H-Gym1#~C3eS*3^D$mk{ZUovGj&Zx=7Ti)YAnB_m(&^xMAooh+LL0V<)>-`zSR6t zmG2dxWRx11l}*+@&+Dg_RnQsrJ;?lZAKShl_#kuXxqC5qNX=yMN&C^kQ#bgD8;@k7 z6u>k6qD#QU3F`%FLoWzsLS@VRte1MeUs3-x?JIbq6I^$O9%L0&=OH}Bfvb<}0er3Q zJ6&7{q57x;U%uf0< z%slsUbn2b{+&FV`Ihh{V^f=(%rO;-@efYNG*`Mb0#ypT!l;s>GBz;zgPCTEaI3ER` z+j0H6?l)RvNL;>+7JOX*cUTmt_|0_e&z~RyKXykPS@uRQ_r%i3CmN?i&TeB5=53Bw zc;<8!=1bjR6SjDzs^1l1HYvGchdg<-6 z2J$GpHVxo<*#F3Ev6t$pB^uyyojeHp7u&N$38GtaC_QfZ847p+QNfcB?8Yb@X>=5% z@=4(Ij^B?@qy(KYAoEfR{+l-&PDh6tzqmE4T(G{23d7!_5o`P~8@6;invXU{JM?bK zQ7Z`E@9CLNg>}a+&hdG`BblCKrPp1ByEJq@kQTMhl!m=G0wDGgK5oGND33D;()jZI zy)r7&C8>m@l;AzOC&62->v6)uNrb(TUQ3u^*Q3=CkBre>IRpQgcSg!OmCVmaR=-*> zmZVFaF2)UnNw)EsBr0UsG+*B@*;y`4>gHk1#MF8sLzSOV(x&u76 z!@tzk>$2V@=6odJbSTkBIQ7t6g<|YlI$78)XFW=>UaR*n>fh_y+$r~dPjtq|W_Ui6s=NzB~%?1ja$VCl-JeBmuCZOZgb9Hx$=o&J{+%{ z>en+MGpa?O$}+`+W>l^4{Z8%+hOWXNhEdbU(H#c{N-KJH1Yw6O_2aLrzz^Ph1Lgu4DIuvWHy_v5vc)t;zttN!y@YuKcFpi6;(9vk z#?!az8p9fn;_Cn_WS%j^Kd9|~kz%7QXl^B~Mb;)8};>5X6XmT6k90#&_URAPc?a+_kcX> zxrmyzR6XHwRcilz#Tz;GhK2zdktErVL#r#(a*3o9?EW&qh4sG(`|9Cz7LUUd_$(=l z4lUpU>IBh1$?O&SddACtOg7s&YP;z3qEXmWQIQ6i|K9S5UjKI5&ihi8h_boY!oUr% z9EyiM?~y<4An0EqY=qAr%Vw-SnDqSqIhcS2;}M!SMqqIgCpgUc?^Abti%L%&f29gx z*-=w-{%M?F9YMH^`!iXrXNIUpy59~e7&mTB?7#Nx4yDQJS+*wBMdVpI$Y!JOL&LA(|ry z5g*O6eYdkpOeAn|y2Da;c;i;C(+!K8sJdWu#Yfo>AAoT7GhN$fwxnuemCRAxUT^hC zZT>f5LV#;q6vTW?oYWt-u&~}6oaX?{mX!yRlez>Ky&#tmDzWbE17fmp{GsBFV3*T( zA73G2OBQrll?8)^gL1zMo{V<)KIZWW#eZCgZek2YIm~Gtj78)$L3{}JV3D0zDCT1v zcJz1^(*sTpjtU}y*_j2ZS?*FDHA&|=#IA{HRl(Q5K>osU0RJufef%t zR4nX2jFZ*iGX4MGkc##h3aXG0E)ckrl)ytpTzU(R{)>s6?{=1(DF5d!H63?9rr6J~ z#fCq=tY=Wmb3Q+X>5H%buDPM?a2NEd0Q{5rIX8?4mf`*!veXi=&&SnSS)e4^`!q~q zR->VWTk65SFJANzu4RTu(+;cz(I{t^v%5mWLt}A?p8B+Wx|49^xsUYb4KmldAf0*| z{ilIRi0|f1{)2;?KYbr>__#i97^ezywWewAnO$V$-xfXJ?p#Y&m7~eRa1W5nI5Om4 z&DZ*NprkUsH^EcpS#vTD;%45I@+bq9);_Z~SS&7l+* zC#PZfK5up972=qd9(qm#ECkoq3e!!5noB-S-c*^xr;`BJR@}}%Qa0+{PH+_*|z4DdCl4fy? z>?QBkxtbw%t-Q5&~&|BpG#ufI8*r^ELW_}?eE09LR6*vD57g$6l@rn*(Li(X zL45uAxZ940jJ~SNerd)!%XTosV4!A}*EubY9eM%P5@;QJz2X^K0dc;Ng75?W*GrgS zAHlw{YtOVJYI|Y>&l}97cEmsJvj!NN(CNrX7JccvPeL-%w_l@c8p)$sw2(7fmNB>_ zE({YOoQW(qYCT-KlLHe`eK*rMbA6vS8PY>o(-WI-ES6@Zs{*l?XR&L&M)Y5!+%1S- zL`I}hsv62EP%s+Lv}aW{iNPzr^vU0m9Wb-CR!`ySWTN*xEmaCR$FG7Ux0oo*j}GZ= z&t!R-VDPm&GB06v_m#}kLuX?+C=BPKu$mF?$9p;$$M{tLYn1jbuom*BRwjlv$-AG_ zRTFRtpKPag=;?@b4-*Qd5#Sy?C7*#gT=D zAk4Ifp@&FnagNh4ORXpEHv2k@@<|=wg8~yE{ZkKWw^3AUej8A2bfwEA*elm^1>;50$WJtJPHK!%!TeC_TG zh)-)KrL}^h_gLL5+ECQOr=4O3RsB+ z&o;j^--=p4(cskEWF9m*xn!`5E=y3Klb5IPnWKQHHqGsYzu>*l#%j$h#0*a1i}oX}$G~a8SDQ5O;5J$ZA4w%&*_b>~x^mdBNJf>*H)0%%k$_%nER5FF!?U zA5K3_g4EJcGPa9Au-}W3zJApzNG9>BHEao<-I;l<5ck6D?xi%?V*Aw~tvP)uY<^1_ zCkaZiKZNdV@9D%LwI$_P0zY&-g!OK0WOVCDOEC;hw;kKwU?;NjC*gI5LRq<(GIq~X z%Rye;c%^kgWyg(~y_mF`(ltf$r@_cOUB9bOxHAeBRg5}d%nEI0tYmvY30L^u;#9H5 zP3uy|Jl z&J)(BS}tdcx-K^n!aaojg$}QfOxXi^QZ9i!cp3_d@b;k?JrT}y&xXFeVJrSuFKCp# z#Ts;u?OO)L@=WV>tRoB1WPekez%jJqk_hb!xd0tg` z!bEo>h6eU9>+9ZYE4%c(*{^63guD}rshkt&M;Yo0xd(i$b|6gO?M6}Vh95eU7H5r6R zs}1Fjm!3_9x{!=b_Gtu0${znD;w)T}vD8jZ|HFBllG|wd>z z6kt?Ko!9V1el{(`R~j>MPSK+~wMtttps7KSbkE*mtS+v}TyvK*0yBKY`87kMnlu?g z6`b;ow}Zz_^zsH{JC6$Ttg6+Aosx4+L$PxfnF}oVCasUd9*GIV60+|;8Fy8gTDmUv z7aH8u`|}){3d^Rshp<6JUtL6S8KFK8{s%ay@?Cf;x8z9b*7r*s*e5lG;88g4WrhW& zyV-G_-~vuYAu|;Vt_4|Y4|=N5iH$NFbvC48Wprz)JPc{otaHdPQ_;29O52l4r!UkE zQSldx<#_X(GWM&YR8j9tdWHo{%EMyUR6u+u-(&b4^$tkN22BhU9yo+Z_7_Go%n)w! zZh4%xk#(QfQO6)Y!fKFo8HF>RwpulR*}7~r;LOPf%#LE~-Xdg2yEk=5z%v#;w!7?vI#tEh8kXu&0PAIGgWXc?pY&Y>Pbhb2iCnhB7H>gy1 zGV&fd<%itj?EEVuXDYmr@cVEZ7`ZQB0#XJUx8XJu*dK9Q7?wndBJL6rk4xDEc%U6R zImnkSsn8HTNL+5p6b7QnEdgHm9|YRoU(-YA`vAOU`zmAzyffx1Oh96O!v~c@FAit# zLz~Qh$kzVdmnBRQ04g<~fiAi|8CrrbCF~VfdLV)t+Z$OK99^OK&px82Kuu8~bMM}b z7vXvSvyZ_zKqvt?>&$S)A+~0y^387|c(h%Oek7(2O~Y4OycwOT235QF$HnCazW5=z z>3owQPZ@6lkf1>aXvvCHRC5|M9=!)GF&+hBN>4Qcz8!oqw(vaK8**3e4*B&dig6NX zSK=Z+xwy5r)d8BTwf`SOMt)#$6^4cN1&OLWn=KjK$A-J_rWy1Pf3qAv^BR8HY`D@t zSE^rT5ccl=Q;W)r%)GPFRa=6B48!PsG1$WlJOLAT0fU8yWfr~qTC|7s$^D!29(fatAhj;zh(-I=m+-TOUnnzrbc z+#DN-6aJ<4Ff}v8g?^FI^{{dr^ImXUO#R!u<5XN*Uz2?H$z_m)ZUo36zy%&hhdj8^ z^`RrTV3e6qXtt;d;?#!1JM(#Xmk6p697-{PozZ0S*!aoEoFa$W@}?j01DRIUmHJ)7 zrT|ErZ#IORa?@sHZUcFGa+B#In&1D=Fz_H`%nTcg_J!z$ot0E) zriE1BOSegisgxjyxO^g#F870M8%v&g4+TPj=%Y~gnC!2&MK~g~Il5xnl982g9_1GS zE54v_PHGg;^%=Aw*0!=A90I3 z5}Yq8%207CFTjXebEp)A_2^6~04e|9z66<Zc93)YSYWCfJ5k~=t)sP_WK_oo9#9O^IKD=KplATrvQd{8{;4@Gb zD0lM~xEkEcsJn5s4PZI<5W;tW==vE~)B`^c3(KI)kSW663q{{GS}XV+8Q`Y#Q`btmv_tUSmT9^3;tibZ{HWR+fAz*I0_!NBVIV! zmne9|^g5Y=-cNiI>ZI5_8}+di{$!O9`0|tmr4K@9q_mdd9-lc@%@X<6YYvhO&sqyS zcfNi4=ai=RXs;N})kfxPo7K4;wI`8N#K|Exq+mqE@>xoxChu+S7Uoy$6LNX+xykJY z9&a{@o00OF;z!^->YYxepcx!;f|!GxWd=V^0(?btWI8)X@0o8n^n4DTAs}K*#X=md zZwh`4lpcCNO;OufoZfx=6K&!f&Iuab!=FWs>@&Rkb_?~Jo~I2>G@V$|z`<_`wbe^- z6f$<|1QDVxsgQdFELL?kT=dj>OIxge0>eE|PUM?aOUXK1#6Z|vK^#xPk5H}U&M+1= z!WfPTn!@E>Kk$WIzRbucmS1u(jcjpta zAJlXQFXy#7pOX{!Ux+%FIf+|U90%*1X;)H0cy%m@p|jQj{6>>}o_jE=zpYSjikV{}IVqjv3jp-|?EHS;pH9O`+RBz5T1#z5gJL9YOjv% zSf<;{#uTPFyE`f^g@>A!y)ad{?OUX|s!`y!&_Aart@%d-z?0+gdmvw9JCFUs@5=Wv zU*`C=VNr8hvM4u!dUq#ky*LNIKge@Zc}k<942U+4;)euj$aD>dbfEr6v)}g7ynDiS7Yq6qQ{+ z^VM`}?B@644+bvAGkP)Tzg^1Mtl)oe;!Mya2*WR!;$kIdW43+K6{Y2RzZyiE_j!?L zE5EJ*#nAC{xOf}`S?fZN>l>!Cu(`~SPjmoVPU{vRbvfBbkS@uzWhi;^ z)y+?^^o_Wm0jQnz47*}Opig@^zJ4NIGwe$OQlh=AH+{TXau8p2C8SR!Asy1*z~fS* z4eR+hHg-Fk3z~|I%;7RNunJKY`CLZs_}aOQk!=iaryljyJ+2f{E-RU zwEQE2Y+9^tA&NeTy?diDn+0j-vN`h-h`A&}OQkm~sM z*s;HoM#W~xhpy*~0QIQv?3Mes_J2Ddp-&X(2OwS=R5LHgGh>f_x{j;B4_gK-FhVue zF6MX2yN<8>6KCRf3*e1>v>Hn(5;r^|^*1R8ToDqKxAQBZXMuri7xx}0Kl(U3j_2f! z?GDH|ae#W)ZED=o5BO5@QYXrj?}e$cKYeQ7x7CKm({N#E=Fp80V;V(R`+Cx$?N_VV)^)TiFU6SKNS0df$ID&nEs^& zH7qKoMM^fKdm&nxew^Coofo?L;vbA4r5hh5TmN8vR2zcZd&J|8x!nS|C_fcHFVBKM zy;}w|ke!D@PIK6QTU}J6bSKoun?`ikshiVBYfHmK++vW}gJE+!auxdt)Dm*-U+#0M z;kS!6N+) zj-{nwqy2=hmDh}ZA>A2<2Qnu$nVDSUIEvp5>7&VdH-;H1WJ`ZqEF!`_d?$OYzLtq9_1P+uhy_AW zt^<&GjWh(9cNGTXhdxHr(_^Aw+VZvSD|QaBln2N=GxZ@%N+h)(pwEaE#aD`>k(RzM z@NXaQQ5Ct5wLF0+et&aUn%$MMDBO|~xt5fJSc(~aRRHgYn?PVF0 zaY}I9K0N!@o1wIuq~wtTeT4D2`}_F1H-FypMvh3TC_JsO`yiFcIQT6IvQb}5$5pRx z?*MS@_@ygCBfwCH)1`0hXi8xf9`t&@>0bbFrMdm??`WsaIqwJz-@6dyN=eVe36Ej& zHju=i#@4IG#P>N-Wyi!Fde28Js4>^+1 z({KZ1-3Hb~vRZ(R|7wPR#~8hbXzOHB5eRN-C;OTs(-vpCS=Qt4QYz8jZlOT^ak-*G zqfdgW{Ow%S8~#DtsLY^{rsrRe1~?K{?glFJieYVjR}TPp=mE+d(sLImx_@=CtNpf| z1_`gEs=bmWrRYZ;r+$VRu0HwMvgX{OtfFQX!A{N0!uhNH(S<%Tme%&Be|N8fS0zo%X?~UI+p}2+2@>Mo z`g@jUg@mEk^S(3;$wnZi*G(fz*}# zs$Sb@#G9iA{whXw<_qELXJuTMp)?*L%+10>jRivusqP^5awK-?@ureU(`LAAmSYs6 zAx^5u#ZNX!Td&Ba1^M9)Zxd2?^r}%lY8oznhOn2u2tDWsp#!=Zeaqju>BAHOGNd|X zEv64!)u3C$lnyibr?ab{S%Vis8j*#RHpOe0L&`ye42*w!^F`n|P|Im}8Nv$F6?0MJ z`hjoqQlJ{xjNN7A_2G!r-@6+;$N;`MN~j0(MFjS%{xd0c@ZsLw4&)usKqjI5#y`sk zEiTtL0vgPe;;a9i?4!S%(g+&Z&g+iGvU{U?Z!c@ST*z8y^K$T}=V2D8=;H3Ub-1v8 zJE0Ups?mllg#7Iy(hN)w47xLh{Oz*nL+ZKTwK7w^a-2``qno|rK94z!8x(=igBAW= z<}hj=wT;-gyd~EA-e#_GG;#?z{A)S%t9gvl?rEg_HXG9h85&UB-lp2&iT$;E1p%UP zJ(vf->AS(Qvwl@3kf8Ilx^E_L{eN~#c-ig3_gV;vVN2jxd!ahiYPt^D$~v3=RiLk1 zN6~HLzNc1UDYwhW2&eVd&$hzPPMe6=ecEO3lFm^yv5?s6Z>h;|N4Lk{87qql$_la>b8Y*;)`Rquk((Qd3WaRBiz);J7N#Bj zd2eA+`HWbCm|^`r(8t)V(-20JIkozyI86Rj!Dr(?SqV?vUtq9oye*ZW812?S8MbuH zD-QXG>ac!%H7|#VN=Io;{wgjiI_9FF*4mR0w6am)ZtB)~H$D3tq~XC1c4|WUGG?-9 zA&fDDXPDM)+wZXzM$Syc>UA7@!ctIIbQ1HDTv3M{t2fRIv1x>xeTyeRY8O^zmFu^( z=R92&myOvuo5p1#d2xBd$1@C80itVQ8|1%exz6^)5Zanr$-xuYn^cP-YnXp8%{&w^ z18`3@3n3KLRHh8Sq=Fh<7D{=B_t@nTZjl$clyhUmo5x$>1*!zYDua$s1stkjx=L#> zEeC3;-i2}%AFNxe8euxck!zT|KL35Sa?Ib3#x_!QI5@JypFpTwM%2{{i;Ad^c4VVT z88a9wS0}_jC33rNZMBV`ShXeMvhYH_YO|YwANF`AeWB$uK;2#PhO(89DPp^jh53_6l zAMt!=R@d&GC?S{9Kg%}`6?0gtqO;&Uty4G8-@Qv*XL88%p=Cj@V1y8-?F-;F{Vy;X zITOl`AO1=)|Ls8bCN0!`cs!Al*h7brQ_aQCVpV%{k?c{tRjocuWP5Rf5a$5ti)w}j z=tsY#T5V)Ywy9f~k@KD_SjJmflm4!X$%FNSfD53X12cltY->6UM z6TF*5vABM;A)0uwqU|ROApxv+3)@#Sk7M)TVyF z;?T8?`g=i$K*4wY76)Rc>1o;PGmA}45b>~F=Jo)XsX)x*G zxi&B==zc!mV6C?4T%KLGxK|;7X|&kSQa9;%hFA>sE?x*A^*mqtQ*!%Lg4OR`%ENi9zYf*=U@6+#{@8Q#GW~zKv$Ajv@d@ono}#EMuM$gO|%yU{)3yx)Y{%(c5q zlFe~o!}72rfan$M+O=!6LLr%u6`3EFKJT=H!u_%!HZ^X0LyzzEr>Pv2BJDPL*|4E+ zT`VwDod2x6c+&hiwsN3u_4}OL+qlk8e4a<=qaBXqmLCh+vbi!Lpu52YsDV*`>FZ!r zZ*86FH&$iXBXYPle%xgUgUATPvaWuGqpDL`UAhO!!o zd_DCVAiQ?%J&`b?h<+>J{+D<8cc0LNt9aeZg(OdY{v)4Q8<-^{X^O#mNVVf2mosGX z=?@1O$C0#7EJ7059rKM3F^ac(^Am!dMlJ;jW|V})3nD4&hlb}a6T3b))W$!YXj)9A z>0J43Yn*%cNfEV{|3Xi1Nzt(tW=deR<~L_S_qXe7%V_IFe>$Q88*&9ZmSa+CGj!78tv0CbqIl z)MigZe%&|VkL%<${UIP*gmBQTKA9TzrdpkO8)H@#>ZTP^=f+{e98lZ(|k#f=q;=JAynr zdpQ+NG)TKcKVGJThTR19tlUPi{ID?X4GsiGpyZ}Iq_magPk%KmnOMKPYdk+jLZ)M@U=s!9jkRk^I(hesHTsy4@qX@9U$1`QhyTC2t}-mjwrLZ-NJ{ro zf(k6PEYjV%3(`usbk`z?bi)!NU5liElyod9Qqmwuh=3BVw7^meyzBG4$M^4>pVwW- zG52-P+;h&%Ir&4O#hJx=eSAPw$EKzxF(k=R<0+5y&APS z7L!6zph-Kdz~nXpjNQ2^~1?8HLa;#oeKv~FIE zu+;fSTsNELMFJX8U)(4YecwkG3YLTUYL$e zx4z}KKyDQTzxt$j>p{AN(Pv3||3HZ~{T7D;JXQI+znf|MN8FGU^+Qv(}P0-amG6~988fwEVn}mQB4@bHE zD9WaaxmeSZ$g-NE$XvafY+1@2%HLs4`A|yd(?WZOWfx(7;H|f5kjwhrZH3mCz(nXC z&FsC?pB=J1GG|B=T@>$O-Gvm${|B-ySQXLN9;fz)q}kR$fk?4})xW@Jg>mJ;rG-5; z25a3R4Y6tZCg)-8phT!pV4DVSr58e@Tbxpi7p4}$5^7MZPHo@J z^tt`biO-k>Id*{PSj#J4m#og&m=B3RS`=d2&lsAqA(kmBOoTM9Ymd2-*%lx52)JCU z48HO1ITwX78g0fBm3IrdTpMoHJBL0~vzwpJf9JWq{Ce6dg6S%Gq7$wFbjjHnQYcDQ z`43~Lih?p1X0Ks6KsU{14f9OiQ$H~2%yQ0 z9{9oW?M=>Q(zC;S;8%MZ&_E|>6tRV(yQxK%{oc>*x|!qOOs78n32O_73u6T;j&e{V za>J=RoXQs3_{1?UBqbe`B*M(c%$|CUxIdh7hIuPxc|2$d z41{qwNE3F38LrXLLUC}r03{>(G|N_3;j$R>l_-#`Su5wq?Jx#HVn z43y2bI;L!XW zT|L6LABDm9UWY4hy}!D25=KLPzdNrk(5w+>6X`2wC&t11lvBuzp}3(7Bkq?%3*AX2 z)aDwbd7*dT7_^nX19KLP*&6m$K0_yQbbWfyDoHYblmHAr;4xXH5@c)?wtV`p>=33F z$RAMW*xzs{rWrq&9y{M?`Y?%~+q;1yVUSl6Hy8)jva;t{HS!^R>^f0pKj*PBjf=6+ zj#RdQElhC-7iY4MGyQ@7)s~fUH``MCS)0>`J_XE|#rdM?%I@%bT0KG5?PnoYGcz;3 zTL+NVoQdb@6f}SVY(?Yz3(dw7hP)D4YJnK{$8^?mzHE}URF z!Rcu7*gq|WHLSQmE4;?--Jool=Dm z{>Um}yAd{IKq^uf3l02o^BhJ1Gy7RJWmn6TZif zH@>a(;5He^*NDLk?1h^D%;LGC_A`(ELd8h?dr1&lpV6!WqZ6t`lV|FGWjCNl_PEAGu@k1MDc-^O+94oKnHBd zzqb0$>ov@X78Rj`tP&1sTkLf}5x(PA&J((*GWz)>EoYgaw^(N$26cQ;pUZIj}&mD?>;ie^W?8Z9aQ21 z*O8WddDX*YRZ8v4Jw1uKF)$FvIcwZ3k~K}k>y~RTX4P>1!AXBd!)pw;Tct>yX&)6L zI^PWXx%EUxVdW!IPcl-Qb68yPO(~p}?qppg5><53%z!dj<2W(xjM! zzJJ4$hC;elt{0SfRw``nwPc%mJn;S*sNO}oU)D?QBd-@p$;SuY>AZp%xudg4q$t7} zmovqE8NZZw^g1?Qzopu=)pOSgB`oAU4M8 zgUni53!tWxS-~Q3R8&fHdXNM`&ao>H5 z%?b7{P#~_KO`3R5&NrEgM%Gl0sBtyh6IVJZTF+DZB-3;;@Ej1}!fW=cz}R;X`;s@L zVy>hSF;PwC*H98$Dk4J7B`!g|u8gp#!nHCw$lAj0i&B!wwA=Eoh2fWY#Z6_1oXMk0 zYp_0p(G+4XX&3U85JY}NP zK8p-h(NGg#ql?omSa!_0qR=3r+s)wNs>fL z_1uaQ_Si;(;>symqB#wi9>*j)jF@BezOxqpdoWUjx&;!qQRvU!`J5~!SRN=Mqn{aa zITU1&=dS%JEJZ4#x-5vyA}ErCP1es~17yEy;_^yOYtF-)Vbm>*F2U;a6kw)~AG@Ky zlYu&8f6_z)GMO+QPU27qu?`oB>&_+$0rNRf5IzTblvw{G>y+gTPjFd}Zrt5WJ6>sW}^2z$g84ufKoO z}sWSiEsYb#ausoi_n|SnI&KFK3VghU0k*Xoej{K{RZe48*lHQu_Uv3 zvwxnWZ-YfXdS)4Z28saTCPSySg$TrgNF3x%3mzyZ1byLFG9d%}kdZ)y8dA77N5 zm)LosAf&>Zs3Rv;qWN3sJ2MlB3QSQJ>vXo~PoS2eO)ps(4;@L+nb=g=vJCI1jtl?B zpzDZkCNwje^Ouq?ox00~-z8bF0Fd}}=^yZdt$}+THN}iscN1{enhUpP7e!Koh+|#X z7?Y2nx?xS6%1GxOJch#xivcmW_@yLw!jSC|)5D^A5+WG%9?PNS*-^*(6m!d`6k!%# zCb&aLlC7#+L9hVrb<(K4%(#!DR3R_>DUMsf$3|8cKY+c zbD#4e9LgOLxEAh1ulD5-Q^%AEs>tg@Yn0BL=V(f`(RaVdZ+osQ?<^6NaCyXI0M$Wd z_ZlwdI@Ne+CqyA7mO-DZH9uym?#WmKd2@@wO(Q8os&3+u$21FESG83}f0d4qm4+W( z&Ze#A*k?@Li_9a>>{W&lTiy?gC)AJf!ZEu&MhToQQ?A0ebQ{T6Kri%Gq9jHn2R4&t z;Xsa_0g;I+%Fvqu2SBSoWk`U3%CoM#WWpKYn{p%t)l{&A=L-fLID@C922rh5ejf2(6bv<9 diff --git a/tutorials/animation/img/animtree17.png b/tutorials/animation/img/animtree17.png deleted file mode 100644 index bdc9c29172d3026a3a67ec78b2ca7b4dda4e9d2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16001 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 Hu0mjfp~zb= diff --git a/tutorials/animation/img/animtree9.webp b/tutorials/animation/img/animtree9.webp new file mode 100644 index 0000000000000000000000000000000000000000..379937b24b777a764441275fb6d743b458ff9feb GIT binary patch literal 2048 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ɒzq@^`I;P91$LSblAipFCf1XwkK(Iq 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%0AWCy% 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 ?Rl<>;TzxmvSZ4E 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

tA$ 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

>!onjgD8QU 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%0Dr`mKM594o7 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

U}{Py&hRO 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 literal 0 HcmV?d00001 diff --git a/tutorials/animation/img/animtree_badanimcondition.webp b/tutorials/animation/img/animtree_badanimcondition.webp new file mode 100644 index 0000000000000000000000000000000000000000..d8cd4a38a42bd9f4668b3134624d6399bea160fb GIT binary patch literal 42158 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 literal 0 HcmV?d00001 diff --git a/tutorials/animation/img/animtree7.gif b/tutorials/animation/img/animtree_blendspace2d.gif similarity index 100% rename from tutorials/animation/img/animtree7.gif rename to tutorials/animation/img/animtree_blendspace2d.gif diff --git a/tutorials/animation/img/animtree8.gif b/tutorials/animation/img/animtree_blendspacepoints.gif similarity index 100% rename from tutorials/animation/img/animtree8.gif rename to tutorials/animation/img/animtree_blendspacepoints.gif diff --git a/tutorials/animation/img/animtree11.gif b/tutorials/animation/img/animtree_connections.gif similarity index 100% rename from tutorials/animation/img/animtree11.gif rename to tutorials/animation/img/animtree_connections.gif diff --git a/tutorials/animation/img/animtree_emptyblendtree.webp b/tutorials/animation/img/animtree_emptyblendtree.webp new file mode 100644 index 0000000000000000000000000000000000000000..907f594f844e2d770452f8facfbe1e0d07e734d6 GIT binary patch literal 11348 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 Q&neC82bkBy1ONd44>GXy0RR91 literal 0 HcmV?d00001 diff --git a/tutorials/animation/img/animtree_emptystatemachine.webp b/tutorials/animation/img/animtree_emptystatemachine.webp new file mode 100644 index 0000000000000000000000000000000000000000..d2b7477f3d9e8bc804695e60ac90748415031b16 GIT binary patch literal 7410 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�YFpF$Y76MtaSeyQEZ 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 D-6ci6 literal 0 HcmV?d00001 diff --git a/tutorials/animation/img/animtree_goodanimcondition.webp b/tutorials/animation/img/animtree_goodanimcondition.webp new file mode 100644 index 0000000000000000000000000000000000000000..ce45f5c7be883a00b23ce6b38684e5958864a04c GIT binary patch literal 43532 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 Fe*m(;T8sby literal 0 HcmV?d00001 diff --git a/tutorials/animation/img/animtree_goodanimexpression.gif b/tutorials/animation/img/animtree_goodanimexpression.gif new file mode 100644 index 0000000000000000000000000000000000000000..82c1515602bd1bd69d0bf68ba62f357d9ee5ea89 GIT binary patch literal 543598 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%0DvWab8F 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

EMg;Q?llb5 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.p9p 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

YFH=5$0*(P=lrmFK2en=huqbc76_|Yq|tlPT0Z7 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

63PL^ye+~Td_aIa>Dur`itO3N zN043bhO<1O=mg$l8Z9!G$^x;(e)(OeZpJBjM-&J4a9}d1b~weVy8x8Sw>h&t>^Z@NjB zjYvq@D1XoSF>HY(~!2_4PGw*YN|9#H?^*L*z z_uW9mtgk7D!#WO2C_7z=6@K9lSVg)M=u*h7ZQvhoOQ@-9@l!BV{+*R-DqFYQQEJTlAF(?6}=&>2qy{TzQd%jD87L$kX{` zUZ?x>;kTRIp`=tS)*EUJ7DK&`j0lsU1T2Ev0jwV-(?l(R)2xa;!>b8azR8>kX_p(D zTP`JUBu#b%Ft>PnIE%s_@SNriR9!AP5cV}oy^E!b)=!HMpQPtdpf% zHxh^3VWWq&+lRL2M_aU1pfL*PET10QYnKS~o#2kQdh>hOD2|W4kA8uH;UTxLLk6v$ zUl39hE{Om)3~bOWsf-~bGTaDR@juJ}Lh+CdFt)G{)U?&b70z+L;6lN3e5I1x<)7}_ zspBppuGF``MZqBW4%gMI%bpjz)Ai4I4Swid=k1ev0q}obd7mzjh;?UG-U6O3f8WJM z9%DDpN5uLLZ@%f)WA7LTb_}ofgB~b+ibB!c9(8qnPrsx1DRFD#g~KbXnuefq7xlwX z!vKn57sV^dTqQ~H`okxHL)cc*^BLxW3moVrF!RY-`H74Vm3x8G&o*hk1aif@+~2z% zi#?VF`l+H(Ln6�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

D!gR&pOO3or-7Qr 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 upi*|XMM=_FHz$wzC+`tk}i$w@Bjd25hEY~ literal 0 HcmV?d00001 diff --git a/tutorials/animation/img/animtree_goodanimexpression2.webp b/tutorials/animation/img/animtree_goodanimexpression2.webp new file mode 100644 index 0000000000000000000000000000000000000000..1c77baa31bf8e31660f582b8e7de57617bd7c96f GIT binary patch literal 42944 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˶+0Hn3l#RwHfp29@!mkw+-NI@d{S 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 literal 0 HcmV?d00001 diff --git a/tutorials/animation/img/animtree_timescale.webp b/tutorials/animation/img/animtree_timescale.webp new file mode 100644 index 0000000000000000000000000000000000000000..74cfe8a17ad02b00b19e3e786753c052f15683b9 GIT binary patch literal 3392 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 WrYI}YWK8fP3DwL1000000002ObEs1Q literal 0 HcmV?d00001 diff --git a/tutorials/animation/img/animtree_timeseek.webp b/tutorials/animation/img/animtree_timeseek.webp new file mode 100644 index 0000000000000000000000000000000000000000..c66ca5fd46263d8901aa2abed22da59d5f4c7319 GIT binary patch literal 3244 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 literal 0 HcmV?d00001 diff --git a/tutorials/animation/img/animtree_transition.webp b/tutorials/animation/img/animtree_transition.webp new file mode 100644 index 0000000000000000000000000000000000000000..120d76305239d1719aa5d9eb45224c4e4767b64b GIT binary patch literal 16744 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 Date: Mon, 14 Apr 2025 16:11:05 -0400 Subject: [PATCH 022/263] Several minor XR page improvements --- tutorials/xr/img/openxr_enabled.webp | Bin 0 -> 13334 bytes tutorials/xr/introducing_xr_tools.rst | 11 +++-------- tutorials/xr/openxr_settings.rst | 5 +++-- tutorials/xr/setting_up_xr.rst | 2 +- tutorials/xr/xr_action_map.rst | 4 +++- 5 files changed, 10 insertions(+), 12 deletions(-) create mode 100644 tutorials/xr/img/openxr_enabled.webp diff --git a/tutorials/xr/img/openxr_enabled.webp b/tutorials/xr/img/openxr_enabled.webp new file mode 100644 index 0000000000000000000000000000000000000000..5ab2ed74a71330ee0775a125f1d6cb82e0361a2d GIT binary patch literal 13334 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 literal 0 HcmV?d00001 diff --git a/tutorials/xr/introducing_xr_tools.rst b/tutorials/xr/introducing_xr_tools.rst index ccd72ebc6..f0e3f7dc4 100644 --- a/tutorials/xr/introducing_xr_tools.rst +++ b/tutorials/xr/introducing_xr_tools.rst @@ -15,21 +15,16 @@ We'll be using this as a base for our documentation here. It helps developers hit the ground running but for more specific use cases building your own logic is just as valid. In that case XR tools can help in providing inspiration. -.. note:: - The current stable release of Godot XR Tools available on the Asset Library is the version for Godot 3. - The port of Godot XR Tools for Godot 4 is available for download from the github website. - We will walk through the step of downloading and installing it here. - We will update the documentation once Godot XR Tools becomes available for Godot 4 through the asset library. - Installing XR Tools ------------------- Continuing on from our project we started in :ref:`doc_setting_up_xr` we want to add in the Godot XR Tools library. This can be downloaded from the `Godot XR Tools releases page `_. Find the latest release for Godot 4, and under **Assets**, download the -``godot-xr-tools.zip`` file. +``godot-xr-tools.zip`` file. You can also find it in the asset library with the +title "Godot XR Tools for Godot 4". -Once downloaded unzip the file. +If you're using the zip file, once it's downloaded unzip it. You will notice the files are held within a ``godot-xr-tools`` subfolder. Inside of this folder you will find an ``addons`` folder. It is this folder that you want to copy in its entirety to your Godot project folder. Your project should now look something like this: diff --git a/tutorials/xr/openxr_settings.rst b/tutorials/xr/openxr_settings.rst index 2decd667f..064363102 100644 --- a/tutorials/xr/openxr_settings.rst +++ b/tutorials/xr/openxr_settings.rst @@ -246,7 +246,7 @@ come from optical hand tracking sensors or any other applicable source. If your game only supports controllers this should be turned off. -See the chapter on :ref:`hand tracking ` for additional details. +See the page on :ref:`hand tracking ` for additional details. Hand Tracking Unobstructed Data Source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -303,7 +303,8 @@ Binding Modifiers ----------------- These control whether or not binding modifiers can be used. Binding modifiers are -used to apply thresholds or offset values. +used to apply thresholds or offset values. You can find information on how to use +and set them up on the XR action map page :ref:`here `. Analog Threshold ~~~~~~~~~~~~~~~~ diff --git a/tutorials/xr/setting_up_xr.rst b/tutorials/xr/setting_up_xr.rst index c53eb7c12..e97b74a15 100644 --- a/tutorials/xr/setting_up_xr.rst +++ b/tutorials/xr/setting_up_xr.rst @@ -48,7 +48,7 @@ This also means OpenXR needs to be enabled when Godot starts in order to set thi up correctly. Check the :ref:`Enabled` setting in your project settings under **XR > OpenXR**. -.. image:: img/openxr_settings.webp +.. image:: img/openxr_enabled.webp You can find several other settings related to OpenXR here as well. These can't be changed while your application is running. The default settings will get us started, diff --git a/tutorials/xr/xr_action_map.rst b/tutorials/xr/xr_action_map.rst index 8aa6a16cc..591888225 100644 --- a/tutorials/xr/xr_action_map.rst +++ b/tutorials/xr/xr_action_map.rst @@ -17,7 +17,7 @@ and binding these to the actual inputs and outputs on your XR devices. As the XR action map is currently part of the OpenXR module, OpenXR needs to be enabled in your project settings to expose it: -.. image:: img/openxr_settings.webp +.. image:: img/openxr_enabled.webp You will then find the XR Action Map interface in the bottom of the screen: @@ -480,6 +480,8 @@ to use bindings from one of the more popular systems as a fallback first. If you are able to test your game using a Meta Rift or Quest and add this profile there is a high probability your game will work with other headsets. +.. _doc_binding_modifiers: + Binding Modifiers ----------------- From ac8ea10c887c4bdbca316c138d9d334cdeb0d419 Mon Sep 17 00:00:00 2001 From: skyace65 Date: Sun, 13 Apr 2025 21:40:44 -0400 Subject: [PATCH 023/263] Update CPU optimization physics interpolation info --- tutorials/performance/cpu_optimization.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/performance/cpu_optimization.rst b/tutorials/performance/cpu_optimization.rst index fdfd579c6..933ad0729 100644 --- a/tutorials/performance/cpu_optimization.rst +++ b/tutorials/performance/cpu_optimization.rst @@ -270,8 +270,8 @@ that feature real-time player movement. The solution to jitter is to use *fixed timestep interpolation*, which involves smoothing the rendered positions and rotations over multiple frames to match the -physics. You can either implement this yourself or use a -`third-party addon `__. +physics. Godot has built-in physics interpolation which you can read about +:ref:`here`. Performance-wise, interpolation is a very cheap operation compared to running a physics tick. It's orders of magnitude faster, so this can be a significant performance win while also reducing jitter. From 73688d34d802ca4fb5151c3c91c928ed8741d46c Mon Sep 17 00:00:00 2001 From: ProgrammerOnCoffee <171874668+ProgrammerOnCoffee@users.noreply.github.com> Date: Mon, 14 Apr 2025 17:39:55 -0400 Subject: [PATCH 024/263] Fix typos in warning system documentation images (#10849) * Fix warning system image typos --- .../img/typed_gdscript_warning_example.webp | Bin 9088 -> 7176 bytes .../typed_gdscript_warning_system_errors.webp | Bin 8364 -> 6572 bytes .../typed_gdscript_warning_system_ignore.webp | Bin 7440 -> 5836 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tutorials/scripting/gdscript/img/typed_gdscript_warning_example.webp b/tutorials/scripting/gdscript/img/typed_gdscript_warning_example.webp index 08e3af1904f0677fe7ed7518cea30a123d792eff..116f27543743f56219a938ef07f90f6f74258f84 100644 GIT binary patch literal 7176 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 K!Yx1eh5!H>h5D^)L(=9pB9WS zzTv6Ltoe_pug4$zmPG{s)m0^~WCBzI0000?j79?hK>$zzAONU95R^136QfZ<07_IM z03ZOMKq+xus3-^l1|Wc_25#Zoy+1$r_Pr0+`U$<&P3jYjWi}Q`F0))D-qr?F>rIW% z55`uEwMez_c`f9%ujCft0B7RFlQ<`i#8dGEaq6805>Leu#94IW$RvOe;2=&s6-VVk zCayeSyORb|?=(`Etk3|qP9T9r(m+6MJOs=RqLusk5%D9 z1P}xOTrg6?vgAl~?0T-Wsc?2=(WG0lRHAX4roq$^nz=P(m0UM+6Q!bYSXRt^vh>Lv zU+YT|hc$6rljaT2e1nk~2zR5GgN(b8wihp+1wz@@~eNF!|7k&zWVvk;4miM|q@FzjdZ9J{w508y(pWp{vo#r=HI5O7 zDm2MWOqDA*)pw_RBfTN`|NaO)U!}ANg#|$z{|7Z65&eh6Mv^4OB?k2{+f*a=KJx#~ z;u!G>;|+#<1S0n&yRzf9dMWiF_*lJz2Ig?bjYy@mc&2BfD0shuxQ_0q8y0$~cvxLII zQ`zJZ;HZDb-~!h_W}otJGc!V1L&;)5eH3mvG4XEzOhOTt-p>HRuYrlGo(lkEXAX!o za|Ouwz`>)R;FKWi064;#naMy35ll-UFFTfWKoS$+Bft(7%Z?{F?h+?`LojR_z={JL z$dbh?rWgfwCM0})GaOgQrn2Kv1uUF;AsLQnGWkRmc9!@x9NYt74BW9pPNdHatf53q z>Hr*J3Bx}qFEL%fHkgo3n_u_%vDT8&+nrQmPo{8Xx5O-y836Mx#S%v1Z(Ui*&I%1? z&z8UeCrFj7q>9Fjs-%ljEHtV*@}+H^jyX@}=Gw(G#u{|Jxc~I|BNH$mDoXKV!QFf!&jt2lC1&Jd zCr%5VJP>T6jGJ^DxtMqzt4U6?i)F|0^!c3)*mqVKD9LwZecQKz*_5b?yTE8BQh)pily|5dfvT&=LjUo`5R>Xip#y#=vM) z(oR0H%)R^FQ}4h-g(_pi3o%h5ZI69E0dVH3Qvl4nP!nP(fcmJUD2Y2z69!ovP&l64 z3y%F_2yD35-NG2GNGJ)N~u$NwP`cdGRjTUG`D+k7ZTS5QJh+ z_ZvsKsW2hY0za{TZwma%@L&I6+s!8Y6x$xPC-B!Yzrg6XxI60DPL))q``mGW zV23ePO=t+tj;Ad?c&kJx(d0kl_y2!9k>9}NKPTur0=jJppE$$+2LA=xHgQQq^=w8d zmFMXWf*)L0gA8a2!!fTZscCe3EsIZ}6aV^eD8OG2hkplD=9W#CxR>0%mBk6ApVid< z5l6`V{ND@eMwso)rGKpDz9qje`v3j6xVBX04?{VpYlKxoW?T})CiB26@=rkG=VZo^Ol)F{fdZT~=Og&wuLNQjcjy_ByN z>~&8t2n8{+v`RFlQeLuJ08{4>J-GJSwta#SPp!RqXp#xZ6D9js0Hb@1JtS>0=KdNq zx*Tuc0*Ghz=8lA1a#l$C^}AXBc0*?e5+yTl|KPvvx0Lc8*oM(_+Ze<6zC(s#ctBzQ zsq8^E@jSL{`JW$kPs-7nc;hRQWsOes5C0JM?VJFYlNDLC?YI+&TID&|EyfX?A{O8S z!-sqH!URj+OCIsxW>75X^Rm~`+%*O#-RArmrI~L1QwmsvnQoZY^;_;Qs~q$4$WWmmOzL1AO;}zw{ZaIx+H@=PRG-hH0e&a}LM+4fFFkM?*9@}sAwE*88jjHqxMTuAgpml>}cwB&WT=L(3=`x_j z`v-g90pezQz$+2VI58ZE_^TAPXXl-ylM;MzMOE!j1u3y3qLQbkHQLGnFxtc5dC{44 zE}LBaOt<)6V!m1{C{>LZyQctE_14ilG^N^WRMiA9JwxivVPFXOt0f&5j`vR55vVzS zVenniRRusMf85ID^BF4j9M4%ph$mC;my&tFEJx$!6(DXYaU~fSq~A>?OO%x((?Iz9 zs;g|fw8$S*nCaHc0F0O72>`nm0M?KUAp44*v`GwofWKy_G!1yyO5l)0lXwpp;B?d%b;i> zMJ`iSt#`>`AW0#YDfagrT($;yyJeU(~##g=w9JhQrS?#!IROgB})!c2Q| zIhQmng%W53W@+%RKxrYu<)l*R0iW}U)tA(YNr*IWpgzArtMaK81%^T_ZUTtDk8?=? z7d=WMQ{B!m_`8Vbr29UqP-vvR#C2b-r3r{trc{?|ozRbAVxz3mZj7i6dG@DeTPCQN z-^q{2F=Ukz=Lh2`TczxA$D>q{X~T5*tGvh+sLgb1Z!|_zwVQ|vswq1f%@ThI_MOAy zy@UOi$OSklxpJOmm4l-;RPvHnFM5=Y$kW_D$x8N;Kj9%Avm18S{rk-@S>&DB55$VOAx_jN2my2{` zp{E;TuB98x7?EDga`$@jZ^<|Qd#PCR`)ow~_v$O1`5qZ^MEv*4r}*`^V;@eQiErQf z70dB)MZYN(cI1p<&&3Uj%EFw|7Wye;JQq;pSviRWnIa>{yp_;USO}UiR}2+-ZW>c z(i>*vZwb7_Dm}dSNiGQGMm4lA|CM#GJ5L21+CW~E9kg;bw$9(ydm80rz8!KbD{ye# zn*MqLWu6u0s}?pJQKR&)o6RS2^VlFNdQI+I&xWHvJ;R!wWu;ecEJvPw)A-nzf=wK_ zt$dUI@z$HX5ze|kelk7J7lI%Dd--Nr5qG2BlI``dzwBR)rKdcV+QwUZP3yTz>o5IN zn)SBWmA_#XS_PIkbJX+C-s<~o>$yHSbuG(EhKL7nqG)UZNi@vA4i(*qrsnm}7s0=? ztjd1Mb^Ry#R{#6T+#OBM2fB$}uT2~)BjfeA^;L|bO0~eL8tcyUFH4CEgM6X6kp#Ds zihMZ5z9zVfY{T#9r*PTdQFwnHx*;d&$X~zRZl8a7&yur+m~x0O+k>=?pm{{(JS`#()2(XN2(vLq2jI0aCa5+we)MMojIpVwNGRl*r^| z=NwD5Y)1zM#Cl?v!Scjdj;HjIFKF<|;`gWHU`ilX8U$e7O$#!LtimHHe(*Y+R|Kug&JOoM7U2Hu6V zu{_Biww(~teigr9m)SV$c;C6Ox&m$o&q^+lE#Jt`TO9))H_4}=R690s(|XRL?Pmrb zyLh-4qJG@vn_GCuxMnqt+gj-FM5_kANPTi9vT!`v8J6Dkczm!Nt_Ob~Qoc@4H{WLi zhJU@>wRv<)~Vv9D=#f^4M5lmWkS|8)QP(5ucywb3@)pO3>VD4%_(FkR& zYZ<@$xA#0(G98}9qXAgxb`ybDqJuFuMM?WXl!UPbUfjsLSI1OffD%hzp1Hhx0 zSRB@YAi{c|W7*nHg0JN2x^L}DbGzZLo>S6GSLx*P{18{%>0`dS{18eIrbn8yV6L&_ z1U`;=ENfeCTF>+pQM{$9Nxi$>Dl+T3n|DBI$)q`%}lRZ zVstib+0fK`XgGA9%tT^*62x>DUDqBu#A`y#bb{6#{4j7hd|AoE#}@^9hy~rP4l`$( zu5$$RyY0`TzO$$|cZoVyCX3~2&bMs*&h?D|FBE1fJTqn-EsWbl4_ zSJ$E8HPcvQj*buIL{@qwb9+cW4_tINa^Ka``&J&G&3lZw9~hzG(0P*ZN#Nm_xO=PxyM;{x(5F5EYL@}$67V3I zFP9eUIa01fGej(J?cGr%f-6{@b&zv0+&W`^khkCqi+7`#Ic4UH5BFK$hzPoAV?|lw zF?zZs_cSS{eg?k@XbzZpKLRvU%sKxX5&zmZW^NN9AtD4bGj>P)nqVW&%*`I(>(k!J zr@Gswe_>#@H1Ev#_)t!)$gIkeA+o^S_86Z{Rmt;JppS=x=Sc!5K~9%gGV_8I)avoDPh1q;z3&SC)Vi3$!;V}xZuv9mC<>-U&Ei;T5mb(DtaCpiXsX^Pukt!Z_?l_U&miNuH=P$5tLg@3ZHr-F|NIl|nuNYY`bh)+f8y z*_Gg|1Buvrpux-^Zn)(OI*!}IK1RV4MP>O2R5!z>n(W?)Bihs>jE zX2{il;@0#xfPmj|9BC8mE;HANkPr$X{KfU5+si<~bB)zwRXUCnkZgDJ5FTE0oM(J| zC?^8Oaj%WtG4q|w;j_tlX`V-k;XcWZ2s{a5I(T)?N&4p=H!JXo;< zw)u0?6WVK=&d_NKIrzA<<#ASKR z#yg2M!Efph!2@4zEU&8B;B6=&MH<=)$B8ggPGDy zrp5$paRz65_f@`)Cp|eQ7JAU;Hk0&5$6*jUOmyi+b#OdK>Hr9tPGV`zFr}DrWFK)k z+$`&L(vmKg#Hs~d2i_w45RVkRs9I{>VMYJpC=*UHM^@XVw@-FB%SV#JdmBq;RdT-V z(RTrxOKUpoym%(jr?|GM+6zK192u!YGGxnBi!g+c*_x003jE2(x}Fa`{Zo|7!mXWu z=+(tkkHKgTP3%xy?)~ds%BOoSu<648W~Mw6~|EPtaul14y&|yYM%g z3t8WO$2^ns2JD1g2f7ZN%O2v}EziHHV%%x^Lh&5)eKhD!pE~=FG9Hs!(q`tP&}6Sl zyIP%Wq&>|I`5jf)T&I;~;#S)7y6FiO@?pO*K_P^eo@b+9A|EN6&c>2z9uG$#5~Gu#rn?%r%^QQ@aQL#4 zhfiD-V3G{E&0A(}FI~q5-%)xcT~sbAdPfbxLW2;>;5?4~^H;I=_xpN}mJUmy#`ew1 z!ow>oqOPY^(m%dmHDsnfzI!$Owms8d?kksKooScoKuyzklg;Idh4(t0{wJK^NgLy5 zuktv+3LS|}w^ib^o_c3`Jh zzB9#34XgQz%s8y_=dGZ`de4f}`wDRGmr5ZYUoV=lEkZk?zx*eOtnn1B09JkxswmZ;tUO8=8}A= zwySC&Z&*Lv7L*@@>X)>K4JqY}8MQ@X`;HZyXW`pDT2^DJq9=nW1yS&bNGV%H31fP` z=PE~ehD{WrqJml@B*%YlsK~TC`a78NGz>{T^x#M=wjNm|Y?{Vh2ykJi3^3?8l zQc86cnuWcs5=69SGD~-D1SwTbGljz#D7>K2C$W$_IA@*>-0(F~9vN*nx^5pgW0o<% zo!7b$H3Y2jpl%B8^qh{lTl})Vdq=P4Q*h^76guHUATqCws#!#o0v9}BYNCWO4a^Fy zl{Dif3J!!?BP6#|Y6s(}2!hi!RwiKJlAD=KlZ~}3o7u$=nl}8D zFL$_T0bh~_;nV^Xr639(04`y`x2@MqqKSe730fnJ$IHl1W7(l%QzlEm=z-*mssPf3A$4mq?1fM6a@c=l)m%ko`d9+kY z=r@fh1tCZxN*GfcAetyR5NeH(-oey;Fc3~hS%lq@A$!TAeQr$;d!!(NZp{cSr$iWB zcrnmLxr_Kl?5EAaR7Ais#CoX41ECOK_Lc@PZzbqI{;(GY>@Jvb2?HaVC|V%8H9`vO z<0*Lnr=wU~)zA}ViJWY2Rr&PYK0*2ds5K)r7&1>B3NE}D>Y^lNoY?mnsA8G=$65M9n6aR~z>nkYCB(HfaV8|YJ#qfDp|;dF$wXL2oq zfdc{5U|^h|`x_?ww-e;->7IgHGeVKA`-ekG5f@&Ndi!a<7vY&VGjCL)JaXwU69Ksy z7bAv1H6GYafg!NO^2_*dWCBtdA+RkXa0Ch=2ufif3fV!-Le%3j18XXF5%?Qok1Kn7JA}+k(U$J%F;QWc% z4!dR=mq!4q8M8Ei7y{LJU^fMZz{bzs7yIpe9skAhkLvq9zEU~%kA;T-xMjZX--GvK zbN4;StN-a~UufIYepexDWaVjUzYc%i*O>bDo{#OSp}KH+7E0+k{c-3kvOVqTPLs;6 z)6)_mqGBJI3A-X*3L3U8-B+tqvbtEngM>5=v!40c=^2Z&)p|H#I~DuY8|gp@^Unr7 z;lB{d*WQbC8yZ8RqHC>Lh6-#y+pucI%H%#b%TQnK;3BX9s0){M0^+@C!cA}$vwKwU z-lMARE3rLoQEZw|Ti5AnNjNk6(!esB9*Yx4M zALW1hO$e|260IM@+ssfwl-dH8=(^n&v5`ziE?&bixwz+9k+y-QXF$f6W!OFiMOQou z2to8`9W&|=9u~IU?j@rz#0e4G&v0b5E2Zp;-;WQeK_$XA&qn{Ojfl{`nb{t)rfCjH~MS z#9iQxWIB5B8t#)$_f+25$Q$UMGBd|_nNj;R)nvw_fDlA~Hs*Fl)s^u1C?4qJF!+Q} zRga1cf(Uc3zsr(F*l2xEGLx2eV?h*q?_~xfvM|G}7#au1deN@YD*9<%$8nB}EV`!ThDu{|2ra7rn8_A|8WKb4Gv z_Gzlgj7QN>%~*ICg9Cly5)Ok;2%#ba!rW-*o~Y3(Hf6d{yMBz|lC2TM=y0nX0agH< zq38lJGed?h>O`ub42TFpW8*l_IoT0~Ic_3UWWYdfK-6dz>o8rYZN<>(q03^L%Qpv{*UER~Sv{b0@?OlO4MIQaSs z2z!HgF&MGU%#Wy$vsPjzNS$EunxA%RpnIwdz7g%yRFfHw0+7vEr>C<4G7JqzrjZdL zQKMC3pdmYQu!B0mF=nCb8D;6tKr7N1(M84QMO+qppsUxR*I|1aDoslexl2!Ddr$Re zf}4UC<~t|6gf!RYYTe495W3c zWDImq;T_RFO)Z&;QKn0(87qLpkgk~-M@9s>MX0fN6GTInLfw_&QI?oHB(znI-MZjG z*%kxAc@dXo78cyS4%^d)(%{;So?NA;5qs@SC*q}`UDbnOj(0qsB&2bMr#OjoW}>6R zL_5wz;KR-vRPY^SIw|);2rmZ1+ssfwlv;e*<7`VdsEuUP6MFF)?vrlpnd(k6FYcbA zy{@=@3W~0H6c7S8V+C*+jM#n#BO`*`BE;CByo(yLMl7dgV7+a)OTk;^h!ts9UaMGj zZ_0(Q5I!&Bvb5a^6LZ7f?JKZ7ZJ?>SltPJ*tih?s|0v47~W=v3ZjHkGuW*zZ>f!BQ=448hGTMj zzv1;B*+BP{^*MKO`xF#i@hG76ikh(^C=7wveug4LbZ#MX=i1WUM-5p6`o45IGE-+T zQwVsg9A1$I=Ize7T=)v%^CB+GSl%%)H}g{S>TFN@<|1QFZEWb{-w_u-N z?rk#(=6=n#r~M37k?qPoYw}kYufsOAwUbxMPU4xqUIf6c{AaJy&%ZBzytk))k3R%@ yzsJkh2)$1KYlrXoCEs>aZL{+oW_#MkfB)~ljsG_Oi}-Kjzs2O}%=fsca?}7h$dxMq diff --git a/tutorials/scripting/gdscript/img/typed_gdscript_warning_system_errors.webp b/tutorials/scripting/gdscript/img/typed_gdscript_warning_system_errors.webp index abe07ffa30a725903f41a382512ad22e4eb2c9f0..f9ac49f00d74405c08197c61123a13002126b34b 100644 GIT binary patch literal 6572 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 CiA*a1 diff --git a/tutorials/scripting/gdscript/img/typed_gdscript_warning_system_ignore.webp b/tutorials/scripting/gdscript/img/typed_gdscript_warning_system_ignore.webp index 227c3b030b2849078829f3df9854d2808239cd7d..1d6b2ecb0850cdd0c4c2c7e05434e26a206f8c5b 100644 GIT binary patch literal 5836 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 Oq2tYr Date: Mon, 14 Apr 2025 17:45:24 -0400 Subject: [PATCH 025/263] Document `optimize=size_extra` SCons option (#10845) * Document `optimize=size_extra` SCons option * Remove `optimize=size_extra` version note Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com> --------- Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com> --- .../compiling/introduction_to_the_buildsystem.rst | 2 ++ contributing/development/compiling/optimizing_for_size.rst | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/contributing/development/compiling/introduction_to_the_buildsystem.rst b/contributing/development/compiling/introduction_to_the_buildsystem.rst index 557db6a1d..4e0138f49 100644 --- a/contributing/development/compiling/introduction_to_the_buildsystem.rst +++ b/contributing/development/compiling/introduction_to_the_buildsystem.rst @@ -237,6 +237,8 @@ Several compiler optimization levels can be chosen from: optimizations available. - ``optimize=size`` *(default when targeting the Web platform)*: Favors small binaries at the cost of slower execution speed. +- ``optimize=size_extra``: Favors even smaller binaries, at the cost of even + slower execution speed compared to ``optimize=size``. - ``optimize=debug``: Only enables optimizations that do not impact debugging in any way. This results in faster binaries than ``optimize=none``, but slower binaries than ``optimize=speed_trace``. diff --git a/contributing/development/compiling/optimizing_for_size.rst b/contributing/development/compiling/optimizing_for_size.rst index 2cabcac11..32574ee2c 100644 --- a/contributing/development/compiling/optimizing_for_size.rst +++ b/contributing/development/compiling/optimizing_for_size.rst @@ -89,6 +89,12 @@ To enable this, set the ``optimize`` flag to ``size``: Some platforms such as WebAssembly already use this mode by default. +Godot 4.5 introduced the ``size_extra`` option, which can further reduce size. + +:: + + scons target=template_release optimize=size_extra + Disabling advanced text server ------------------------------ From 398a4dbee30ec0031f5bf8a610a6a79a13c238b0 Mon Sep 17 00:00:00 2001 From: Jayden Sipe Date: Fri, 11 Apr 2025 20:17:22 -0400 Subject: [PATCH 026/263] Add Git LFS section --- .../version_control_systems.rst | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/tutorials/best_practices/version_control_systems.rst b/tutorials/best_practices/version_control_systems.rst index a09ffe9da..cf7111062 100644 --- a/tutorials/best_practices/version_control_systems.rst +++ b/tutorials/best_practices/version_control_systems.rst @@ -82,3 +82,98 @@ It is better to set this option as: Creating version control metadata using the project manager or editor will automatically enforce LF line endings using the ``.gitattributes`` file. In this case, you don't need to change your Git configuration. + +Git LFS +------- + +Git LFS (Large File Storage) is a Git extension that allows you to manage large +files in your repository. It replaces large files with text pointers inside Git, +while storing the file contents on a remote server. This is useful for +managing large assets, such as textures, audio files, and 3D models, without +bloating your Git repository. + +.. note:: + + When using Git LFS you will want to ensure it is setup before you commit any files to your repository. + If you have already committed files to your repository, you will need to + remove them from the repository and re-add them after setting up Git LFS. + + It is possible to use ``git lfs migrate`` to convert existing files in your repository, but this is more in-depth and + requires a good understanding of Git. + + A common approach is setting up a new repository with Git LFS (and a proper ``.gitattributes``), then + copying the files from the old repository to the new one. This way, you + can ensure that all files are tracked by LFS from the start. + +To use Git LFS with Godot, you need to install the Git LFS extension and +configure it to track the file types you want to manage. You can do this by +running the following command in your terminal: +:: + + git lfs install + +This will create a ``.gitattributes`` file in your repository that tells Git to +use LFS for the specified file types. You can add more file types by modifying +the ``.gitattributes`` file. For example, to track all GLB files, you can do this by +running the following command in your terminal: +:: + + git lfs track "*.glb" + +When you add or modify files that are tracked by LFS, Git will automatically +store them in LFS instead of the regular Git history. You can push and pull +LFS files just like regular Git files, but keep in mind that LFS files are +stored separately from the rest of your Git history. This means that you may +need to install Git LFS on any machine that you clone the repository to in +order to access the LFS files. + +Below is an example ``.gitattributes`` file that you can use as a starting point for Git LFS. +These file types were chosen because they are commonly used, but you can modify the list to include any binary types you may have in your project. + +.. code-block:: gitignore + + # Normalize EOL for all files that Git considers text files. + * text=auto eol=lf + + # Git LFS Tracking (Assets) + + # 3D Models + *.fbx filter=lfs diff=lfs merge=lfs -text + *.gltf filter=lfs diff=lfs merge=lfs -text + *.glb filter=lfs diff=lfs merge=lfs -text + *.blend filter=lfs diff=lfs merge=lfs -text + *.obj filter=lfs diff=lfs merge=lfs -text + + # Images + *.png filter=lfs diff=lfs merge=lfs -text + *.svg filter=lfs diff=lfs merge=lfs -text + *.jpg filter=lfs diff=lfs merge=lfs -text + *.jpeg filter=lfs diff=lfs merge=lfs -text + *.gif filter=lfs diff=lfs merge=lfs -text + *.tga filter=lfs diff=lfs merge=lfs -text + *.webp filter=lfs diff=lfs merge=lfs -text + *.exr filter=lfs diff=lfs merge=lfs -text + *.hdr filter=lfs diff=lfs merge=lfs -text + *.dds filter=lfs diff=lfs merge=lfs -text + + # Audio + *.mp3 filter=lfs diff=lfs merge=lfs -text + *.wav filter=lfs diff=lfs merge=lfs -text + *.ogg filter=lfs diff=lfs merge=lfs -text + + # Font & Icon + *.ttf filter=lfs diff=lfs merge=lfs -text + *.otf filter=lfs diff=lfs merge=lfs -text + *.ico filter=lfs diff=lfs merge=lfs -text + + # Godot LFS Specific + *.scn filter=lfs diff=lfs merge=lfs -text + *.res filter=lfs diff=lfs merge=lfs -text + *.material filter=lfs diff=lfs merge=lfs -text + *.anim filter=lfs diff=lfs merge=lfs -text + *.mesh filter=lfs diff=lfs merge=lfs -text + *.lmbake filter=lfs diff=lfs merge=lfs -text + +For more information on Git LFS, check the official documentation: +https://git-lfs.github.com/ and https://docs.github.com/en/repositories/working-with-files/managing-large-files. + From 4f4b6810c68570cea43492da26455921e0852e72 Mon Sep 17 00:00:00 2001 From: Booblesnoot42 <108703193+Booblesnoot42@users.noreply.github.com> Date: Mon, 14 Apr 2025 20:03:23 -0400 Subject: [PATCH 027/263] Change network termination instructions (#9087) Changes network termination instructions to avoid issues involving unexpected network errors (https://github.com/godotengine/godot/issues/77723) --- tutorials/networking/high_level_multiplayer.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tutorials/networking/high_level_multiplayer.rst b/tutorials/networking/high_level_multiplayer.rst index f36794a45..ccc90c512 100644 --- a/tutorials/networking/high_level_multiplayer.rst +++ b/tutorials/networking/high_level_multiplayer.rst @@ -153,7 +153,7 @@ To terminate networking: .. tabs:: .. code-tab:: gdscript GDScript - multiplayer.multiplayer_peer = null + multiplayer.multiplayer_peer = OfflineMultiplayerPeer.new() .. code-tab:: csharp @@ -416,7 +416,7 @@ have loaded the game scene. func remove_multiplayer_peer(): - multiplayer.multiplayer_peer = null + multiplayer.multiplayer_peer = OfflineMultiplayerPeer.new() players.clear() @@ -462,11 +462,11 @@ have loaded the game scene. func _on_connected_fail(): - multiplayer.multiplayer_peer = null + remove_multiplayer_peer() func _on_server_disconnected(): - multiplayer.multiplayer_peer = null + remove_multiplayer_peer() players.clear() server_disconnected.emit() From 69ef0202b92efd76dc763e73f46fefeb608de128 Mon Sep 17 00:00:00 2001 From: Anish Mishra Date: Tue, 15 Apr 2025 08:54:52 +0530 Subject: [PATCH 028/263] Update android_library.rst --- .../platform/android/android_library.rst | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tutorials/platform/android/android_library.rst b/tutorials/platform/android/android_library.rst index edcf55d91..0d3b5465d 100644 --- a/tutorials/platform/android/android_library.rst +++ b/tutorials/platform/android/android_library.rst @@ -181,16 +181,16 @@ Below we break-down the steps used to create the GLTF Viewer app. Example: -.. code-block:: java - -@Override -public List getCommandLine(){ - List results = new ArrayList<>(); - results.addAll(super.getCommandLine()); - results.add("--main-pack"); - results.add("res://foo.pck"); - return results; -} + .. code-block:: java + + @Override + public List getCommandLine(){ + List results = new ArrayList<>(); + results.addAll(super.getCommandLine()); + results.add("--main-pack"); + results.add("res://foo.pck"); + return results; + } The instructions below and the sample app follow the first approach of creating the Godot project in the Android app's ``assets`` directory. From 0d85d2e5a6619087f391e154b2249c766471542f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=CC=84vels=20Nadtoc=CC=8Cajevs?= <7645683+bruvzg@users.noreply.github.com> Date: Tue, 15 Apr 2025 08:40:22 +0300 Subject: [PATCH 029/263] Remove iOS simulator mentions. --- .../development/compiling/compiling_for_ios.rst | 17 +++++------------ tutorials/export/one-click_deploy.rst | 4 +--- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/contributing/development/compiling/compiling_for_ios.rst b/contributing/development/compiling/compiling_for_ios.rst index d9512d1cf..21fa461b3 100644 --- a/contributing/development/compiling/compiling_for_ios.rst +++ b/contributing/development/compiling/compiling_for_ios.rst @@ -59,17 +59,6 @@ To compile a release build: scons platform=ios target=template_release generate_bundle=yes -Alternatively, you can run the following command for Xcode simulator libraries (optional): - -:: - - scons platform=ios target=template_debug ios_simulator=yes arch=arm64 - scons platform=ios target=template_debug ios_simulator=yes arch=x86_64 generate_bundle=yes - -These simulator libraries cannot be used to run the exported project on the -target device. Instead, they can be used to run the exported project directly on -your Mac while still testing iOS platform-specific functionality. - To create an Xcode project like in the official builds, you need to use the template located in ``misc/dist/ios_xcode``. The release and debug libraries should be placed in ``libgodot.ios.debug.xcframework`` and @@ -84,9 +73,13 @@ linked on iOS; there is no dynamic linking option available, unlike macOS. Run --- -To run on a device or simulator, follow these instructions: +To run on a device, follow these instructions: :ref:`doc_exporting_for_ios`. +iOS exports can run directly on an Apple Silicon Mac. To run exported iOS project +on Mac, open exported project in Xcode and select ``My Mac`` in the ``Run Destinations`` +dropdown. + Troubleshooting --------------- diff --git a/tutorials/export/one-click_deploy.rst b/tutorials/export/one-click_deploy.rst index d116a9957..d67738a30 100644 --- a/tutorials/export/one-click_deploy.rst +++ b/tutorials/export/one-click_deploy.rst @@ -38,7 +38,7 @@ Supported platforms the project should be exported to. - **iOS:** Exports the project with debugging enabled and runs it on the - connected device or simulator. + connected device. - Make sure to follow the steps described in :ref:`doc_exporting_for_ios`. Otherwise, the one-click deploy button won't appear. @@ -80,8 +80,6 @@ Using one-click deploy - Make sure the device is on the same local network and a correct network interface is selected in the editor settings (see `Network ⇾ Debug ⇾ Remote Host`). By default, the editor is listening for `localhost` connections only. - - For running in simulator: - - Install and start simulator from the Xcode. - Device screen should be unlocked. - **Desktop platforms:** From 593264ca8ef7bc494c19d8afd2508a67d51f7315 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=CC=84vels=20Nadtoc=CC=8Cajevs?= <7645683+bruvzg@users.noreply.github.com> Date: Mon, 14 Apr 2025 19:43:49 +0300 Subject: [PATCH 030/263] Clarify auto usage. --- .../development/cpp_usage_guidelines.rst | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/contributing/development/cpp_usage_guidelines.rst b/contributing/development/cpp_usage_guidelines.rst index 9f0032a26..82eeee110 100644 --- a/contributing/development/cpp_usage_guidelines.rst +++ b/contributing/development/cpp_usage_guidelines.rst @@ -84,8 +84,26 @@ Keep in mind hover documentation often isn't readily available for pull request reviewers. Most of the time, reviewers will use GitHub's online viewer to review pull requests. -We chose to forbid ``auto`` instead of allowing it on a case-by-case basis to -avoid having to decide on difficult edge cases. Thank you for your understanding. +The ``auto`` keyword can be used in some special cases, like C++ lambda or Objective-C block +definitions and C++ templates. Please ask before using templates with ``auto`` in a pull request. + +.. code-block:: cpp + + // Full type definitions. + void (*mult64to128)(uint64_t, uint64_t, uint64_t &, uint64_t &) = [](uint64_t u, uint64_t v, uint64_t &h, uint64_t &l) { ... } + void (^JOYSTICK_LEFT)(GCControllerDirectionPad *__strong, float, float) = ^(GCControllerDirectionPad *dpad, float xValue, float yValue) { ... } + + // Less clutter with auto. + auto mult64to128 = [](uint64_t u, uint64_t v, uint64_t &h, uint64_t &l) { ... } + auto JOYSTICK_LEFT = ^(GCControllerDirectionPad *dpad, float xValue, float yValue) { ... } + + // Compare function for different types. + template + constexpr auto MIN(const T1 m_a, const T2 m_b) { + return m_a < m_b ? m_a : m_b; + } + +We chose to forbid ``auto`` in all other cases. Thank you for your understanding. Lambdas ~~~~~~~ From dbb454cd55015bc7247e992c007e9c4033a2d003 Mon Sep 17 00:00:00 2001 From: Volkan Gezer Date: Wed, 26 Mar 2025 15:01:45 +0100 Subject: [PATCH 031/263] update inspector dock --- .../editor/img/inspector_dock_overlay.webp | Bin 0 -> 12556 bytes .../editor/img/inspector_dock_revert.webp | Bin 0 -> 972 bytes .../img/inspector_dock_subresource.webp | Bin 0 -> 5506 bytes .../img/inspector_node_name_and_tools.png | Bin 672 -> 0 bytes tutorials/editor/img/inspector_overview.png | Bin 4262 -> 0 bytes tutorials/editor/img/inspector_overview.webp | Bin 0 -> 17660 bytes tutorials/editor/img/inspector_search_bar.png | Bin 718 -> 0 bytes tutorials/editor/img/inspector_tools_menu.png | Bin 4145 -> 0 bytes .../editor/img/inspector_tools_menu.webp | Bin 0 -> 12490 bytes .../editor/img/inspector_top_buttons.png | Bin 479 -> 0 bytes .../editor/img/inspector_top_buttons.webp | Bin 0 -> 4902 bytes tutorials/editor/inspector_dock.rst | 128 +++++++++++++++--- 12 files changed, 110 insertions(+), 18 deletions(-) create mode 100644 tutorials/editor/img/inspector_dock_overlay.webp create mode 100644 tutorials/editor/img/inspector_dock_revert.webp create mode 100644 tutorials/editor/img/inspector_dock_subresource.webp delete mode 100644 tutorials/editor/img/inspector_node_name_and_tools.png delete mode 100644 tutorials/editor/img/inspector_overview.png create mode 100644 tutorials/editor/img/inspector_overview.webp delete mode 100644 tutorials/editor/img/inspector_search_bar.png delete mode 100644 tutorials/editor/img/inspector_tools_menu.png create mode 100644 tutorials/editor/img/inspector_tools_menu.webp delete mode 100644 tutorials/editor/img/inspector_top_buttons.png create mode 100644 tutorials/editor/img/inspector_top_buttons.webp diff --git a/tutorials/editor/img/inspector_dock_overlay.webp b/tutorials/editor/img/inspector_dock_overlay.webp new file mode 100644 index 0000000000000000000000000000000000000000..440a5e176d0732a59f0a3aa584573f6cad5e23a1 GIT binary patch literal 12556 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 literal 0 HcmV?d00001 diff --git a/tutorials/editor/img/inspector_dock_revert.webp b/tutorials/editor/img/inspector_dock_revert.webp new file mode 100644 index 0000000000000000000000000000000000000000..f2978c174ef3a5e27f4c90f17283c3218bdfba98 GIT binary patch literal 972 zcmaKqZAep57{~u^iY87&Ei6PFb2IR8j)^2cSia_JKV$h-T(9a&ppp`k4z#KckzMT zL&?${sYvb*Ku9yl^GH%sq&6PCf@jk)tjRkGVD)CBEG=0mSDX;~I^l-^1i}ZtD#lcr zktNRNvR5DTL-67vgE8D*tLLn#3JMBM4B#cCj3lPiXeQ1lPOz9uIle<2$`q>#h#QG_ z80mn-Bb=^Y;!hkGdDv4_s4-iXLbZjGE-YHX>J`is8(GSUr<}+FR!{r$Pay{M)Bk|{F^;~DY?|-(t;sJ zDhyzu^7z611InSX+*^|-F4iM?1tbGLlWzBH6yRF}ELOYSzaP5Yi}e8i9nhg)_8V+~ zXpZ#iWi8T5m!J}GbS-P@TA=kB5H?z>GO9e^q1ywVMg#n?0|EsQ(g*k}m-nCEfeJ zH8zipSzVKz+eLhnvZs}G_9{+ZPHc*QYX3Fha#;ey-OdHa0y3^cp0jc*IPPJ!hw$>#CC%*JS=2S($^TW?U zvGs<-jlrw-ApOB!Wt+kjUYLdf-TA!98i?-J3vz;{!=1s``8LU$b$D!_nT=Q&Eh!lq YaLrlHHr}7FWBS>)*q*w|FMY@G2RSDD^#A|> literal 0 HcmV?d00001 diff --git a/tutorials/editor/img/inspector_dock_subresource.webp b/tutorials/editor/img/inspector_dock_subresource.webp new file mode 100644 index 0000000000000000000000000000000000000000..e89921df5eeaf4fb538d529596f7cf249a5b0b73 GIT binary patch literal 5506 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 literal 0 HcmV?d00001 diff --git a/tutorials/editor/img/inspector_node_name_and_tools.png b/tutorials/editor/img/inspector_node_name_and_tools.png deleted file mode 100644 index f7c10529327094a1139b9bf15db8b3ae76ee52d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmV;R0$=@!P)mdX#LBt6!lk$Kvb4OcueX?~;H0Opnx3eHlf#aao`s5*eu9s4c!q0n zfMRHOTW5+{UvN=ZX-H3DJVaPCJ5L}bF&P~w93bue00069Nkl!9Lcm3c0MYq~+6Ap`%!_5VM3XuVU`HB=*1y}%rO8{}~a>jTAko-M> zSHm(Jb)=5;WNQ#CE+f_LQ$cbHl0UYo;ya8Aq0M^v&l$R_S zU=;v3!YixXZUA1@0{|iL8-Sqw8^BtmkOxd&o(aIZ_zcT{lt2S+0E4U_pnL=lV3z9( zKn+N7CM`chP|H`2+`n=04&ZeS?WdFh3PUh;Opz0S{wIL)M^4QB+lV^=x%vT$ufYs( zs)2tVf!tV-{Hb35{|#W3bNv9ti%Jd`w%=oLr`w_{_g;rHnDzy@>MtkL?bCZ ztmc)k*WhF{r>dHkW%7vT!E?&_x(TwACZK{iA%rUc6p{h*lQIPVxCmK(SII31@|`t* z3n=nSL=6c}xR4-R`y6fn4WI!ufCkV28bAYR01co40Dk~58c8-@@3=Go0000=;%0fb+E>C zbo9`prp3Z|6lq5twe>BzZ`Vu9YhMt3-@(=t&}y`q4*s-UbbC8s8a#+*jV3y4U(PeOg7qvPV! z#j2b74=;}``DLF6m_1(Pkgc|WllaC%(koLtb)fEXy{3csFIDd-34z!9*1VHD?|eee zds~Ddj}WU%+mES>X!Qs_IH;y&*h9(wI4IffKLF)Ftbs^|;8g6!r4<}j0@}j3=5OP` z?n$Bl&~fF3b3DJHZXkqma!nL`hykSOGqNz{f}*;FT7)rwhND6GXuJpTgbPK6SxM$x z8L$#ano$voSSl9~{<=|qyvHdZE~|4k2$X+u&7qkeenpYwpzrvuTF~Th7C3!3M$mXD zS?0V*{+zKPpnG3>GD_!gg!yl3;Lzq~c!%yl?@d4~`2uUbwp_Q=hj zpq|7>GFn$wyFKuz7``LXDQEF6OR&#KSR$0EBlx8br|FCQ>!4nAFFf?CWKg?e4ufr^ zWN@EAnXVy^jsiQb$J|Xx8fP${@ICA6o2050w(B=eMI6HA-qpP1ze`tSSvO;t3z8mLx~FU7)qW3Q?53H(;{8E(C05J`;LveXGC}%K zW{v~XRoEYKTL7%WRa^het=(w_CsHQD{*H9zii^2b^@ND=sd#?PW*vwtKBofn5_caC zs&}6&e30*c7jvv!!6~PwnfIMYe3jj42z$`b+;Qj51Gd$o;fr%9ViHGF*Mz>{D&)Er zuf?kVlzPpbRAT_OePN?u<7C z2(PXw0y)LnD44?EEHz~+@b1VlOrhjdMJm- z0tQ7FaLsxsxF?-|2FE1FnMqpuo(RY5E}QuHX4eAyjmXhzU_7@)Dx9Li z5=F1#8`t_|`RcNs{}x#9nW-AcTpid5)0~gfGj!KkSgIRO%1o~mpq36r) zXGniwRMUik0+SZITKk1%7)aYYIg5ACh1kXE@ym_tMqO+6UsY`1xByUa zQJO$w$UdiXB-Oc0Ofjbg$Zt3i?tT@et1*|i$l3kgUmyO(Av2fT43zkaD!J6|rY22L zPp~)@c-g2xmwih23S!K#HhabpkEX+x`f0OH@_|1dbsDnFKY`TV|2YKMn}O;Dc|?Aj zf$FIgtf<8Oq^Ni%X%FJyh4xMjO4!(??U-qpJ3{dS2)SE372o>05aK?7&G{hyyG%}M z-jB^DXC(=C12n+2n@r-j#<%`RjoR2gn=p8(T|dR|!wETYZi4Ck!B@~Vc1|UO=@JDe zO0XfEL>Nr|k}o#L>yX5?dknexnnJwLS&6y1#0eQGNaHQ>i)7x425RwU9SWyzC%t8U zT90vzz;oR-z{1w0aLeO&NmyBR(}G!br=@GAgMUBzTnbrAFO&IuE5+lBp2N>Gs~ z$*2^I&;inzpK^dJMTsK)%o#8=v}2X?$KI4cSWT}_?f|W@F8sIU{uie8kO#E(Wt>g0 z-T%g?O`$&DW)s|o(gk-jc5*U_J(EVD+dNk@JTx!RB4D6zm*$_j-2%Xp;zy~<;%Qg6 zZ8lzI2%Kn+%Rb2vheONSAgPiW$|02mdeztL-g(%i*qg2|I&Q^usT7&KqM1l3iax4n zm`Ggo^$fu594u7Txt4zO^D21c5lv+H-oibT4Fr`+&QoE}^!U;JcYNe+Z_F8AcHT34 zp8kZtIHQtuD%N(~cd_y8V#nzn6U59Ia2x&93}hP~b&(nGKAGNs0Dj%bN;*?7e0NxX zMYuj_;H>h{26jvxJcUfpz|93Wb)eK;RR=pNmW2(@H$ELz4v;FjqLTbMK`rHTN_;F1 zi(XX44I(?fCfpLX?zrKW30*zfG;SPMM5=!)V~}U7r5<~3j8w@Js4FX0!J-0ol-1y8UZk&|)k^CI}`I92>o)IWcM6cjlcUsovcy`Rbcr!u0-ZXH2w&XnabMX8K&AWAs!#fi0!zhxL80vlWFdX@Pj32j;`B zB$8fK3H-SpY%dZaGh})0Z~VpnZx6uW>ic(Q^T#ZUNf_y>+*#& z0%QL%%)=4PZ#AD+pB8u0o)(Y%=LW{n_K8DDRkU|UDZ=D-RTR1j_zxzu8JdF4p@+2> zx?1MREWmBMR&Hn>;R`WViu=>_W8CB~P_zn%p6C-Lez8j@ae2l1-c*X(P6cjVgtQtS z6aj+MQ%c+>#n9_<>!w@`H;n#~?^GK0#GUIrE{OK~AA1=u0u}|VS^Z?=0^J$9%~^zt zEre5FRrkadaOG!;R})z0lJ@EQM7DA8O5SQZQsIL^1LlCxqcsMr38@9{?==z25|v=saEG92@B zJ(VjW8aK!O;+g!hP7ng)bw`$OUvlo;?K|d<+`vFZBrVt=B}A_8BQ{!RltN+9iUASD zoO0e0oWIA!Tvv2|-Ld_tn5X>;PX5f@h_LwW1Yo^veRymW6$%tUWa4lwe!RSuW=-dv zeS(s5b7nSh4cHe0Z5fq(d%Q;I^@(I`qe*^8J9XRIBv2vheObT*(<&QMsRR#V>VD)Uo)p zS{xR4dYJQiqqy~P-+rkcuMnM8t2sd^($*PjBtVP^7omnfgl@j6uuHZ-zG8qMWL0AN z`9p#^wld=TS|9T4HTyfTzAUsR@*Ao*e^KdtmMbvV1VrY$5@QiHXa~;-@b^rj0}8Z+(2A7dVutIw1f=TGMa4}@zYJ7fkqb; zOm7_);gzoUuGEk1Gc)_xLdMg|7-?C3(u$?na|kd6=eKN@q`u_lO2K$0c55Th2x5|oh{PwH?X zqDIFCPNBIzFEpVjV@c0FegzHEtiMrOG)2v!VAKlp?!BN@EKK=89TR7tAN01>Rnc%R zLPrPdb38O4mehZ7RDu1ML|}(b`zY5@zWXnE=g5-%)#>{==bs97baFlwg2T9teA+~K zLiMJ0dd+Jc`8>YmVfPH0$(Fk_Ej7caJ1_T1kY`Sj=r;lkLlu5zb?kM?=O^TE2`ZIl zt6AVE@Ni4&?KnxGE?VsBLfZmUV9a>z)SJ?74M1RXIybco$nJcWv?k1Ptep60CY!Xl zTWk}Jdr9~QtyExlrs&U%15ps32?#+hiTZyH(?X;T=OH~&g?t?YIMaX&qMMfTc6Im@ z!)>|z!(4J9Sp+q^F;_l#D20krW~#EagtS|qSyP2mMlo4~JrcXdsPDV|5!?M5C zrO*;Eu8X6%#9(6la?LUy3^(4nr#mw`$_SZO5o1ujHEcDh*Y2sxw(adIua?z-duRJs zNI*#Ks3}}k^i{Q&fka5nt!*3DIB+-dNErY)|MAo{qZJpvNCX5Cre&>J> z_4upK$T&`0a9%BTzvPdaz$B;_BwT;HBQz@RZpoMYFSY;9E-dl-m*t?&uL{1*`u?51 z03c#Jgz+5Q7V#4W^KFpn4@b->=dI1<%MiDX+DiLLGQ2d}z1x9e#4PmY1}T>jp+<_S zwqY}Le(0qguS#FpgI9~(ug!=e-R7Pg!gr-e0W%J#i(UgtYUo>sK8%g;OcD$LTPBwT zdHm{zTk)hVa`R@0$k; zsN98(a{w#?-dkY#Ky@+=m0Fg>@P0!a~F6%UanL)|M9`6 z_roFej!rsz@zi)eB0tM!l{W5!&5B}!rIxlPY5Ks%_l8!p<^=@8Q3gNUFl70J$YD%M z=h!W#RX;TZ-7E8Rfv2C}8iG?_X0m`oBcuOz27l;dCKp$o#54EYwSNxC3``(Bu0efh zDEiV?XW~_|#pKB`2KUuyUvrRMO0WGj4Ng4mH3MJEatW+kP@qZmwR230h=&EQHbMLO99Pk%WupvA|ugAuB*+pC$`1 zj+tnb&VMqZ7|2*V`Mr6VEuSucZfbiR4Pi)z|1RK`k8u(>=GE2?c-1Y)z=phMqtuRq z*UDqmWi&<*vEQ_gs5&1_u&Mmeh4bT}e;8AdmpTgL`mo+(YB;EHj>8UIwE`BKr0BDGT6x9{EHD3V$00!uZ0s}yW1xSgA zC}zV#Zvn8`R>szjFWv(H);3NK$`T+_O)YKGm%9K&05Sj-01tR+XzXYwry{QUjQ*dG zU(*1X=aC7jD? zW^jNe2$g4_^+tcmhtIOYo`pcv@!Z*Cn;*nodjFvuVP z0Dk%D>Eay#@G>3%c!+s=y3cufddLL;;1&UZZ#Mt7x6K9sxUZo4n1AaivjBiMfdD{# z_rG;U$pAn@2mpXPXJ_bO_$Lk=^cB{`1OPZMg7%FT0Dw6L0KC%qi#O=l^Ee=H1^`fn zawR(g0Hme?092+>-@5-x-H1?wfARMJius#AXy?ijLT88>#s4Ef?IlHnHAU)^uZt;_ zxk-z7_lwQk?eZAXHp?gwO_NVlnt(y^X?`JN^+cH=Qxj6wksPD93)~Bq!n_H`na_Iq;L7Fj zn7p;b!aEE-SRGSRQ&ZWX5*wtjBj>5}_wM6T!-?aHgfN7q=r@B(nC`IwRyET5>5wVk z#I0*>FJY+#0Tx-UYZ(`CLQ*0!w-ceB!u+EJ21HC z4-=1QFGw!GjA9>JH60pmwR{^N`#JVEsWI*NmjZr#x$|$@WwCKaCaOI6!F9E9)KYPf zg(S*7Sv~54`Eh-Yx7Jf8I}B9hXVyw_lu~h&w3y%E0T?(R*59sUuFt9*MxQyKjXV^= zOT{g54#HsRFT=8KwjnaT{k9u#^Yk=$0*<8Qws&=%=`fl(iEL?U@pM?ic6D_|azwUNz7 zDXF)QPwvl+5c{1~EN*MC-g+S>zqoPdPBi~WsUDrK@ajpyn!x1HMy;&wN`q=CyA-epI&oStKd6>9DMTTC~mEo{L+lbNnxkr

  • 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 literal 0 HcmV?d00001 diff --git a/tutorials/editor/img/inspector_search_bar.png b/tutorials/editor/img/inspector_search_bar.png deleted file mode 100644 index 2885c10ed8b1ad723538a1f8cef619496240c09e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 718 zcmV;<0x|uGP)jqP?4Lekgzf zaKQKJN3 z1;m=oHoyUW3jyOD4G!1t9crcrkN}SWbSwmn91Wf0Szt5e10Z|}SR|4{Pu~D5G%^6o zY^NX;43ILv3V2e0eWl;)%#o@$2@?Z-X z#X;J5U!T-sGzns(h&V#zi&%o|f1iT71Psdfw8#&=KTTam|%%B zK#Z>rFXSeyqf?*MVl)Y2Lgb{3Pt|Y10KPiW`vt472ML4gJ+0h~tL+i?>d`Tzg`07*qoM6N<$g0Xut AhyVZp diff --git a/tutorials/editor/img/inspector_tools_menu.png b/tutorials/editor/img/inspector_tools_menu.png deleted file mode 100644 index ddfb8602ea9a0ac629c6577dd67d19ad6e6ea713..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4145 zcmZWt2{@E%*hZ2Pqi9ItprQ2Hmn@-3mLbVDD2A~m`#ua#mc*1TCOMdneT$hvc4Hk% z_N_=`EspGyG1h-{{;qTW^IzBVeed_)?{h!z^WNX{e%E__v3Kw2u%F^P#lXP8uBUtJ z9s>g-n0~pj9-|}b;!flA#_g_wsrJ;=)Q8@ocisK%qz{cmQeO3DRSmJUye6$^Dz^at z2ev3BE!#Eouc#Mo&yq5to~DNU{``J)yH`MzvpdShDcI81%hc+TnVFfPsgv#|fX);_vv^x`{k>&)Phmw-< z4*zO4>iBuX+4(ryGTv?<9tV27i5iMo!;igSh1)u~;W)O*Y5$5E*%w6COpb!{?^<@X zc9Fo4cZ|xNli))2crSifHe0WMlZITkZ>u~@UGZ`$7iOs=G57m1Cqfywu~ zW_;JaRK-{>y;#7$w!rZxv1}-x#WXR7kY+Aj^Y2JuLqtpjlk7B2Kj!~FuCpG23lfrI z?k)uvp}^f?*O0@N6I__yM~b%r78QO*xyPr_EFUs((t#;!Xjd05ApHR=*g$4i9$X#g zIHzKtbShG_Pdirbq`}iVOBR*{A)9SxDC5d|e5p}(ZwOmYMD#gcQzrB`$jg>&fuvLO zdwI_>TKyJy`6Z~wRI^xn>ll84W1i_;tSKv-#aO(ff8=dI?J7Iy`XxhQ?H9Vi!1j3+kGr*K6Xp@BrnL9 zxLW_!Uo1<4$pHoTb8c|(+?ZdHH&G5f#ukff&k)J-$|&(-paf-@u;e6ro9&*-=G(i| z9#xh}WUd{WmhYi0QnX;BA9t6AGKp>9S2kfDP>lo#;vGyDquS~dI3x^EH_2_AXaRv0 z0S~Hw{+e^XPk4eSR(frllM<9u?#z4!$E-H!f^2Y98*q7eP+oezo7Nv#?QrdlZi^03 zM3BWi`#an}4ef1gZ!7l;L1PILF(U66_n|0;F-`$k@67SpW=cF`a!`#+2{7L`1kNFb zR4|0M5X64LYOgBR)feai83=b?b+W)uEr;aqi;c88!WS(S3PhwDs_g-#A+>mWi5geb zX`c~MQI*!g8wK-Au!b4myTKycDQWA4g0iz6PET5Zm_U8;b*oAD7)UTzWwQ~)U`#*$ zHm=x%n+c5mN z)Jx|@t^C@AvyOCz%z(BfZ-Z2gb=y57EfGsfW}Z_+CAR$;&mVcP!h3N6R{=BCN3g7$ zH4s59^T*bsV2*j{UG5@lKtIl#Uqb#7EW$x25F%$Y4tlk2FWsS;8p-rp6x0jJpJwFsr zU%WQtQH1=na*5g~h{CL~h6BmEB_cI9i^tmDTa(5yCXbd5zKl6HdM(jj&(QC3XWV92 zkRa5RltYgj)3cz7ib=hc_xAccX5q8bu`(HLcV#R(c_Keqwj()x;jV&TmMAF%<`S7t zcc%`z%@B%aQ}i=}^B;=iE`*7>;;xA~1YxF8ANUl$1p_8PQ7lK^CFEyvr>4{OzvzMv zm!=vBgNsiqgJ@gi*Q*Q1_Oe%`_lv?5n+XH62i?6F3kyA>ytz9sUG}y+m%1DmyLy=R z#tgL2`-GA8t!*&NBM~H}%N&XKTuTQ#z$Q%=8 z7q*Bp=^A7cm(3`@Q_2I^ZF3TUW#2=$V-4ZgrCK+zcXF=K73vT{1B5QZ-oNzvsocC3 ze}b(<7}qljEpO;vk2`T$(9diVTmmrWFAOgOe1wikNf>ok`YlSfE*CLJ_%?{B4{biiAb4^wT;2iv|YF~mbiTYHxp2oRxJ8+G$N{R!rPUfZ&SgExdway6G(3a}$%cLVVf$eUxfV>L(UdEd z>9#)hS=6A(5L zDnF1qf`WBn6~`oqf)x`ID|H}{KKS;^d6;+!4VQ@B@dTKlN6zPdg2hLRO8`xViNoUR zSCDrJ(mqD*t*%Xq2yD0_*|+81XaBy)2^%HDKj^kkLNy7bJk??@o zF4=&IZU8#p=9K!MQq3C}HyYb|G)fxuSpF)=rcKsE4uHvZINblKA3)4m@G)1;Ip~7#7`YM1L z&$}@jt+!cLq3UeVf$=MgIIkqsmO9y~s5*c?Om{!NgAxS~sz5Sr=Y?sI9hB_P&cs}; zZdj~3_IY&W9lh{L(LU`B+HOO5B<7zzMt{0aFOzO2AbhX;SHbv5#CMj1iLnQrzmTIk z3i|in)W$60QOfLNw8(FLTfH}&jrrqRE8Ty)!NmMnSAUWk-t7;~^p&WKv^3au?$evu zi~MpGg*P*7dTX*mQx3nlw@{kUE?dmG`K;rE4d3R#3#kM@c6@SJyM1qT-pa~iwGjhC zJ$U1}nNGY;X)cIKtknm($t?Z#&+V@VHE_tjFQOJhGTkheR^{ECG0t0WeI0W=A$9GK zDous{g||}X6`!n*gA47y{=*{FxyNjaY_+4b6p8oSRO{UpJ)Lf@4cshf%L)EQ(tiN& zZ;R;E-#*(-|LlxRd44JQOYI;LhD&T(Z53~JQ=K!G6yF2EJF7keOcGlu zkk7A*sm;d$AE8j1*pAkFon0xTT2I`RacEGX{6fxg&o6NAv(Vx%7OqHiUKlCjpeW_g z5#T*FMunj~UJkzofl*0fkzLw=%hC(Y(p)V3e03!2zR49q=Y2Kcd0pHU9_o}a&xrf! zoorq6R%|Qe7?f)W;aFk!o&~%vY+}*pCh%8vwsi-F@F;U80(j}N6#E67`9yQl5DJUQv1JSrITZzJ2Quy~&3 zBy|;i$$_WAzWkWN1{!*F7kA%Oz>P|VD_d3Sc%12Ghb89VhJzbl6J&RB+=^*h-JUpp zU|eMFI5BpfpdVRLw?NW@+DcJe#j)EfI8Yw$Kj=DiJ!GNz{|#Iy%GbJg3!?CF!KcUYiHT4mOFh; zf*rm@`Oy4&=V>$7ns(j%eGT!=HK&zfl{(V_9*d@E6OOGz?qFTOrAn~dK0W*(^LL2r zqOV;h^#Xaao>XX`0?WnLf1vVp%dt>%g74LSh3>_rBD=uCZcNZmUg!6-6z%9SO zpLJc{&>-C_k1V9fgv#gV{1(&r< zfuX=7v`1Aw{cwZb=osbm>>u0)N z?fRSh5;ho_6P$}I^Cv9n;kPCKOm49H4XGs;gOSANo|w)0(Kc^sY!sNNA%p=;dI<8a zjXgHK5+9FZ4;#bvI7EG+_t0fxts6Wz2g{+ox=`93X6i+$oId=es)gV?fL6Z0VrjLM zMm4-V(B&%@q31gA;~Tuz(A?sI#UoW@?U<_kW*fdik`5MMOjmW5MU9LOqzwAc;2f(1Gedku0COqPQ0RN8( A@Bjb+ diff --git a/tutorials/editor/img/inspector_tools_menu.webp b/tutorials/editor/img/inspector_tools_menu.webp new file mode 100644 index 0000000000000000000000000000000000000000..bae66f1f45f28934b73af6aa581bfa73c1af29c5 GIT binary patch literal 12490 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�Qss?qy?*@(Ne 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 diff --git a/tutorials/editor/img/inspector_top_buttons.webp b/tutorials/editor/img/inspector_top_buttons.webp new file mode 100644 index 0000000000000000000000000000000000000000..18bf212766b50378e530ef552119dbbe183c546e GIT binary patch literal 4902 zcmeHKk9QQ+6~4PblOl=7B=nR}WE>(1sk1x#E4w?gkdR+2B$_7M5K28VJ2ShPW@mSq znPdZoibpWvNK!zHRa1#_is(U03I?I3v{XzGY%R24K(sxnwN%hkA%dW6@67Hd*h2dU zH1C|*_sxCZz3;y7z58~z)>~0=dp5w5@&z^ZHLixq0B{#R83vdM;4Lk!=`rFf7<)pT zq)aRZkix25Te*N}So%F8?eCBdQy>#2K^n^`(dxPipT@p%`|Jc5w2|YK7VE~Gn_4q? zLE!)l1Tu=bsH`Ghj<_hMMm78s#5r6e%Ol>2_%0a}MEs6s_b2c<4F`3sFDgg&)t2Jg za?nl$ufzW9FxMzc$gv|QkC(z2-`J4AyoTE}EQOjeH@#^qoFat3TZerfKHq{$@Ip1z z00Dkz1`$G_0)>4TEeh1)_=21G=j#47=;cQ*5jgZHg9u2#>i(eZ0dla7X{!WmR^4Qn zvH)Pxd-3>%I|0%j1Nd@dJbv}rc>K%f04BT(@ayoHf20S%HG=kyW464l0Jp9M=zD$4 z=6?cUZ#%#@hoY>^>hny%Ph%he@agk-Zk7UMzYQ>XSwc4))5c-jNdO;eRrMCYlTQK6 z4r1)@-(=nC=rF3=f8`|g!;@Q8j$3NZ_)QwzKinhbc_%+O??}*n?!5=kY&Sf+DX+3N z>+Wmz%!i%vy1(>v=2aH@24=qb@F08o!psjxTAc9%^FN5kpIEbSxf6!nM|nU9Nmzq8q&cGSJR(vY_%D=^{f=~>Hf z8;r+qg+E`t`gz;D;$DNXob2c{dVA^OhkEjet|OCn@u!QIK`wsmn!XH0JE+|&A6=d7(?gT3pV9VfPBEvh`$_t;_2 zVn*H9%syXL=3A^jwXUgROD=uyRQscW?EALW zZ~Wj#?|ih!xN7}RSHCj&&#Pw-tsaT}s&rwMyzBWt__uGkb7b1iTVVf-?;gxwQrMdz zUflIk|J;}AH+Ar+g~}duknZc z?xE-E%34mvOYVU325&`<0dGHVAzp6)x8OB0QNOw}(P~Iy0!NI73HtHgj5yO^ge>f} zizo~2NY$TQ!z8_b5#OgL@h=b;Bsp4nSkN~E`~CP>5o;IHAUaz&1oQ>$3<5o3sZl0V!kC@xav`SG)P+6i?3WXJ>)kCs;#4j+2HM5x{bc)*KA+@PW zBeFo)O?DGamA8s5RuW^#e1NGft4Kz`HxJpUs!_&lj>Tf8n9UTCgJz4{?Kaa^v(-u= zgHl$8RkoE1E3;A&%JAz%7Ne>d2@_gG)*oqBJtWSbNKA@WSC0k`D<(Zn6Bm)pt!&h6 zG0|p8(z4aridx=+&dD@x$X0wSqk_3sP$JDTCzQ7cVRcr@o##eHJIdA;92BLf?t#jVvQ#lJCd*gy(MI(2Q~BHqqf1Y0VOH>{{^m=m-( z7}+FZ5RRqkfIZ-#SeCOmjWs zI{8`?V$}e0@mz~xJ`z)scAqE-bt4u{)ea~9FG!-DJ7_K2w$WCahG7EG^0 zlF+1QFniRH)y^Hd>T6>3GKlS3zM~68MUBWSlQmT*tVp7eNa!b;VYx(}3fm%}{s|-g$O;DqtaLnW z35$4x9d!l-zl)>&l;3G}QFgn_Nx5CP6Rg`2a0o>LZ{<*_gufCAs4-R+N`fd2Du9Pe zzrBcpr08=}%vhtKDT*pkw2QLXQYtt}Gv;pA3OTV1^S`f9AG@yTQ*^vZG&p)O%_GL! gxB}w}j4Lp%z_ Editor Settings > Editor Docks > Inspector**. -At the top are the file and navigation buttons. +At the top of the dock are the file and navigation buttons. -.. image:: img/inspector_top_buttons.png +.. image:: img/inspector_top_buttons.webp -Below it, you can find the selected node's name, its type, and the tools menu on the right side. +From left to right: -.. image:: img/inspector_node_name_and_tools.png +- Opens a new window to select and create a resource in the memory and edit it. +- Opens a resource from the FileSystem to edit. +- Saves the currently edited resource to disk. +- Provides options to: -If you click the tool menu icon, a drop-down menu offers some view and edit options. + - **Edit Resource from Clipboard** by pasting the copied resource. + - **Copy Resource** to clipboard. + - **Show in FileSystem** if the resource is already saved. + - **Make Resource Built-In** to work in a built-in resource, not the one from the disk. + +- The "<" and ">" arrows let you navigate through your edited object history. +- The button next to them opens the history list for a quicker navigation. If you created multiple + resources in the memory, you will also see them here. -.. image:: img/inspector_tools_menu.png +Below, you can find the selected node's icon, its name, and the quick button to open +its documentation on the right side. +Clicking on the node's name itself will list the sub-resources of this node if there are any. -Then comes the search bar. Type anything in it to filter displayed properties. Delete the text to clear the search. +Then comes the search bar. Type anything in it to filter displayed properties. +Delete the text to clear the search. +This search is case insensitive and also searches letter by letter as you type. +For instance, if you type ``vsb``, one of the results you see will be +Visibility property as this property contains all of these letters. + +Before discussing the tool button next to the filter bar, it is worth mentioning +what you actually see below it and how it is structured. + +.. image:: img/inspector_dock_overlay.webp + +Properties are grouped inside their respective *classes* as *sections*. +You can expand each section to view the related properties. + +You can also open the documentation of each class by right-clicking on a class +and selecting **Open Documentation**. +Similarly, you can right click on a property and copy or paste its value, +copy the property path, favorite it to be shown on the top of the inspector, or open its +documentation page. + +If you hover your mouse over a property, you will see the description of what +it does as well as how it can be called inside the script. + +You can directly change the values by clicking, typing, or selecting from the menu. +If the property is a number or a slider, you can keep your left mouse button +pressed and drag to change the values. + +.. image:: img/inspector_dock_subresource.webp + +If a node's property is a sub-resource, you can click on the down arrow to pick a +resource type, or load one using the **Quick Load** or **Load** options. +Alternatively, a supported resource can be dragged from the FileSystem. +Once you start dragging, the compatible property will be highlighted. +Simply drop it on the appropriate property's value. + +After loading a sub-resource, you can click on it to see its properties or adjust them. + +.. |undo| image:: img/inspector_dock_revert.webp + +The values with different values than their original values will have a revert icon (|undo|). +Clicking on this icon reverts the value to its original state. +If the values are linked with each other, they will have a chain icon and changing one +will change others as well. You can unchain them by clicking on this icon. + +If you are changing a property a lot, you may consider favoriting it by right-clicking and +choosing **Favorite Property**. This will show it at the top of the inspector for all objects +of this class. + +Now that we have a better understanding of the terms, we can proceed with the tool menu. +If you click the tool menu icon next to the filter bar, a drop-down menu will offer +various view and edit options. + +.. image:: img/inspector_tools_menu.webp + +- **Expand All**: Expands all sections showing all available properties. +- **Collapse All**: Collapses all properties showing only classes and the sections. +- **Expand Non-Default**: Only expands the sections where the original value is different + than the current value (the properties with a revert icon (|undo|)). +- **Property Name Style**: This section determines how the properties' text is displayed in + the inspector. ``Raw`` uses the property's own naming, ``Capitalized`` uses title + case by changing the initial letters of each word to uppercase and removing underscores, + ``Localized`` displays the translation of the properties if you are using the Editor + in a language other than English. +- **Copy Properties**: Copies all properties of the current node with their current values. +- **Paste Properties**: Pastes the copied properties from the clipboard. Useful to apply + the common properties of one node to another. +- **Make Sub-Resources Unique**: By default, a duplicated node shares the sub-resources of + the original node. Changing one parameter of the sub-resource in one node, affects + the other one. + Clicking this option makes each sub-resource used in this node unique, separated from + other nodes. + +.. tip:: If a node has exported variables in its attached script, you will also see these + in the inspector. The first image in this section has one for the Player node: + `Action Suffix`. See :ref:`doc_gdscript_exports` for more on this topic. + +.. seealso:: Refer to :ref:`doc_customizing_editor` for dock customization options. -.. image:: img/inspector_search_bar.png .. break down inspector content in class name, property categories that are foldable, and individual properties. @@ -38,3 +129,4 @@ Then comes the search bar. Type anything in it to filter displayed properties. D .. Using the tool menu .. List each property type and how to edit it .. For numerical inputs, mention and link to a page about formulas +.. Refer to :ref:`doc_filesystem_dock` \ No newline at end of file From dc7843fee9f6f72fa1e0bdf50c070ae1b75fe3e5 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 15 Apr 2025 23:32:27 +0200 Subject: [PATCH 032/263] Remove outdated reference to fog transmission in Environment and post-processing This was a 3.x feature that wasn't reimplemented in 4.x. --- .../3d/environment_and_post_processing.rst | 17 +++++++++++------ .../3d/img/environment_fog_transmission.webp | Bin 54854 -> 0 bytes 2 files changed, 11 insertions(+), 6 deletions(-) delete mode 100644 tutorials/3d/img/environment_fog_transmission.webp diff --git a/tutorials/3d/environment_and_post_processing.rst b/tutorials/3d/environment_and_post_processing.rst index 5f4a64ba0..3876e28e3 100644 --- a/tutorials/3d/environment_and_post_processing.rst +++ b/tutorials/3d/environment_and_post_processing.rst @@ -290,14 +290,19 @@ Both of these fog types can have their curve tweaked, making their transition mo Two properties can be tweaked to make the fog effect more interesting: -The first is **Sun Amount**, which makes use of the Sun Color property of the fog. -When looking towards a directional light (usually a sun), the color of the fog -will be changed, simulating the sunlight passing through the fog. +The first is **Sun Scatter**, which makes use of the DirectionalLight3D's color +and energy in the current scene. When looking towards the directional light +(usually a sun), the fog will be tinted according to the light's color to +simulate the sunlight passing through the fog. -The second is **Transmit Enabled** which simulates more realistic light transmittance. -In practice, it makes light stand out more across the fog. +The second is **Aerial Perspective**, which tints the fog color according to the +sky color to better blend the sky with the background. Higher values will result +in more tinting, with ``1.0`` fully replacing the regular fog color with aerial +perspective. This can be used in large open world levels to provide a better +sense of depth, or to avoid color discontinuities between the sky and fog colors. -.. image:: img/environment_fog_transmission.webp +If both **Sun Scatter** and **Aerial Perspective** are greater than ``0.0``, sun +scattering is applied on top of aerial perspective. .. note:: diff --git a/tutorials/3d/img/environment_fog_transmission.webp b/tutorials/3d/img/environment_fog_transmission.webp deleted file mode 100644 index 8826f8fc0e74678ea47f963a35c71fa64d0cfa0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54854 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

    d2sZYCA>qpuRt9RMLWslBRn*uccisDtt>G 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 I*M>CdRvF_UUjP6A diff --git a/tutorials/ui/img/using_fonts_bitmap_kerning_pairs_example.webp b/tutorials/ui/img/using_fonts_bitmap_kerning_pairs_example.webp new file mode 100644 index 0000000000000000000000000000000000000000..5fabd0ea8e562a9765100770cd87e8bfea2def1b GIT binary patch literal 8088 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 m=9d2`rAV?p0WVCO8L_+OWo0ma Date: Wed, 5 Feb 2025 00:06:58 +0100 Subject: [PATCH 045/263] Split C++ (godot-cpp) and GDExtension system info into separate categories, children of Scripting. --- _tools/redirects/redirects.csv | 5 +- about/docs_changelog.rst | 2 +- classes/class_gdextension.rst | 2 +- classes/class_gdextensionmanager.rst | 2 +- tutorials/platform/android/android_plugin.rst | 2 +- tutorials/scripting/cpp/about_godot_cpp.rst | 96 ++++++++++++++ .../files/cpp_example/SConstruct | 0 .../gdextension_cpp_example.rst | 50 ++++--- .../gdextension_docs_system.rst | 8 +- .../img/gdextension_cpp_animated.webm | Bin .../img/gdextension_cpp_nodes.webp | Bin .../img/gdextension_cpp_sprite.webp | Bin .../img/gdextension_docs_generation.webp | Bin tutorials/scripting/cpp/index.rst | 17 +++ .../gdextension/gdextension_c_example.rst | 2 +- .../gdextension/gdextension_file.rst | 2 +- tutorials/scripting/gdextension/index.rst | 24 +++- .../gdextension/what_is_gdextension.rst | 124 +----------------- tutorials/scripting/index.rst | 4 + tutorials/scripting/other_languages.rst | 36 +++++ 20 files changed, 222 insertions(+), 154 deletions(-) create mode 100644 tutorials/scripting/cpp/about_godot_cpp.rst rename tutorials/scripting/{gdextension => cpp}/files/cpp_example/SConstruct (100%) rename tutorials/scripting/{gdextension => cpp}/gdextension_cpp_example.rst (92%) rename tutorials/scripting/{gdextension => cpp}/gdextension_docs_system.rst (98%) rename tutorials/scripting/{gdextension => cpp}/img/gdextension_cpp_animated.webm (100%) rename tutorials/scripting/{gdextension => cpp}/img/gdextension_cpp_nodes.webp (100%) rename tutorials/scripting/{gdextension => cpp}/img/gdextension_cpp_sprite.webp (100%) rename tutorials/scripting/{gdextension => cpp}/img/gdextension_docs_generation.webp (100%) create mode 100644 tutorials/scripting/cpp/index.rst create mode 100644 tutorials/scripting/other_languages.rst diff --git a/_tools/redirects/redirects.csv b/_tools/redirects/redirects.csv index 8abf40579..31930a3fe 100644 --- a/_tools/redirects/redirects.csv +++ b/_tools/redirects/redirects.csv @@ -399,8 +399,9 @@ source,destination /tutorials/plugins/gdnative/gdnative-c-example.html,/tutorials/scripting/gdnative/gdnative_c_example.html /tutorials/plugins/gdnative/gdnative-cpp-example.html,/tutorials/scripting/gdnative/gdnative_cpp_example.html /tutorials/plugins/gdnative/index.html,/tutorials/scripting/gdnative/index.html -/tutorials/scripting/gdnative/gdnative_c_example.html,/tutorials/plugins/gdextension/gdextension_cpp_example.html -/tutorials/scripting/gdnative/gdnative_cpp_example.html,/tutorials/plugins/gdextension/gdextension_cpp_example.html +/tutorials/plugins/gdextension/gdextension_cpp_example.html,/tutorials/plugins/cpp/gdextension_cpp_example.html +/tutorials/scripting/gdnative/gdnative_c_example.html,/tutorials/plugins/cpp/gdextension_cpp_example.html +/tutorials/scripting/gdnative/gdnative_cpp_example.html,/tutorials/plugins/cpp/gdextension_cpp_example.html /tutorials/scripting/gdnative/index.html,/tutorials/scripting/gdextension/index.html /tutorials/scripting/gdnative/what_is_gdnative.html,/tutorials/scripting/gdnative/what_is_gdextension.html /tutorials/shading/advanced_postprocessing.html,/tutorials/shaders/advanced_postprocessing.html diff --git a/about/docs_changelog.rst b/about/docs_changelog.rst index 2ff6a8b31..5a792dab5 100644 --- a/about/docs_changelog.rst +++ b/about/docs_changelog.rst @@ -84,7 +84,7 @@ GDExtension ~~~~~~~~~~~ - :ref:`doc_gdextension_file` -- :ref:`doc_gdextension_docs_system` +- :ref:`doc_godot_cpp_docs_system` Migrating ~~~~~~~~~ diff --git a/classes/class_gdextension.rst b/classes/class_gdextension.rst index 3015d96c5..552395963 100644 --- a/classes/class_gdextension.rst +++ b/classes/class_gdextension.rst @@ -30,7 +30,7 @@ Tutorials - :doc:`GDExtension overview <../tutorials/scripting/gdextension/what_is_gdextension>` -- :doc:`GDExtension example in C++ <../tutorials/scripting/gdextension/gdextension_cpp_example>` +- :doc:`GDExtension example in C++ <../tutorials/scripting/cpp/gdextension_cpp_example>` .. rst-class:: classref-reftable-group diff --git a/classes/class_gdextensionmanager.rst b/classes/class_gdextensionmanager.rst index f8413266f..d2264329f 100644 --- a/classes/class_gdextensionmanager.rst +++ b/classes/class_gdextensionmanager.rst @@ -30,7 +30,7 @@ Tutorials - :doc:`GDExtension overview <../tutorials/scripting/gdextension/what_is_gdextension>` -- :doc:`GDExtension example in C++ <../tutorials/scripting/gdextension/gdextension_cpp_example>` +- :doc:`GDExtension example in C++ <../tutorials/scripting/cpp/gdextension_cpp_example>` .. rst-class:: classref-reftable-group diff --git a/tutorials/platform/android/android_plugin.rst b/tutorials/platform/android/android_plugin.rst index a355c1b33..61c906f3f 100644 --- a/tutorials/platform/android/android_plugin.rst +++ b/tutorials/platform/android/android_plugin.rst @@ -231,7 +231,7 @@ At build time, the contents of the ``export_scripts_template`` directory as well Packaging a v2 Android plugin with GDExtension capabilities ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -For GDExtension, we follow the same steps as for `Packaging a v2 Android plugin`_ and add the `GDExtension config file `_ in +For GDExtension, we follow the same steps as for `Packaging a v2 Android plugin`_ and add the `GDExtension config file `_ in the same location as ``plugin.cfg``. For reference, here is the `folder structure for the GDExtension Android plugin project template `_. diff --git a/tutorials/scripting/cpp/about_godot_cpp.rst b/tutorials/scripting/cpp/about_godot_cpp.rst new file mode 100644 index 000000000..8560b8632 --- /dev/null +++ b/tutorials/scripting/cpp/about_godot_cpp.rst @@ -0,0 +1,96 @@ +.. _doc_about_godot_cpp: + +About godot-cpp +=============== + +`godot-cpp `__ are the official C++ GDExtension bindings, maintained +as part of the Godot project. + +godot-cpp is built with the :ref:`GDExtension system `, which allows access to Godot in almost the +same way as :ref:`modules `: A lot of `engine code `__ +can be used in your godot-cpp project almost exactly as it is. + +In particular, godot-cpp has access to all functions that :ref:`GDScript ` and :ref:`C# ` +have, and additional access to a few more for fast low-level access of data, or deeper integration with Godot. + +Differences between godot-cpp and C++ modules +--------------------------------------------- + +You can use both `godot-cpp `__ +and :ref:`C++ modules ` to run C or C++ code in a Godot project. + +They also both allow you to integrate third-party libraries into Godot. The one +you should choose depends on your needs. + +.. warning:: + + godot-cpp is currently *experimental*, which means that we may + break compatibility in order to fix major bugs or include critical features. + + +Advantages of godot-cpp +~~~~~~~~~~~~~~~~~~~~~~~ + +Unlike modules, godot-cpp (and GDExtensions, in general) don't require +compiling the engine's source code, making it easier to distribute your work. +It gives you access to most of the API available to GDScript and C#, allowing +you to code game logic with full control regarding performance. It's ideal if +you need high-performance code you'd like to distribute as an add-on in the +:ref:`asset library `. + +Also: + +- You can use the same compiled godot-cpp library in the editor and exported + project. With C++ modules, you have to recompile all the export templates you + plan to use if you require its functionality at runtime. +- godot-cpp only requires you to compile your library, not the whole engine. + That's unlike C++ modules, which are statically compiled into the engine. + Every time you change a module, you need to recompile the engine. Even with + incremental builds, this process is slower than using godot-cpp. + +Advantages of C++ modules +~~~~~~~~~~~~~~~~~~~~~~~~~ + +We recommend :ref:`C++ modules ` in cases where +godot-cpp (or another GDExtension system) isn't enough: + +- C++ modules provide deeper integration into the engine. GDExtension's access + is not as deep as static modules. +- You can use C++ modules to provide additional features in a project without + carrying native library files around. This extends to exported projects. + +.. note:: + + If you notice that specific systems are not accessible via godot-cpp + but are via custom modules, feel free to open an issue on the + `godot-cpp repository `__ + to discuss implementation options for exposing the missing functionality. + +.. _doc_what_is_gdextension_version_compatibility: + +Version compatibility +--------------------- + +Usually, GDExtensions targeting an earlier version of Godot will work in later +minor versions, but not vice-versa. For example, a GDExtension targeting Godot 4.2 +should work just fine in Godot 4.3, but one targeting Godot 4.3 won't work in Godot 4.2. + +For this reason, when creating GDExtensions, you may want to target the lowest version of +Godot that has the features you need, *not* the most recent version of Godot. This can +save you from needing to create multiple builds for different versions of Godot. + +However, GDExtension is currently *experimental*, which means that we may +break compatibility in order to fix major bugs or include critical features. +For example, GDExtensions created for Godot 4.0 aren't compatible with Godot +4.1 (see :ref:`updating_your_gdextension_for_godot_4_1`). + +GDExtensions are also only compatible with engine builds that use the same +level of floating-point precision the extension was compiled for. This means +that if you use an engine build with double-precision floats, the extension must +also be compiled for double-precision floats and use an ``extension_api.json`` +file generated by your custom engine build. See :ref:`doc_large_world_coordinates` +for details. + +Generally speaking, if you build a custom version of Godot, you should generate an +``extension_api.json`` from it for your GDExtensions, because it may have some differences +from official Godot builds. diff --git a/tutorials/scripting/gdextension/files/cpp_example/SConstruct b/tutorials/scripting/cpp/files/cpp_example/SConstruct similarity index 100% rename from tutorials/scripting/gdextension/files/cpp_example/SConstruct rename to tutorials/scripting/cpp/files/cpp_example/SConstruct diff --git a/tutorials/scripting/gdextension/gdextension_cpp_example.rst b/tutorials/scripting/cpp/gdextension_cpp_example.rst similarity index 92% rename from tutorials/scripting/gdextension/gdextension_cpp_example.rst rename to tutorials/scripting/cpp/gdextension_cpp_example.rst index 21cdd6f81..ea898738a 100644 --- a/tutorials/scripting/gdextension/gdextension_cpp_example.rst +++ b/tutorials/scripting/cpp/gdextension_cpp_example.rst @@ -1,29 +1,38 @@ -.. _doc_gdextension_cpp_example: +.. _doc_godot_cpp_getting_started: -GDExtension C++ example -======================= +Getting started +=============== -Introduction ------------- +Workflow overview +----------------- -The C++ bindings for GDExtension are built on top of the C GDExtension API -and provide a nicer way to "extend" nodes and other built-in classes in Godot using C++. -This new system allows the extension of Godot to nearly the same -level as statically linked C++ modules. +As a GDExtension, godot-cpp is more complicated to use than :ref:`GDScript ` and :ref:`C# `. +If you decide to work with it, here's what to expect your workflow to look like: -You can download the included example in the test folder of the godot-cpp -repository `on GitHub `__. +* Create a new godot-cpp project (from the `template `__, or from scratch, as explained below). +* Develop your code with your :ref:`favorite IDE ` locally. +* Build and test your code with the earliest compatible Godot version. +* Create builds for all platforms you want to support (e.g. using `GitHub Actions `__). +* Optional: Publish on the `Godot Asset Library `__. + +Example project +--------------- + +For your first godot-cpp project, we recommend starting with this guide to understand the technology involved with +godot-cpp. After you're done, you can use the `godot-cpp template `__, +which has better coverage of features, such as a GitHub action pipeline and useful ``SConstruct`` boilerplate code. +However, the template does not explain itself to a high level of detail, which is why we recommend going through this +guide first. Setting up the project ---------------------- There are a few prerequisites you'll need: -- a Godot 4 executable, -- a C++ compiler, -- SCons as a build tool, -- a copy of the `godot-cpp - repository `__. +- A Godot 4 executable. +- A C++ compiler. +- SCons as a build tool. +- A copy of the `godot-cpp repository `__. See also :ref:`Configuring an IDE ` and :ref:`Compiling ` as the build tools are identical @@ -712,6 +721,9 @@ Every second, we output our position to the console. Next steps ---------- -We hope the above example showed you the basics. You can -build upon this example to create full-fledged scripts to control nodes in Godot -using C++. +We hope the above example showed you the basics. You can build upon this example to create full-fledged scripts +to control nodes in Godot using C++! + +Instead of basing your project off the above example setup, we recommend to restart now by cloning the +`godot-cpp template `__, and base your project off of that. +It has better coverage of features, such as a GitHub build action and additional useful ``SConstruct`` boilerplate. diff --git a/tutorials/scripting/gdextension/gdextension_docs_system.rst b/tutorials/scripting/cpp/gdextension_docs_system.rst similarity index 98% rename from tutorials/scripting/gdextension/gdextension_docs_system.rst rename to tutorials/scripting/cpp/gdextension_docs_system.rst index 575a901ef..f1c79f564 100644 --- a/tutorials/scripting/gdextension/gdextension_docs_system.rst +++ b/tutorials/scripting/cpp/gdextension_docs_system.rst @@ -1,7 +1,7 @@ -.. _doc_gdextension_docs_system: +.. _doc_godot_cpp_docs_system: -GDExtension documentation system -================================ +Adding documentation +==================== .. note:: @@ -15,7 +15,7 @@ XML files (one per class) to document the exposed constructors, properties, meth .. note:: - We are assuming you are using the project files explained in the :ref:`GDExtension C++ Example ` + We are assuming you are using the project files explained in the :ref:`example project ` with the following structure: .. code-block:: none diff --git a/tutorials/scripting/gdextension/img/gdextension_cpp_animated.webm b/tutorials/scripting/cpp/img/gdextension_cpp_animated.webm similarity index 100% rename from tutorials/scripting/gdextension/img/gdextension_cpp_animated.webm rename to tutorials/scripting/cpp/img/gdextension_cpp_animated.webm diff --git a/tutorials/scripting/gdextension/img/gdextension_cpp_nodes.webp b/tutorials/scripting/cpp/img/gdextension_cpp_nodes.webp similarity index 100% rename from tutorials/scripting/gdextension/img/gdextension_cpp_nodes.webp rename to tutorials/scripting/cpp/img/gdextension_cpp_nodes.webp diff --git a/tutorials/scripting/gdextension/img/gdextension_cpp_sprite.webp b/tutorials/scripting/cpp/img/gdextension_cpp_sprite.webp similarity index 100% rename from tutorials/scripting/gdextension/img/gdextension_cpp_sprite.webp rename to tutorials/scripting/cpp/img/gdextension_cpp_sprite.webp diff --git a/tutorials/scripting/gdextension/img/gdextension_docs_generation.webp b/tutorials/scripting/cpp/img/gdextension_docs_generation.webp similarity index 100% rename from tutorials/scripting/gdextension/img/gdextension_docs_generation.webp rename to tutorials/scripting/cpp/img/gdextension_docs_generation.webp diff --git a/tutorials/scripting/cpp/index.rst b/tutorials/scripting/cpp/index.rst new file mode 100644 index 000000000..437267d46 --- /dev/null +++ b/tutorials/scripting/cpp/index.rst @@ -0,0 +1,17 @@ +:allow_comments: False + +.. _doc_godot_cpp: + +C++ (godot-cpp) +=============== + +This section documents `godot-cpp `__, +the official C++ GDExtension bindings maintained as part of the Godot project. + +.. toctree:: + :maxdepth: 1 + :name: toc-tutorials-godot-cpp + + about_godot_cpp + gdextension_cpp_example + gdextension_docs_system diff --git a/tutorials/scripting/gdextension/gdextension_c_example.rst b/tutorials/scripting/gdextension/gdextension_c_example.rst index a7293401b..8724f30f7 100644 --- a/tutorials/scripting/gdextension/gdextension_c_example.rst +++ b/tutorials/scripting/gdextension/gdextension_c_example.rst @@ -2148,5 +2148,5 @@ quite straightforward and not very verbose. If you want to create actual extensions, it is preferred to use the C++ bindings instead, as it takes away all of the boilerplate from your code. Check the -:ref:`GDExtension C++ example ` to see how you can +:ref:`godot-cpp documentation ` to see how you can do this. diff --git a/tutorials/scripting/gdextension/gdextension_file.rst b/tutorials/scripting/gdextension/gdextension_file.rst index 61e42a5b8..68cd73ea1 100644 --- a/tutorials/scripting/gdextension/gdextension_file.rst +++ b/tutorials/scripting/gdextension/gdextension_file.rst @@ -9,7 +9,7 @@ Introduction The ``.gdextension`` file in your project contains the instructions for how to load the GDExtension. The instructions are separated into specific sections. This page should give you a quick overview of the different options available to you. For an introduction -how to get started with GDExtensions take a look at the :ref:`GDExtension C++ Example `. +how to get started with C++ (godot-cpp), take a look at the :ref:`GDExtension C++ Example `. Configuration section --------------------- diff --git a/tutorials/scripting/gdextension/index.rst b/tutorials/scripting/gdextension/index.rst index 7aec6a9c7..76be9d869 100644 --- a/tutorials/scripting/gdextension/index.rst +++ b/tutorials/scripting/gdextension/index.rst @@ -1,14 +1,26 @@ :allow_comments: False -GDExtension -=========== +.. _doc_gdextension: + +The GDExtension system +====================== + +**GDExtension** is a Godot-specific technology that lets the engine interact with +native `shared libraries `__ +at runtime. You can use it to run native code without compiling it with the engine. + +.. note:: GDExtension is *not* a scripting language and has no relation to + :ref:`GDScript `. + +This section describes how GDExtension works, and is generally aimed at people wanting to make a GDExtension from +scratch, for example to create language bindings. If you want to use existing language bindings, please refer to other +articles instead, such as the articles about :ref:`C++ (godot-cpp) ` or one of the +:ref:`community-made ones `. .. toctree:: :maxdepth: 1 - :name: toc-tutorials-gdnative + :name: toc-tutorials-gdextension what_is_gdextension - gdextension_cpp_example - gdextension_c_example gdextension_file - gdextension_docs_system + gdextension_c_example diff --git a/tutorials/scripting/gdextension/what_is_gdextension.rst b/tutorials/scripting/gdextension/what_is_gdextension.rst index e1b99ec11..f19637005 100644 --- a/tutorials/scripting/gdextension/what_is_gdextension.rst +++ b/tutorials/scripting/gdextension/what_is_gdextension.rst @@ -3,130 +3,20 @@ What is GDExtension? ==================== -Introduction ------------- - **GDExtension** is a Godot-specific technology that lets the engine interact with native `shared libraries `__ at runtime. You can use it to run native code without compiling it with the engine. -.. note:: GDExtension is *not* a scripting language and has no relation to - :ref:`GDScript `. +There are three primary methods with which this is achieved: -Differences between GDExtension and C++ modules ------------------------------------------------ +* ``gdextension_interface.h``: A set of C functions that Godot and a GDExtension can use to communicate. +* ``extension_api.json``: A list of C functions that are exposed from Godot APIs (:ref:`Core Features `). +* :ref:`*.gdextension `: A file format read by Godot to load a GDExtension. -You can use both GDExtension and :ref:`C++ modules ` to -run C or C++ code in a Godot project. - -They also both allow you to integrate third-party libraries into Godot. The one -you should choose depends on your needs. - -.. warning:: - - GDExtension is currently *experimental*, which means that we may - break compatibility in order to fix major bugs or include critical features. - -Advantages of GDExtension -~~~~~~~~~~~~~~~~~~~~~~~~~ - -Unlike modules, GDExtension doesn't require compiling the engine's source code, -making it easier to distribute your work. It gives you access to most of the API -available to GDScript and C#, allowing you to code game logic with full control -regarding performance. It's ideal if you need high-performance code you'd like -to distribute as an add-on in the :ref:`asset library `. - -Also: - -- GDExtension is not limited to C and C++. Thanks to :ref:`third-party bindings - `, you can use it with many other - languages. -- You can use the same compiled GDExtension library in the editor and exported - project. With C++ modules, you have to recompile all the export templates you - plan to use if you require its functionality at runtime. -- GDExtension only requires you to compile your library, not the whole engine. - That's unlike C++ modules, which are statically compiled into the engine. - Every time you change a module, you need to recompile the engine. Even with - incremental builds, this process is slower than using GDExtension. - -Advantages of C++ modules -~~~~~~~~~~~~~~~~~~~~~~~~~ - -We recommend :ref:`C++ modules ` in cases where -GDExtension isn't enough: - -- C++ modules provide deeper integration into the engine. GDExtension's access - is not as deep as static modules. -- You can use C++ modules to provide additional features in a project without - carrying native library files around. This extends to exported projects. - -.. note:: - - If you notice that specific systems are not accessible via GDExtension - but are via custom modules, feel free to open an issue on the - `godot-cpp repository `__ - to discuss implementation options for exposing the missing functionality. - -Supported languages -------------------- - -The Godot developers officially support the following language bindings for -GDExtension: - -- C++ :ref:`(tutorial) ` - -.. note:: - - There are no plans to support additional languages with GDExtension officially. - That said, the community offers several bindings for other languages (see - below). - -.. _doc_what_is_gdnative_third_party_bindings: - -The bindings below are developed and maintained by the community: - -.. Binding developers: Feel free to open a pull request to add your binding if it's well-developed enough to be used in a project. -.. Please keep languages sorted in alphabetical order. - -- `D `__ -- `Go `__ -- `Nim `__ -- `Rust `__ -- `Swift `__ -- `Odin `__ - -.. note:: - - Not all bindings mentioned here may be production-ready. Make sure to - research options thoroughly before starting a project with one of those. - Also, double-check whether the binding is compatible with the Godot version - you're using. - -.. _doc_what_is_gdextension_version_compatibility: +Most people create GDExtensions with some existing language binding, such as :ref:`godot-cpp (for C++) `, +or one of the :ref:`community-made ones `. Version compatibility --------------------- -Usually, GDExtensions targeting an earlier version of Godot will work in later -minor versions, but not vice-versa. For example, a GDExtension targeting Godot 4.2 -should work just fine in Godot 4.3, but one targeting Godot 4.3 won't work in Godot 4.2. - -For this reason, when creating GDExtensions, you may want to target the lowest version of -Godot that has the features you need, *not* the most recent version of Godot. This can -save you from needing to create multiple builds for different versions of Godot. - -However, GDExtension is currently *experimental*, which means that we may -break compatibility in order to fix major bugs or include critical features. -For example, GDExtensions created for Godot 4.0 aren't compatible with Godot -4.1 (see :ref:`updating_your_gdextension_for_godot_4_1`). - -GDExtensions are also only compatible with engine builds that use the same -level of floating-point precision the extension was compiled for. This means -that if you use an engine build with double-precision floats, the extension must -also be compiled for double-precision floats and use an ``extension_api.json`` -file generated by your custom engine build. See :ref:`doc_large_world_coordinates` -for details. - -Generally speaking, if you build a custom version of Godot, you should generate an -``extension_api.json`` from it for your GDExtensions, because it may have some differences -from official Godot builds. +See :ref:`godot-cpp Version Compatibility `, which applies to all GDExtensions. diff --git a/tutorials/scripting/index.rst b/tutorials/scripting/index.rst index 3df2ffc8b..dfaf28cc7 100644 --- a/tutorials/scripting/index.rst +++ b/tutorials/scripting/index.rst @@ -21,8 +21,12 @@ The sections below each focus on a given programming language. gdscript/index c_sharp/index + cpp/index + other_languages gdextension/index +.. _doc_scripting_core_features: + Core features ------------- diff --git a/tutorials/scripting/other_languages.rst b/tutorials/scripting/other_languages.rst new file mode 100644 index 000000000..3a124c4b8 --- /dev/null +++ b/tutorials/scripting/other_languages.rst @@ -0,0 +1,36 @@ +.. _doc_scripting_languages: + +Other languages +--------------- + +The Godot developers officially support the following languages for Godot: + +- :ref:`GDScript (all versions)` +- :ref:`C# (.NET version)` +- :ref:`C++ (via GDExtension) ` + +.. note:: + + There are no plans to support additional languages officially. + That said, the community offers several bindings for other languages (see below). + +.. _doc_what_is_gdnative_third_party_bindings: + +The bindings below are developed and maintained by the community: + +.. Binding developers: Feel free to open a pull request to add your binding if it's well-developed enough to be used in a project. +.. Please keep languages sorted in alphabetical order. + +- `D `__ +- `Go `__ +- `Nim `__ +- `Rust `__ +- `Swift `__ +- `Odin `__ + +.. note:: + + Not all bindings mentioned here may be production-ready. Make sure to + research options thoroughly before starting a project with one of those. + Also, double-check whether the binding is compatible with the Godot version + you're using. From f0258bd879a5655c548bbfeef89518a13796462a Mon Sep 17 00:00:00 2001 From: MJacred Date: Fri, 25 Apr 2025 15:53:23 +0200 Subject: [PATCH 046/263] Document new bbcode [br] in RichTextLabel --- tutorials/ui/bbcode_in_richtextlabel.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tutorials/ui/bbcode_in_richtextlabel.rst b/tutorials/ui/bbcode_in_richtextlabel.rst index edab91606..2c529af5c 100644 --- a/tutorials/ui/bbcode_in_richtextlabel.rst +++ b/tutorials/ui/bbcode_in_richtextlabel.rst @@ -277,6 +277,11 @@ Reference - | ``[p]{text}[/p]`` | ``[p {options}]{text}[/p]`` + * - | **br** + | Adds line break in a text. + + - ``[br]`` + * - | **center** | Makes ``{text}`` horizontally centered. | Same as ``[p align=center]``. From e66e1fb4a1e4ca3202a83718eb1329508572247f Mon Sep 17 00:00:00 2001 From: Godot Organization Date: Sat, 26 Apr 2025 03:23:58 +0000 Subject: [PATCH 047/263] classref: Sync with current master branch (e37c626) --- classes/class_@globalscope.rst | 10 +- classes/class_astar2d.rst | 2 +- classes/class_astar3d.rst | 2 +- classes/class_canvaslayer.rst | 2 +- classes/class_editorsettings.rst | 32 +-- classes/class_engine.rst | 126 ++++++----- classes/class_gltfdocument.rst | 109 ++++++++- classes/class_gltfnode.rst | 19 ++ classes/class_graphnode.rst | 12 + classes/class_image.rst | 4 +- classes/class_label.rst | 2 - classes/class_lineedit.rst | 283 ++++++++++++++---------- classes/class_logger.rst | 131 +++++++++++ classes/class_os.rst | 36 ++- classes/class_progressbar.rst | 2 +- classes/class_projectsettings.rst | 40 +++- classes/class_refcounted.rst | 2 +- classes/class_renderingserver.rst | 14 ++ classes/class_resourceimporter.rst | 2 +- classes/class_resourceimporterscene.rst | 16 +- classes/class_resourceimportersvg.rst | 102 +++++++++ classes/class_scriptbacktrace.rst | 272 +++++++++++++++++++++++ classes/class_svgtexture.rst | 176 +++++++++++++++ classes/class_textedit.rst | 245 ++++++++++++-------- classes/class_texture2d.rst | 2 +- classes/class_vector2.rst | 4 +- classes/class_viewport.rst | 2 +- classes/index.rst | 4 + 28 files changed, 1342 insertions(+), 311 deletions(-) create mode 100644 classes/class_logger.rst create mode 100644 classes/class_resourceimportersvg.rst create mode 100644 classes/class_scriptbacktrace.rst create mode 100644 classes/class_svgtexture.rst diff --git a/classes/class_@globalscope.rst b/classes/class_@globalscope.rst index 7c98b7c98..6503f8f6d 100644 --- a/classes/class_@globalscope.rst +++ b/classes/class_@globalscope.rst @@ -3875,11 +3875,19 @@ Hints that a :ref:`Callable` property should be displayed as a c Hints that a property will be changed on its own after setting, such as :ref:`AudioStreamPlayer.playing` or :ref:`GPUParticles3D.emitting`. +.. _class_@GlobalScope_constant_PROPERTY_HINT_GROUP_ENABLE: + +.. rst-class:: classref-enumeration-constant + +:ref:`PropertyHint` **PROPERTY_HINT_GROUP_ENABLE** = ``42`` + +Hints that a boolean property will enable the feature associated with the group that it occurs in. Only works within a group or subgroup. + .. _class_@GlobalScope_constant_PROPERTY_HINT_MAX: .. rst-class:: classref-enumeration-constant -:ref:`PropertyHint` **PROPERTY_HINT_MAX** = ``42`` +:ref:`PropertyHint` **PROPERTY_HINT_MAX** = ``43`` Represents the size of the :ref:`PropertyHint` enum. diff --git a/classes/class_astar2d.rst b/classes/class_astar2d.rst index 0163a1909..15de0c0e4 100644 --- a/classes/class_astar2d.rst +++ b/classes/class_astar2d.rst @@ -494,7 +494,7 @@ Removes the point associated with the given ``id`` from the points pool. |void| **reserve_space**\ (\ num_nodes\: :ref:`int`\ ) :ref:`🔗` -Reserves space internally for ``num_nodes`` points. Useful if you're adding a known large number of points at once, such as points on a grid. The new capacity must be greater or equal to the old capacity. +Reserves space internally for ``num_nodes`` points. Useful if you're adding a known large number of points at once, such as points on a grid. .. rst-class:: classref-item-separator diff --git a/classes/class_astar3d.rst b/classes/class_astar3d.rst index 27cc83369..863dab275 100644 --- a/classes/class_astar3d.rst +++ b/classes/class_astar3d.rst @@ -543,7 +543,7 @@ Removes the point associated with the given ``id`` from the points pool. |void| **reserve_space**\ (\ num_nodes\: :ref:`int`\ ) :ref:`🔗` -Reserves space internally for ``num_nodes`` points. Useful if you're adding a known large number of points at once, such as points on a grid. New capacity must be greater or equals to old capacity. +Reserves space internally for ``num_nodes`` points. Useful if you're adding a known large number of points at once, such as points on a grid. .. rst-class:: classref-item-separator diff --git a/classes/class_canvaslayer.rst b/classes/class_canvaslayer.rst index 00a7ee70d..5e11feaf2 100644 --- a/classes/class_canvaslayer.rst +++ b/classes/class_canvaslayer.rst @@ -140,7 +140,7 @@ The custom :ref:`Viewport` node assigned to the **CanvasLayer**. - |void| **set_follow_viewport**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_following_viewport**\ (\ ) -If enabled, the **CanvasLayer** stays in a fixed position on the screen. If disabled, the **CanvasLayer** maintains its position in world space. +If enabled, the **CanvasLayer** maintains its position in world space. If disabled, the **CanvasLayer** stays in a fixed position on the screen. Together with :ref:`follow_viewport_scale`, this can be used for a pseudo-3D effect. diff --git a/classes/class_editorsettings.rst b/classes/class_editorsettings.rst index a8c3daa50..bcd57e87f 100644 --- a/classes/class_editorsettings.rst +++ b/classes/class_editorsettings.rst @@ -599,12 +599,12 @@ Properties +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`interface/touchscreen/enable_pan_and_scale_gestures` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/touchscreen/enable_touch_actions_panel` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`interface/touchscreen/increase_scrollbar_touch_area` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`interface/touchscreen/scale_gizmo_handles` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/touchscreen/touch_actions_panel` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`network/connection/check_for_updates` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`network/connection/network_mode` | @@ -4446,20 +4446,6 @@ If ``true``, enable two finger pan and scale gestures on touchscreen devices. ---- -.. _class_EditorSettings_property_interface/touchscreen/enable_touch_actions_panel: - -.. rst-class:: classref-property - -:ref:`bool` **interface/touchscreen/enable_touch_actions_panel** :ref:`🔗` - -If ``true``, enables the TouchActionsPanel to provide easy access to keyboard shortcuts on touchscreen devices. - -\ **Note:** Only available in the Android editor. - -.. rst-class:: classref-item-separator - ----- - .. _class_EditorSettings_property_interface/touchscreen/increase_scrollbar_touch_area: .. rst-class:: classref-property @@ -4488,6 +4474,20 @@ Specify the multiplier to apply to the scale for the editor gizmo handles to imp ---- +.. _class_EditorSettings_property_interface/touchscreen/touch_actions_panel: + +.. rst-class:: classref-property + +:ref:`int` **interface/touchscreen/touch_actions_panel** :ref:`🔗` + +A touch-friendly panel that provides easy access to common actions such as save, delete, undo, and redo without requiring a keyboard. + +\ **Note:** Only available in the Android and XR editor. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_network/connection/check_for_updates: .. rst-class:: classref-property diff --git a/classes/class_engine.rst b/classes/class_engine.rst index 6c83a23ca..e7064075c 100644 --- a/classes/class_engine.rst +++ b/classes/class_engine.rst @@ -53,59 +53,61 @@ Methods .. table:: :widths: auto - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_architecture_name`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`get_author_info`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`get_copyright_info`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`get_donor_info`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_frames_drawn`\ (\ ) | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_frames_per_second`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`get_license_info`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_license_text`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`MainLoop` | :ref:`get_main_loop`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_physics_frames`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_physics_interpolation_fraction`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_process_frames`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`ScriptLanguage` | :ref:`get_script_language`\ (\ index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_script_language_count`\ (\ ) | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Object` | :ref:`get_singleton`\ (\ name\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`get_singleton_list`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`get_version_info`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_write_movie_path`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_singleton`\ (\ name\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_editor_hint`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_embedded_in_editor`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_in_physics_frame`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`register_script_language`\ (\ language\: :ref:`ScriptLanguage`\ ) | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`register_singleton`\ (\ name\: :ref:`StringName`, instance\: :ref:`Object`\ ) | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`unregister_script_language`\ (\ language\: :ref:`ScriptLanguage`\ ) | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`unregister_singleton`\ (\ name\: :ref:`StringName`\ ) | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`ScriptBacktrace`\] | :ref:`capture_script_backtraces`\ (\ include_variables\: :ref:`bool` = false\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_architecture_name`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`get_author_info`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`get_copyright_info`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`get_donor_info`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_frames_drawn`\ (\ ) | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_frames_per_second`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`get_license_info`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_license_text`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`MainLoop` | :ref:`get_main_loop`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_physics_frames`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_physics_interpolation_fraction`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_process_frames`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`ScriptLanguage` | :ref:`get_script_language`\ (\ index\: :ref:`int`\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_script_language_count`\ (\ ) | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Object` | :ref:`get_singleton`\ (\ name\: :ref:`StringName`\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`get_singleton_list`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`get_version_info`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_write_movie_path`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_singleton`\ (\ name\: :ref:`StringName`\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_editor_hint`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_embedded_in_editor`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_in_physics_frame`\ (\ ) |const| | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`register_script_language`\ (\ language\: :ref:`ScriptLanguage`\ ) | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`register_singleton`\ (\ name\: :ref:`StringName`, instance\: :ref:`Object`\ ) | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`unregister_script_language`\ (\ language\: :ref:`ScriptLanguage`\ ) | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`unregister_singleton`\ (\ name\: :ref:`StringName`\ ) | + +----------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -274,6 +276,24 @@ This value affects :ref:`Timer`, :ref:`SceneTreeTimer`\[:ref:`ScriptBacktrace`\] **capture_script_backtraces**\ (\ include_variables\: :ref:`bool` = false\ ) |const| :ref:`🔗` + +Captures and returns backtraces from all registered script languages. + +By default, the returned :ref:`ScriptBacktrace` will only contain stack frames in editor builds and debug builds. To enable them for release builds as well, you need to enable :ref:`ProjectSettings.debug/settings/gdscript/always_track_call_stacks`. + +If ``include_variables`` is ``true``, the backtrace will also include the names and values of any global variables (e.g. autoload singletons) at the point of the capture, as well as local variables and class member variables at each stack frame. This will however will only be respected when running the game with a debugger attached, like when running the game from the editor. To enable it for export builds as well, you need to enable :ref:`ProjectSettings.debug/settings/gdscript/always_track_local_variables`. + +\ **Warning:** When ``include_variables`` is ``true``, any captured variables can potentially (e.g. with GDScript backtraces) be their actual values, including any object references. This means that storing such a :ref:`ScriptBacktrace` will prevent those objects from being deallocated, so it's generally recommended not to do so. + +.. rst-class:: classref-item-separator + +---- + .. _class_Engine_method_get_architecture_name: .. rst-class:: classref-method diff --git a/classes/class_gltfdocument.rst b/classes/class_gltfdocument.rst index c548222d5..6a84fdc74 100644 --- a/classes/class_gltfdocument.rst +++ b/classes/class_gltfdocument.rst @@ -46,13 +46,19 @@ Properties .. table:: :widths: auto - +-----------------------------------------------------+-------------------------------------------------------------------+-----------+ - | :ref:`String` | :ref:`image_format` | ``"PNG"`` | - +-----------------------------------------------------+-------------------------------------------------------------------+-----------+ - | :ref:`float` | :ref:`lossy_quality` | ``0.75`` | - +-----------------------------------------------------+-------------------------------------------------------------------+-----------+ - | :ref:`RootNodeMode` | :ref:`root_node_mode` | ``0`` | - +-----------------------------------------------------+-------------------------------------------------------------------+-----------+ + +---------------------------------------------------------+-----------------------------------------------------------------------------------+------------+ + | :ref:`String` | :ref:`fallback_image_format` | ``"None"`` | + +---------------------------------------------------------+-----------------------------------------------------------------------------------+------------+ + | :ref:`float` | :ref:`fallback_image_quality` | ``0.25`` | + +---------------------------------------------------------+-----------------------------------------------------------------------------------+------------+ + | :ref:`String` | :ref:`image_format` | ``"PNG"`` | + +---------------------------------------------------------+-----------------------------------------------------------------------------------+------------+ + | :ref:`float` | :ref:`lossy_quality` | ``0.75`` | + +---------------------------------------------------------+-----------------------------------------------------------------------------------+------------+ + | :ref:`RootNodeMode` | :ref:`root_node_mode` | ``0`` | + +---------------------------------------------------------+-----------------------------------------------------------------------------------+------------+ + | :ref:`VisibilityMode` | :ref:`visibility_mode` | ``0`` | + +---------------------------------------------------------+-----------------------------------------------------------------------------------+------------+ .. rst-class:: classref-reftable-group @@ -125,6 +131,40 @@ Treat the Godot scene's root node as the root node of the glTF file, but do not Treat the Godot scene's root node as the name of the glTF scene, and add all of its children as root nodes of the glTF file. This uses only vanilla glTF features. This avoids an extra root node, but only the name of the Godot scene's root node will be preserved, as it will not be saved as a node. +.. rst-class:: classref-item-separator + +---- + +.. _enum_GLTFDocument_VisibilityMode: + +.. rst-class:: classref-enumeration + +enum **VisibilityMode**: :ref:`🔗` + +.. _class_GLTFDocument_constant_VISIBILITY_MODE_INCLUDE_REQUIRED: + +.. rst-class:: classref-enumeration-constant + +:ref:`VisibilityMode` **VISIBILITY_MODE_INCLUDE_REQUIRED** = ``0`` + +If the scene contains any non-visible nodes, include them, mark them as non-visible with ``KHR_node_visibility``, and require that importers respect their non-visibility. Downside: If the importer does not support ``KHR_node_visibility``, the file cannot be imported. + +.. _class_GLTFDocument_constant_VISIBILITY_MODE_INCLUDE_OPTIONAL: + +.. rst-class:: classref-enumeration-constant + +:ref:`VisibilityMode` **VISIBILITY_MODE_INCLUDE_OPTIONAL** = ``1`` + +If the scene contains any non-visible nodes, include them, mark them as non-visible with ``KHR_node_visibility``, and do not impose any requirements on importers. Downside: If the importer does not support ``KHR_node_visibility``, invisible objects will be visible. + +.. _class_GLTFDocument_constant_VISIBILITY_MODE_EXCLUDE: + +.. rst-class:: classref-enumeration-constant + +:ref:`VisibilityMode` **VISIBILITY_MODE_EXCLUDE** = ``2`` + +If the scene contains any non-visible nodes, do not include them in the export. This is the same as the behavior in Godot 4.4 and earlier. Downside: Invisible nodes will not exist in the exported file. + .. rst-class:: classref-section-separator ---- @@ -134,6 +174,42 @@ Treat the Godot scene's root node as the name of the glTF scene, and add all of Property Descriptions --------------------- +.. _class_GLTFDocument_property_fallback_image_format: + +.. rst-class:: classref-property + +:ref:`String` **fallback_image_format** = ``"None"`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_fallback_image_format**\ (\ value\: :ref:`String`\ ) +- :ref:`String` **get_fallback_image_format**\ (\ ) + +The user-friendly name of the fallback image format. This is used when exporting the glTF file, including writing to a file and writing to a byte array. + +This property may only be one of "None", "PNG", or "JPEG", and is only used when the :ref:`image_format` is not one of "None", "PNG", or "JPEG". If having multiple extension image formats is desired, that can be done using a :ref:`GLTFDocumentExtension` class - this property only covers the use case of providing a base glTF fallback image when using a custom image format. + +.. rst-class:: classref-item-separator + +---- + +.. _class_GLTFDocument_property_fallback_image_quality: + +.. rst-class:: classref-property + +:ref:`float` **fallback_image_quality** = ``0.25`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_fallback_image_quality**\ (\ value\: :ref:`float`\ ) +- :ref:`float` **get_fallback_image_quality**\ (\ ) + +The quality of the fallback image, if any. For PNG files, this downscales the image on both dimensions by this factor. For JPEG files, this is the lossy quality of the image. A low value is recommended, since including multiple high quality images in a glTF file defeats the file size gains of using a more efficient image format. + +.. rst-class:: classref-item-separator + +---- + .. _class_GLTFDocument_property_image_format: .. rst-class:: classref-property @@ -147,7 +223,7 @@ Property Descriptions The user-friendly name of the export image format. This is used when exporting the glTF file, including writing to a file and writing to a byte array. -By default, Godot allows the following options: "None", "PNG", "JPEG", "Lossless WebP", and "Lossy WebP". Support for more image formats can be added in :ref:`GLTFDocumentExtension` classes. +By default, Godot allows the following options: "None", "PNG", "JPEG", "Lossless WebP", and "Lossy WebP". Support for more image formats can be added in :ref:`GLTFDocumentExtension` classes. A single extension class can provide multiple options for the specific format to use, or even an option that uses multiple formats at once. .. rst-class:: classref-item-separator @@ -185,6 +261,23 @@ How to process the root node during export. See :ref:`RootNodeMode` **visibility_mode** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_visibility_mode**\ (\ value\: :ref:`VisibilityMode`\ ) +- :ref:`VisibilityMode` **get_visibility_mode**\ (\ ) + +How to deal with node visibility during export. This setting does nothing if all nodes are visible. See :ref:`VisibilityMode` for details. The default and recommended value is :ref:`VISIBILITY_MODE_INCLUDE_REQUIRED`, which uses the ``KHR_node_visibility`` extension. + .. rst-class:: classref-section-separator ---- diff --git a/classes/class_gltfnode.rst b/classes/class_gltfnode.rst index e9701d107..fec7b7afd 100644 --- a/classes/class_gltfnode.rst +++ b/classes/class_gltfnode.rst @@ -65,6 +65,8 @@ Properties +-------------------------------------------------+-------------------------------------------------------------+-----------------------------------------------------+ | :ref:`int` | :ref:`skin` | ``-1`` | +-------------------------------------------------+-------------------------------------------------------------+-----------------------------------------------------+ + | :ref:`bool` | :ref:`visible` | ``true`` | + +-------------------------------------------------+-------------------------------------------------------------+-----------------------------------------------------+ | :ref:`Transform3D` | :ref:`xform` | ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` | +-------------------------------------------------+-------------------------------------------------------------+-----------------------------------------------------+ @@ -301,6 +303,23 @@ If this glTF node has a skin, the index of the :ref:`GLTFSkin` i ---- +.. _class_GLTFNode_property_visible: + +.. rst-class:: classref-property + +:ref:`bool` **visible** = ``true`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_visible**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **get_visible**\ (\ ) + +If ``true``, the GLTF node is visible. If ``false``, the GLTF node is not visible. This is translated to the :ref:`Node3D.visible` property in the Godot scene, and is exported to ``KHR_node_visibility`` when ``false``. + +.. rst-class:: classref-item-separator + +---- + .. _class_GLTFNode_property_xform: .. rst-class:: classref-property diff --git a/classes/class_graphnode.rst b/classes/class_graphnode.rst index 429a43463..4c2258e82 100644 --- a/classes/class_graphnode.rst +++ b/classes/class_graphnode.rst @@ -164,6 +164,18 @@ Theme Properties Signals ------- +.. _class_GraphNode_signal_slot_sizes_changed: + +.. rst-class:: classref-signal + +**slot_sizes_changed**\ (\ ) :ref:`🔗` + +Emitted when any slot's size might have changed. + +.. rst-class:: classref-item-separator + +---- + .. _class_GraphNode_signal_slot_updated: .. rst-class:: classref-signal diff --git a/classes/class_image.rst b/classes/class_image.rst index 0ab518ae0..dc6871449 100644 --- a/classes/class_image.rst +++ b/classes/class_image.rst @@ -1600,7 +1600,7 @@ Resizes the image to the given ``width`` and ``height``. New pixels are calculat |void| **resize_to_po2**\ (\ square\: :ref:`bool` = false, interpolation\: :ref:`Interpolation` = 1\ ) :ref:`🔗` -Resizes the image to the nearest power of 2 for the width and height. If ``square`` is ``true`` then set width and height to be the same. New pixels are calculated using the ``interpolation`` mode defined via :ref:`Interpolation` constants. +Resizes the image to the nearest power of 2 for the width and height. If ``square`` is ``true``, sets width and height to be the same. New pixels are calculated using the ``interpolation`` mode defined via :ref:`Interpolation` constants. .. rst-class:: classref-item-separator @@ -1692,7 +1692,7 @@ Saves the image as an EXR file to ``path``. If ``grayscale`` is ``true`` and the Saves the image as an EXR file to a byte array. If ``grayscale`` is ``true`` and the image has only one channel, it will be saved explicitly as monochrome rather than one red channel. This function will return an empty byte array if Godot was compiled without the TinyEXR module. -\ **Note:** The TinyEXR module is disabled in non-editor builds, which means :ref:`save_exr()` will return an empty byte array when it is called from an exported project. +\ **Note:** The TinyEXR module is disabled in non-editor builds, which means :ref:`save_exr_to_buffer()` will return an empty byte array when it is called from an exported project. .. rst-class:: classref-item-separator diff --git a/classes/class_label.rst b/classes/class_label.rst index 935a921f4..64171946a 100644 --- a/classes/class_label.rst +++ b/classes/class_label.rst @@ -48,8 +48,6 @@ Properties +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`String` | :ref:`ellipsis_char` | ``"…"`` | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ - | :ref:`FocusMode` | focus_mode | ``3`` (overrides :ref:`Control`) | - +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | :ref:`HorizontalAlignment` | :ref:`horizontal_alignment` | ``0`` | +-----------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | |bitfield|\[:ref:`JustificationFlag`\] | :ref:`justification_flags` | ``163`` | diff --git a/classes/class_lineedit.rst b/classes/class_lineedit.rst index 1e07dddac..2a454355c 100644 --- a/classes/class_lineedit.rst +++ b/classes/class_lineedit.rst @@ -98,75 +98,77 @@ Properties .. table:: :widths: auto - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`HorizontalAlignment` | :ref:`alignment` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`caret_blink` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`caret_blink_interval` | ``0.65`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`caret_column` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`caret_force_displayed` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`caret_mid_grapheme` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`clear_button_enabled` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`context_menu_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`deselect_on_focus_loss_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`drag_and_drop_selection_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`draw_control_chars` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editable` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`emoji_menu_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`expand_to_text_length` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`flat` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`keep_editing_on_text_submit` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`language` | ``""`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`max_length` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`middle_mouse_paste_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`CursorShape` | mouse_default_cursor_shape | ``1`` (overrides :ref:`Control`) | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`placeholder_text` | ``""`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`Texture2D` | :ref:`right_icon` | | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`secret` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`secret_character` | ``"•"`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`select_all_on_focus` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`selecting_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shortcut_keys_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`StructuredTextParser` | :ref:`structured_text_bidi_override` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`Array` | :ref:`structured_text_bidi_override_options` | ``[]`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`text` | ``""`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`TextDirection` | :ref:`text_direction` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`virtual_keyboard_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`VirtualKeyboardType` | :ref:`virtual_keyboard_type` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`HorizontalAlignment` | :ref:`alignment` | ``0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`backspace_deletes_composite_character_enabled` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`caret_blink` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`caret_blink_interval` | ``0.65`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`caret_column` | ``0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`caret_force_displayed` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`caret_mid_grapheme` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`clear_button_enabled` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`context_menu_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`deselect_on_focus_loss_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`drag_and_drop_selection_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`draw_control_chars` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editable` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`emoji_menu_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`expand_to_text_length` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`flat` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`keep_editing_on_text_submit` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`language` | ``""`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`max_length` | ``0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`middle_mouse_paste_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`CursorShape` | mouse_default_cursor_shape | ``1`` (overrides :ref:`Control`) | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`placeholder_text` | ``""`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`Texture2D` | :ref:`right_icon` | | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`secret` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`secret_character` | ``"•"`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`select_all_on_focus` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`selecting_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shortcut_keys_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`StructuredTextParser` | :ref:`structured_text_bidi_override` | ``0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`Array` | :ref:`structured_text_bidi_override_options` | ``[]`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`text` | ``""`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`TextDirection` | :ref:`text_direction` | ``0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`virtual_keyboard_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`VirtualKeyboardType` | :ref:`virtual_keyboard_type` | ``0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -176,53 +178,57 @@ Methods .. table:: :widths: auto - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`apply_ime`\ (\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`cancel_ime`\ (\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear`\ (\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`delete_char_at_caret`\ (\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`delete_text`\ (\ from_column\: :ref:`int`, to_column\: :ref:`int`\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`deselect`\ (\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`edit`\ (\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PopupMenu` | :ref:`get_menu`\ (\ ) |const| | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_scroll_offset`\ (\ ) |const| | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_selected_text`\ (\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_selection_from_column`\ (\ ) |const| | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_selection_to_column`\ (\ ) |const| | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_ime_text`\ (\ ) |const| | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_redo`\ (\ ) |const| | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_selection`\ (\ ) |const| | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_undo`\ (\ ) |const| | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`insert_text_at_caret`\ (\ text\: :ref:`String`\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_editing`\ (\ ) |const| | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_menu_visible`\ (\ ) |const| | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`menu_option`\ (\ option\: :ref:`int`\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`select`\ (\ from\: :ref:`int` = 0, to\: :ref:`int` = -1\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`select_all`\ (\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`unedit`\ (\ ) | - +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`apply_ime`\ (\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`cancel_ime`\ (\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear`\ (\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`delete_char_at_caret`\ (\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`delete_text`\ (\ from_column\: :ref:`int`, to_column\: :ref:`int`\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`deselect`\ (\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`edit`\ (\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PopupMenu` | :ref:`get_menu`\ (\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_next_composite_character_column`\ (\ column\: :ref:`int`\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_previous_composite_character_column`\ (\ column\: :ref:`int`\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_scroll_offset`\ (\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_selected_text`\ (\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_selection_from_column`\ (\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_selection_to_column`\ (\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_ime_text`\ (\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_redo`\ (\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_selection`\ (\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_undo`\ (\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`insert_text_at_caret`\ (\ text\: :ref:`String`\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_editing`\ (\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_menu_visible`\ (\ ) |const| | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`menu_option`\ (\ option\: :ref:`int`\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`select`\ (\ from\: :ref:`int` = 0, to\: :ref:`int` = -1\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`select_all`\ (\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`unedit`\ (\ ) | + +-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -698,6 +704,23 @@ Text alignment as defined in the :ref:`HorizontalAlignment` **backspace_deletes_composite_character_enabled** = ``false`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_backspace_deletes_composite_character_enabled**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **is_backspace_deletes_composite_character_enabled**\ (\ ) + +If ``true`` and :ref:`caret_mid_grapheme` is ``false``, backspace deletes an entire composite character such as ❤️‍🩹, instead of deleting part of the composite character. + +.. rst-class:: classref-item-separator + +---- + .. _class_LineEdit_property_caret_blink: .. rst-class:: classref-property @@ -1410,6 +1433,34 @@ You can add custom menu items or remove standard ones. Make sure your IDs don't ---- +.. _class_LineEdit_method_get_next_composite_character_column: + +.. rst-class:: classref-method + +:ref:`int` **get_next_composite_character_column**\ (\ column\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the correct column at the end of a composite character like ❤️‍🩹 (mending heart; Unicode: ``U+2764 U+FE0F U+200D U+1FA79``) which is comprised of more than one Unicode code point, if the caret is at the start of the composite character. Also returns the correct column with the caret at mid grapheme and for non-composite characters. + +\ **Note:** To check at caret location use ``get_next_composite_character_column(get_caret_column())`` + +.. rst-class:: classref-item-separator + +---- + +.. _class_LineEdit_method_get_previous_composite_character_column: + +.. rst-class:: classref-method + +:ref:`int` **get_previous_composite_character_column**\ (\ column\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the correct column at the start of a composite character like ❤️‍🩹 (mending heart; Unicode: ``U+2764 U+FE0F U+200D U+1FA79``) which is comprised of more than one Unicode code point, if the caret is at the end of the composite character. Also returns the correct column with the caret at mid grapheme and for non-composite characters. + +\ **Note:** To check at caret location use ``get_previous_composite_character_column(get_caret_column())`` + +.. rst-class:: classref-item-separator + +---- + .. _class_LineEdit_method_get_scroll_offset: .. rst-class:: classref-method diff --git a/classes/class_logger.rst b/classes/class_logger.rst new file mode 100644 index 000000000..9c7fd98f8 --- /dev/null +++ b/classes/class_logger.rst @@ -0,0 +1,131 @@ +: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/Logger.xml. + +.. _class_Logger: + +Logger +====== + +**Inherits:** :ref:`RefCounted` **<** :ref:`Object` + +Custom logger to receive messages from the internal error/warning stream. + +.. rst-class:: classref-introduction-group + +Description +----------- + +Custom logger to receive messages from the internal error/warning stream. Loggers are registered via :ref:`OS.add_logger()`. + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_log_error`\ (\ function\: :ref:`String`, file\: :ref:`String`, line\: :ref:`int`, code\: :ref:`String`, rationale\: :ref:`String`, editor_notify\: :ref:`bool`, error_type\: :ref:`int`, script_backtraces\: :ref:`Array`\[:ref:`ScriptBacktrace`\]\ ) |virtual| | + +--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_log_message`\ (\ message\: :ref:`String`, error\: :ref:`bool`\ ) |virtual| | + +--------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Enumerations +------------ + +.. _enum_Logger_ErrorType: + +.. rst-class:: classref-enumeration + +enum **ErrorType**: :ref:`🔗` + +.. _class_Logger_constant_ERROR_TYPE_ERROR: + +.. rst-class:: classref-enumeration-constant + +:ref:`ErrorType` **ERROR_TYPE_ERROR** = ``0`` + +The message received is an error. + +.. _class_Logger_constant_ERROR_TYPE_WARNING: + +.. rst-class:: classref-enumeration-constant + +:ref:`ErrorType` **ERROR_TYPE_WARNING** = ``1`` + +The message received is a warning. + +.. _class_Logger_constant_ERROR_TYPE_SCRIPT: + +.. rst-class:: classref-enumeration-constant + +:ref:`ErrorType` **ERROR_TYPE_SCRIPT** = ``2`` + +The message received is a script error. + +.. _class_Logger_constant_ERROR_TYPE_SHADER: + +.. rst-class:: classref-enumeration-constant + +:ref:`ErrorType` **ERROR_TYPE_SHADER** = ``3`` + +The message received is a shader error. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_Logger_private_method__log_error: + +.. rst-class:: classref-method + +|void| **_log_error**\ (\ function\: :ref:`String`, file\: :ref:`String`, line\: :ref:`int`, code\: :ref:`String`, rationale\: :ref:`String`, editor_notify\: :ref:`bool`, error_type\: :ref:`int`, script_backtraces\: :ref:`Array`\[:ref:`ScriptBacktrace`\]\ ) |virtual| :ref:`🔗` + +Called when an error is logged. The error provides the ``function``, ``file``, and ``line`` that it originated from, as well as either the ``code`` that generated the error or a ``rationale``. + +The type of error provided by ``error_type`` is described in the :ref:`ErrorType` enumeration. + +Additionally, ``script_backtraces`` provides backtraces for each of the script languages. These will only contain stack frames in editor builds and debug builds by default. To enable them for release builds as well, you need to enable :ref:`ProjectSettings.debug/settings/gdscript/always_track_call_stacks`. + +\ **Warning:** This function may be called from multiple different threads, so you may need to do your own locking. + +\ **Note:** ``script_backtraces`` will not contain any captured variables, due to its prohibitively high cost. To get those you will need to capture the backtraces yourself, from within the **Logger** virtual methods, using :ref:`Engine.capture_script_backtraces()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Logger_private_method__log_message: + +.. rst-class:: classref-method + +|void| **_log_message**\ (\ message\: :ref:`String`, error\: :ref:`bool`\ ) |virtual| :ref:`🔗` + +Called when a message is logged. If ``error`` is ``true``, then this message was meant to be sent to ``stderr``. + +\ **Warning:** This function may be called from multiple different threads, so you may need to do your own locking. + +.. |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.)` +.. |void| replace:: :abbr:`void (No return value.)` diff --git a/classes/class_os.rst b/classes/class_os.rst index a1c9ca211..8ec18834b 100644 --- a/classes/class_os.rst +++ b/classes/class_os.rst @@ -54,6 +54,8 @@ Methods .. table:: :widths: auto + +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_logger`\ (\ logger\: :ref:`Logger`\ ) | +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`alert`\ (\ text\: :ref:`String`, title\: :ref:`String` = "Alert!"\ ) | +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -183,6 +185,8 @@ Methods +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`read_string_from_stdin`\ (\ buffer_size\: :ref:`int` = 1024\ ) | +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`remove_logger`\ (\ logger\: :ref:`Logger`\ ) | + +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`request_permission`\ (\ name\: :ref:`String`\ ) | +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`request_permissions`\ (\ ) | @@ -446,6 +450,18 @@ The amount of sleeping between frames when the low-processor usage mode is enabl Method Descriptions ------------------- +.. _class_OS_method_add_logger: + +.. rst-class:: classref-method + +|void| **add_logger**\ (\ logger\: :ref:`Logger`\ ) :ref:`🔗` + +Add a custom logger to intercept the internal message stream. + +.. rst-class:: classref-item-separator + +---- + .. _class_OS_method_alert: .. rst-class:: classref-method @@ -919,7 +935,7 @@ Returns the file path to the current engine executable. On Android devices: Returns the list of dangerous permissions that have been granted. -On macOS: Returns the list of user selected folders accessible to the application (sandboxed applications only). Use the native file dialog to request folder access permission. +On macOS: Returns the list of granted permissions and user selected folders accessible to the application (sandboxed applications only). Use the native file dialog to request folder access permission. .. rst-class:: classref-item-separator @@ -1719,6 +1735,18 @@ Reads a user input as a UTF-8 encoded string from the standard input. This opera ---- +.. _class_OS_method_remove_logger: + +.. rst-class:: classref-method + +|void| **remove_logger**\ (\ logger\: :ref:`Logger`\ ) :ref:`🔗` + +Remove a custom logger added by :ref:`add_logger()`. + +.. rst-class:: classref-item-separator + +---- + .. _class_OS_method_request_permission: .. rst-class:: classref-method @@ -1733,9 +1761,11 @@ The ``name`` must be the full permission name. For example: - ``OS.request_permission("android.permission.POST_NOTIFICATIONS")``\ -\ **Note:** Permission must be checked during export. +- ``OS.request_permission("macos.permission.RECORD_SCREEN")``\ -\ **Note:** This method is only implemented on Android. +\ **Note:** On Android, permission must be checked during export. + +\ **Note:** This method is implemented on Android and macOS. .. rst-class:: classref-item-separator diff --git a/classes/class_progressbar.rst b/classes/class_progressbar.rst index 29ec3ad27..3ab0bbc77 100644 --- a/classes/class_progressbar.rst +++ b/classes/class_progressbar.rst @@ -19,7 +19,7 @@ A control used for visual representation of a percentage. Description ----------- -A control used for visual representation of a percentage. Shows fill percentage from right to left. +A control used for visual representation of a percentage. Shows the fill percentage in the center. Can also be used to show indeterminate progress. For more fill modes, use :ref:`TextureProgressBar` instead. .. rst-class:: classref-reftable-group diff --git a/classes/class_projectsettings.rst b/classes/class_projectsettings.rst index 0460b1916..9327a151d 100644 --- a/classes/class_projectsettings.rst +++ b/classes/class_projectsettings.rst @@ -283,6 +283,10 @@ Properties +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`String` | :ref:`debug/settings/crash_handler/message.editor` | ``"Please include this when reporting the bug on: https://github.com/godotengine/godot/issues"`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/settings/gdscript/always_track_call_stacks` | ``false`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debug/settings/gdscript/always_track_local_variables` | ``false`` | + +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`debug/settings/gdscript/max_call_stack` | ``1024`` | +---------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`debug/settings/physics_interpolation/enable_warnings` | ``true`` | @@ -3422,6 +3426,38 @@ Editor-only override for :ref:`debug/settings/crash_handler/message` **debug/settings/gdscript/always_track_call_stacks** = ``false`` :ref:`🔗` + +Whether GDScript call stacks will be tracked in release builds, thus allowing :ref:`Engine.capture_script_backtraces()` to function. + +Enabling this comes at the cost of roughly 40 KiB for every thread that runs any GDScript code. + +\ **Note:** This setting has no effect on editor builds or debug builds, where GDScript call stacks are tracked regardless. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ProjectSettings_property_debug/settings/gdscript/always_track_local_variables: + +.. rst-class:: classref-property + +:ref:`bool` **debug/settings/gdscript/always_track_local_variables** = ``false`` :ref:`🔗` + +Whether GDScript local variables will be tracked in all builds, including export builds, thus allowing :ref:`Engine.capture_script_backtraces()` to capture them when enabling its ``include_variables`` parameter. + +Enabling this comes at the cost of roughly 50 bytes of memory per local variable, for every compiled class in the entire project, so can be several MiB in larger projects. + +\ **Note:** This setting has no effect when running the game from the editor, where GDScript local variables are tracked regardless. + +.. rst-class:: classref-item-separator + +---- + .. _class_ProjectSettings_property_debug/settings/gdscript/max_call_stack: .. rst-class:: classref-property @@ -5372,9 +5408,7 @@ Maximum undo/redo history size for :ref:`TextEdit` fields. :ref:`bool` **gui/fonts/dynamic_fonts/use_oversampling** = ``true`` :ref:`🔗` -.. container:: contribute - - There is currently no description for this property. Please help us by :ref:`contributing one `! +If set to ``true`` and :ref:`display/window/stretch/mode` is set to **"canvas_items"**, font and :ref:`SVGTexture` oversampling is enabled in the main window. Use :ref:`Viewport.oversampling` to control oversampling in other viewports and windows. .. rst-class:: classref-item-separator diff --git a/classes/class_refcounted.rst b/classes/class_refcounted.rst index fdda0c7df..bd120a2e4 100644 --- a/classes/class_refcounted.rst +++ b/classes/class_refcounted.rst @@ -12,7 +12,7 @@ RefCounted **Inherits:** :ref:`Object` -**Inherited By:** :ref:`AESContext`, :ref:`AStar2D`, :ref:`AStar3D`, :ref:`AStarGrid2D`, :ref:`AudioEffectInstance`, :ref:`AudioSample`, :ref:`AudioSamplePlayback`, :ref:`AudioStreamPlayback`, :ref:`CameraFeed`, :ref:`CharFXTransform`, :ref:`ConfigFile`, :ref:`Crypto`, :ref:`DirAccess`, :ref:`DTLSServer`, :ref:`EditorContextMenuPlugin`, :ref:`EditorDebuggerPlugin`, :ref:`EditorDebuggerSession`, :ref:`EditorExportPlatform`, :ref:`EditorExportPlugin`, :ref:`EditorExportPreset`, :ref:`EditorFeatureProfile`, :ref:`EditorFileSystemImportFormatSupportQuery`, :ref:`EditorInspectorPlugin`, :ref:`EditorResourceConversionPlugin`, :ref:`EditorResourcePreviewGenerator`, :ref:`EditorResourceTooltipPlugin`, :ref:`EditorSceneFormatImporter`, :ref:`EditorScenePostImport`, :ref:`EditorScenePostImportPlugin`, :ref:`EditorScript`, :ref:`EditorTranslationParserPlugin`, :ref:`EncodedObjectAsID`, :ref:`ENetConnection`, :ref:`EngineProfiler`, :ref:`Expression`, :ref:`FileAccess`, :ref:`GLTFObjectModelProperty`, :ref:`HashingContext`, :ref:`HMACContext`, :ref:`HTTPClient`, :ref:`ImageFormatLoader`, :ref:`JavaClass`, :ref:`JavaObject`, :ref:`JavaScriptObject`, :ref:`KinematicCollision2D`, :ref:`KinematicCollision3D`, :ref:`Lightmapper`, :ref:`MeshConvexDecompositionSettings`, :ref:`MeshDataTool`, :ref:`MultiplayerAPI`, :ref:`Mutex`, :ref:`NavigationPathQueryParameters2D`, :ref:`NavigationPathQueryParameters3D`, :ref:`NavigationPathQueryResult2D`, :ref:`NavigationPathQueryResult3D`, :ref:`Node3DGizmo`, :ref:`OggPacketSequencePlayback`, :ref:`OpenXRAPIExtension`, :ref:`OpenXRFutureResult`, :ref:`PackedDataContainerRef`, :ref:`PacketPeer`, :ref:`PCKPacker`, :ref:`PhysicsPointQueryParameters2D`, :ref:`PhysicsPointQueryParameters3D`, :ref:`PhysicsRayQueryParameters2D`, :ref:`PhysicsRayQueryParameters3D`, :ref:`PhysicsShapeQueryParameters2D`, :ref:`PhysicsShapeQueryParameters3D`, :ref:`PhysicsTestMotionParameters2D`, :ref:`PhysicsTestMotionParameters3D`, :ref:`PhysicsTestMotionResult2D`, :ref:`PhysicsTestMotionResult3D`, :ref:`RandomNumberGenerator`, :ref:`RDAttachmentFormat`, :ref:`RDFramebufferPass`, :ref:`RDPipelineColorBlendState`, :ref:`RDPipelineColorBlendStateAttachment`, :ref:`RDPipelineDepthStencilState`, :ref:`RDPipelineMultisampleState`, :ref:`RDPipelineRasterizationState`, :ref:`RDPipelineSpecializationConstant`, :ref:`RDSamplerState`, :ref:`RDShaderSource`, :ref:`RDTextureFormat`, :ref:`RDTextureView`, :ref:`RDUniform`, :ref:`RDVertexAttribute`, :ref:`RegEx`, :ref:`RegExMatch`, :ref:`RenderSceneBuffers`, :ref:`RenderSceneBuffersConfiguration`, :ref:`Resource`, :ref:`ResourceFormatLoader`, :ref:`ResourceFormatSaver`, :ref:`ResourceImporter`, :ref:`SceneState`, :ref:`SceneTreeTimer`, :ref:`Semaphore`, :ref:`SkinReference`, :ref:`StreamPeer`, :ref:`SurfaceTool`, :ref:`TCPServer`, :ref:`TextLine`, :ref:`TextParagraph`, :ref:`TextServer`, :ref:`Thread`, :ref:`TLSOptions`, :ref:`TranslationDomain`, :ref:`TriangleMesh`, :ref:`Tween`, :ref:`Tweener`, :ref:`UDPServer`, :ref:`UPNP`, :ref:`UPNPDevice`, :ref:`WeakRef`, :ref:`WebRTCPeerConnection`, :ref:`XMLParser`, :ref:`XRInterface`, :ref:`XRPose`, :ref:`XRTracker`, :ref:`ZIPPacker`, :ref:`ZIPReader` +**Inherited By:** :ref:`AESContext`, :ref:`AStar2D`, :ref:`AStar3D`, :ref:`AStarGrid2D`, :ref:`AudioEffectInstance`, :ref:`AudioSample`, :ref:`AudioSamplePlayback`, :ref:`AudioStreamPlayback`, :ref:`CameraFeed`, :ref:`CharFXTransform`, :ref:`ConfigFile`, :ref:`Crypto`, :ref:`DirAccess`, :ref:`DTLSServer`, :ref:`EditorContextMenuPlugin`, :ref:`EditorDebuggerPlugin`, :ref:`EditorDebuggerSession`, :ref:`EditorExportPlatform`, :ref:`EditorExportPlugin`, :ref:`EditorExportPreset`, :ref:`EditorFeatureProfile`, :ref:`EditorFileSystemImportFormatSupportQuery`, :ref:`EditorInspectorPlugin`, :ref:`EditorResourceConversionPlugin`, :ref:`EditorResourcePreviewGenerator`, :ref:`EditorResourceTooltipPlugin`, :ref:`EditorSceneFormatImporter`, :ref:`EditorScenePostImport`, :ref:`EditorScenePostImportPlugin`, :ref:`EditorScript`, :ref:`EditorTranslationParserPlugin`, :ref:`EncodedObjectAsID`, :ref:`ENetConnection`, :ref:`EngineProfiler`, :ref:`Expression`, :ref:`FileAccess`, :ref:`GLTFObjectModelProperty`, :ref:`HashingContext`, :ref:`HMACContext`, :ref:`HTTPClient`, :ref:`ImageFormatLoader`, :ref:`JavaClass`, :ref:`JavaObject`, :ref:`JavaScriptObject`, :ref:`KinematicCollision2D`, :ref:`KinematicCollision3D`, :ref:`Lightmapper`, :ref:`Logger`, :ref:`MeshConvexDecompositionSettings`, :ref:`MeshDataTool`, :ref:`MultiplayerAPI`, :ref:`Mutex`, :ref:`NavigationPathQueryParameters2D`, :ref:`NavigationPathQueryParameters3D`, :ref:`NavigationPathQueryResult2D`, :ref:`NavigationPathQueryResult3D`, :ref:`Node3DGizmo`, :ref:`OggPacketSequencePlayback`, :ref:`OpenXRAPIExtension`, :ref:`OpenXRFutureResult`, :ref:`PackedDataContainerRef`, :ref:`PacketPeer`, :ref:`PCKPacker`, :ref:`PhysicsPointQueryParameters2D`, :ref:`PhysicsPointQueryParameters3D`, :ref:`PhysicsRayQueryParameters2D`, :ref:`PhysicsRayQueryParameters3D`, :ref:`PhysicsShapeQueryParameters2D`, :ref:`PhysicsShapeQueryParameters3D`, :ref:`PhysicsTestMotionParameters2D`, :ref:`PhysicsTestMotionParameters3D`, :ref:`PhysicsTestMotionResult2D`, :ref:`PhysicsTestMotionResult3D`, :ref:`RandomNumberGenerator`, :ref:`RDAttachmentFormat`, :ref:`RDFramebufferPass`, :ref:`RDPipelineColorBlendState`, :ref:`RDPipelineColorBlendStateAttachment`, :ref:`RDPipelineDepthStencilState`, :ref:`RDPipelineMultisampleState`, :ref:`RDPipelineRasterizationState`, :ref:`RDPipelineSpecializationConstant`, :ref:`RDSamplerState`, :ref:`RDShaderSource`, :ref:`RDTextureFormat`, :ref:`RDTextureView`, :ref:`RDUniform`, :ref:`RDVertexAttribute`, :ref:`RegEx`, :ref:`RegExMatch`, :ref:`RenderSceneBuffers`, :ref:`RenderSceneBuffersConfiguration`, :ref:`Resource`, :ref:`ResourceFormatLoader`, :ref:`ResourceFormatSaver`, :ref:`ResourceImporter`, :ref:`SceneState`, :ref:`SceneTreeTimer`, :ref:`ScriptBacktrace`, :ref:`Semaphore`, :ref:`SkinReference`, :ref:`StreamPeer`, :ref:`SurfaceTool`, :ref:`TCPServer`, :ref:`TextLine`, :ref:`TextParagraph`, :ref:`TextServer`, :ref:`Thread`, :ref:`TLSOptions`, :ref:`TranslationDomain`, :ref:`TriangleMesh`, :ref:`Tween`, :ref:`Tweener`, :ref:`UDPServer`, :ref:`UPNP`, :ref:`UPNPDevice`, :ref:`WeakRef`, :ref:`WebRTCPeerConnection`, :ref:`XMLParser`, :ref:`XRInterface`, :ref:`XRPose`, :ref:`XRTracker`, :ref:`ZIPPacker`, :ref:`ZIPReader` Base class for reference-counted objects. diff --git a/classes/class_renderingserver.rst b/classes/class_renderingserver.rst index f185ff893..596e11488 100644 --- a/classes/class_renderingserver.rst +++ b/classes/class_renderingserver.rst @@ -523,6 +523,8 @@ Methods +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`instance_set_visible`\ (\ instance\: :ref:`RID`, visible\: :ref:`bool`\ ) | +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`instance_teleport`\ (\ instance\: :ref:`RID`\ ) | + +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt64Array` | :ref:`instances_cull_aabb`\ (\ aabb\: :ref:`AABB`, scenario\: :ref:`RID` = RID()\ ) |const| | +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PackedInt64Array` | :ref:`instances_cull_convex`\ (\ convex\: :ref:`Array`\[:ref:`Plane`\], scenario\: :ref:`RID` = RID()\ ) |const| | @@ -9030,6 +9032,18 @@ Sets whether an instance is drawn or not. Equivalent to :ref:`Node3D.visible`\ ) :ref:`🔗` + +Resets motion vectors and other interpolated values. Use this *after* teleporting a mesh from one position to another to avoid ghosting artifacts. + +.. rst-class:: classref-item-separator + +---- + .. _class_RenderingServer_method_instances_cull_aabb: .. rst-class:: classref-method diff --git a/classes/class_resourceimporter.rst b/classes/class_resourceimporter.rst index 0e46655f0..ce91508b1 100644 --- a/classes/class_resourceimporter.rst +++ b/classes/class_resourceimporter.rst @@ -12,7 +12,7 @@ ResourceImporter **Inherits:** :ref:`RefCounted` **<** :ref:`Object` -**Inherited By:** :ref:`EditorImportPlugin`, :ref:`ResourceImporterBitMap`, :ref:`ResourceImporterBMFont`, :ref:`ResourceImporterCSVTranslation`, :ref:`ResourceImporterDynamicFont`, :ref:`ResourceImporterImage`, :ref:`ResourceImporterImageFont`, :ref:`ResourceImporterLayeredTexture`, :ref:`ResourceImporterMP3`, :ref:`ResourceImporterOBJ`, :ref:`ResourceImporterOggVorbis`, :ref:`ResourceImporterScene`, :ref:`ResourceImporterShaderFile`, :ref:`ResourceImporterTexture`, :ref:`ResourceImporterTextureAtlas`, :ref:`ResourceImporterWAV` +**Inherited By:** :ref:`EditorImportPlugin`, :ref:`ResourceImporterBitMap`, :ref:`ResourceImporterBMFont`, :ref:`ResourceImporterCSVTranslation`, :ref:`ResourceImporterDynamicFont`, :ref:`ResourceImporterImage`, :ref:`ResourceImporterImageFont`, :ref:`ResourceImporterLayeredTexture`, :ref:`ResourceImporterMP3`, :ref:`ResourceImporterOBJ`, :ref:`ResourceImporterOggVorbis`, :ref:`ResourceImporterScene`, :ref:`ResourceImporterShaderFile`, :ref:`ResourceImporterSVG`, :ref:`ResourceImporterTexture`, :ref:`ResourceImporterTextureAtlas`, :ref:`ResourceImporterWAV` Base class for resource importers. diff --git a/classes/class_resourceimporterscene.rst b/classes/class_resourceimporterscene.rst index ed8394e85..ca356d382 100644 --- a/classes/class_resourceimporterscene.rst +++ b/classes/class_resourceimporterscene.rst @@ -77,6 +77,8 @@ Properties +-------------------------------------+------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`String` | :ref:`nodes/root_type` | ``""`` | +-------------------------------------+------------------------------------------------------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`nodes/use_name_suffixes` | ``true`` | + +-------------------------------------+------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`nodes/use_node_type_suffixes` | ``true`` | +-------------------------------------+------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`skins/use_named_skins` | ``true`` | @@ -311,13 +313,25 @@ Override for the root node type. If empty, the root node will use what the scene ---- +.. _class_ResourceImporterScene_property_nodes/use_name_suffixes: + +.. rst-class:: classref-property + +:ref:`bool` **nodes/use_name_suffixes** = ``true`` :ref:`🔗` + +If ``true``, will use suffixes in the names of imported objects such as nodes and resources to determine types and properties, such as ``-noimp`` to skip import of a node or animation, ``-alpha`` to enable alpha transparency on a material, and ``-vcol`` to enable vertex colors on a material. Disabling this makes editor-imported files more similar to the original files, and more similar to files imported at runtime. See :doc:`Node type customization using name suffixes <../tutorials/assets_pipeline/importing_3d_scenes/node_type_customization>` for more information. + +.. rst-class:: classref-item-separator + +---- + .. _class_ResourceImporterScene_property_nodes/use_node_type_suffixes: .. rst-class:: classref-property :ref:`bool` **nodes/use_node_type_suffixes** = ``true`` :ref:`🔗` -If ``true``, use suffixes in the node names to determine the node type, such as ``-col`` for collision shapes. Disabling this makes editor-imported files more similar to the original files, and more similar to importing files at runtime. See :doc:`Node type customization using name suffixes <../tutorials/assets_pipeline/importing_3d_scenes/node_type_customization>` for more information. +If ``true``, will use suffixes in the node names to determine the node type, such as ``-col`` for collision shapes. This is only used when :ref:`nodes/use_name_suffixes` is ``true``. Disabling this makes editor-imported files more similar to the original files, and more similar to files imported at runtime. See :doc:`Node type customization using name suffixes <../tutorials/assets_pipeline/importing_3d_scenes/node_type_customization>` for more information. .. rst-class:: classref-item-separator diff --git a/classes/class_resourceimportersvg.rst b/classes/class_resourceimportersvg.rst new file mode 100644 index 000000000..a6e6a1a66 --- /dev/null +++ b/classes/class_resourceimportersvg.rst @@ -0,0 +1,102 @@ +: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/ResourceImporterSVG.xml. + +.. _class_ResourceImporterSVG: + +ResourceImporterSVG +=================== + +**Inherits:** :ref:`ResourceImporter` **<** :ref:`RefCounted` **<** :ref:`Object` + +Imports a SVG file as a scalable texture for use in 2D or 3D rendering. + +.. rst-class:: classref-introduction-group + +Description +----------- + +This importer imports :ref:`SVGTexture` resources. See also :ref:`ResourceImporterTexture` and :ref:`ResourceImporterImage`. + +.. rst-class:: classref-reftable-group + +Properties +---------- + +.. table:: + :widths: auto + + +-------------------------------------+------------------------------------------------------------------+----------+ + | :ref:`float` | :ref:`base_scale` | ``1.0`` | + +-------------------------------------+------------------------------------------------------------------+----------+ + | :ref:`Dictionary` | :ref:`color_map` | ``{}`` | + +-------------------------------------+------------------------------------------------------------------+----------+ + | :ref:`bool` | :ref:`compress` | ``true`` | + +-------------------------------------+------------------------------------------------------------------+----------+ + | :ref:`float` | :ref:`saturation` | ``1.0`` | + +-------------------------------------+------------------------------------------------------------------+----------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Property Descriptions +--------------------- + +.. _class_ResourceImporterSVG_property_base_scale: + +.. rst-class:: classref-property + +:ref:`float` **base_scale** = ``1.0`` :ref:`🔗` + +SVG texture scale. ``1.0`` is the original SVG size. Higher values result in a larger image. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ResourceImporterSVG_property_color_map: + +.. rst-class:: classref-property + +:ref:`Dictionary` **color_map** = ``{}`` :ref:`🔗` + +If set, remaps SVG texture colors according to :ref:`Color`-:ref:`Color` map. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ResourceImporterSVG_property_compress: + +.. rst-class:: classref-property + +:ref:`bool` **compress** = ``true`` :ref:`🔗` + +If ``true``, uses lossless compression for the SVG source. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ResourceImporterSVG_property_saturation: + +.. rst-class:: classref-property + +:ref:`float` **saturation** = ``1.0`` :ref:`🔗` + +Overrides texture saturation. + +.. |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.)` +.. |void| replace:: :abbr:`void (No return value.)` diff --git a/classes/class_scriptbacktrace.rst b/classes/class_scriptbacktrace.rst new file mode 100644 index 000000000..7a9bba502 --- /dev/null +++ b/classes/class_scriptbacktrace.rst @@ -0,0 +1,272 @@ +: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/ScriptBacktrace.xml. + +.. _class_ScriptBacktrace: + +ScriptBacktrace +=============== + +**Inherits:** :ref:`RefCounted` **<** :ref:`Object` + +A captured backtrace of a specific script language. + +.. rst-class:: classref-introduction-group + +Description +----------- + +**ScriptBacktrace** holds an already captured backtrace of a specific script language, such as GDScript or C#, which are captured using :ref:`Engine.capture_script_backtraces()`. + +See :ref:`ProjectSettings.debug/settings/gdscript/always_track_call_stacks` and :ref:`ProjectSettings.debug/settings/gdscript/always_track_local_variables` for ways of controlling the contents of this class. + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`format`\ (\ indent_all\: :ref:`int` = 0, indent_frames\: :ref:`int` = 4\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_frame_count`\ (\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_frame_file`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_frame_function`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_frame_line`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_global_variable_count`\ (\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_global_variable_name`\ (\ variable_index\: :ref:`int`\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`get_global_variable_value`\ (\ variable_index\: :ref:`int`\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_language_name`\ (\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_local_variable_count`\ (\ frame_index\: :ref:`int`\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_local_variable_name`\ (\ frame_index\: :ref:`int`, variable_index\: :ref:`int`\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`get_local_variable_value`\ (\ frame_index\: :ref:`int`, variable_index\: :ref:`int`\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_member_variable_count`\ (\ frame_index\: :ref:`int`\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_member_variable_name`\ (\ frame_index\: :ref:`int`, variable_index\: :ref:`int`\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`get_member_variable_value`\ (\ frame_index\: :ref:`int`, variable_index\: :ref:`int`\ ) |const| | + +-------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_ScriptBacktrace_method_format: + +.. rst-class:: classref-method + +:ref:`String` **format**\ (\ indent_all\: :ref:`int` = 0, indent_frames\: :ref:`int` = 4\ ) |const| :ref:`🔗` + +Converts the backtrace to a :ref:`String`, where the entire string will be indented by ``indent_all`` number of spaces, and the individual stack frames will be additionally indented by ``indent_frames`` number of spaces. + +\ **Note:** Calling :ref:`Object.to_string()` on a **ScriptBacktrace** will produce the same output as calling :ref:`format()` with all parameters left at their default values. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_frame_count: + +.. rst-class:: classref-method + +:ref:`int` **get_frame_count**\ (\ ) |const| :ref:`🔗` + +Returns the number of stack frames in the backtrace. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_frame_file: + +.. rst-class:: classref-method + +:ref:`String` **get_frame_file**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the file name of the call site represented by the stack frame at the specified index. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_frame_function: + +.. rst-class:: classref-method + +:ref:`String` **get_frame_function**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the name of the function called at the stack frame at the specified index. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_frame_line: + +.. rst-class:: classref-method + +:ref:`int` **get_frame_line**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the line number of the call site represented by the stack frame at the specified index. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_global_variable_count: + +.. rst-class:: classref-method + +:ref:`int` **get_global_variable_count**\ (\ ) |const| :ref:`🔗` + +Returns the number of global variables (e.g. autoload singletons) in the backtrace. + +\ **Note:** This will be non-zero only if the ``include_variables`` parameter was ``true`` when capturing the backtrace with :ref:`Engine.capture_script_backtraces()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_global_variable_name: + +.. rst-class:: classref-method + +:ref:`String` **get_global_variable_name**\ (\ variable_index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the name of the global variable at the specified index. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_global_variable_value: + +.. rst-class:: classref-method + +:ref:`Variant` **get_global_variable_value**\ (\ variable_index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the value of the global variable at the specified index. + +\ **Warning:** With GDScript backtraces, the returned :ref:`Variant` will be the variable's actual value, including any object references. This means that storing the returned :ref:`Variant` will prevent any such object from being deallocated, so it's generally recommended not to do so. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_language_name: + +.. rst-class:: classref-method + +:ref:`String` **get_language_name**\ (\ ) |const| :ref:`🔗` + +Returns the name of the script language that this backtrace was captured from. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_local_variable_count: + +.. rst-class:: classref-method + +:ref:`int` **get_local_variable_count**\ (\ frame_index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the number of local variables in the stack frame at the specified index. + +\ **Note:** This will be non-zero only if the ``include_variables`` parameter was ``true`` when capturing the backtrace with :ref:`Engine.capture_script_backtraces()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_local_variable_name: + +.. rst-class:: classref-method + +:ref:`String` **get_local_variable_name**\ (\ frame_index\: :ref:`int`, variable_index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the name of the local variable at the specified ``variable_index`` in the stack frame at the specified ``frame_index``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_local_variable_value: + +.. rst-class:: classref-method + +:ref:`Variant` **get_local_variable_value**\ (\ frame_index\: :ref:`int`, variable_index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the value of the local variable at the specified ``variable_index`` in the stack frame at the specified ``frame_index``. + +\ **Warning:** With GDScript backtraces, the returned :ref:`Variant` will be the variable's actual value, including any object references. This means that storing the returned :ref:`Variant` will prevent any such object from being deallocated, so it's generally recommended not to do so. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_member_variable_count: + +.. rst-class:: classref-method + +:ref:`int` **get_member_variable_count**\ (\ frame_index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the number of member variables in the stack frame at the specified index. + +\ **Note:** This will be non-zero only if the ``include_variables`` parameter was ``true`` when capturing the backtrace with :ref:`Engine.capture_script_backtraces()`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_member_variable_name: + +.. rst-class:: classref-method + +:ref:`String` **get_member_variable_name**\ (\ frame_index\: :ref:`int`, variable_index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the name of the member variable at the specified ``variable_index`` in the stack frame at the specified ``frame_index``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_ScriptBacktrace_method_get_member_variable_value: + +.. rst-class:: classref-method + +:ref:`Variant` **get_member_variable_value**\ (\ frame_index\: :ref:`int`, variable_index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the value of the member variable at the specified ``variable_index`` in the stack frame at the specified ``frame_index``. + +\ **Warning:** With GDScript backtraces, the returned :ref:`Variant` will be the variable's actual value, including any object references. This means that storing the returned :ref:`Variant` will prevent any such object from being deallocated, so it's generally recommended not to do so. + +.. |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.)` +.. |void| replace:: :abbr:`void (No return value.)` diff --git a/classes/class_svgtexture.rst b/classes/class_svgtexture.rst new file mode 100644 index 000000000..004cb1aa9 --- /dev/null +++ b/classes/class_svgtexture.rst @@ -0,0 +1,176 @@ +: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/SVGTexture.xml. + +.. _class_SVGTexture: + +SVGTexture +========== + +**Inherits:** :ref:`Texture2D` **<** :ref:`Texture` **<** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` + +A scalable :ref:`Texture2D` based on an SVG image. + +.. rst-class:: classref-introduction-group + +Description +----------- + +A scalable :ref:`Texture2D` based on an SVG image. **SVGTexture**\ s are automatically re-rasterized to match font oversampling. + +.. rst-class:: classref-reftable-group + +Properties +---------- + +.. table:: + :widths: auto + + +-------------------------------------+---------------------------------------------------------+----------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`base_scale` | ``1.0`` | + +-------------------------------------+---------------------------------------------------------+----------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`color_map` | ``{}`` | + +-------------------------------------+---------------------------------------------------------+----------------------------------------------------------------------------------------+ + | :ref:`bool` | resource_local_to_scene | ``false`` (overrides :ref:`Resource`) | + +-------------------------------------+---------------------------------------------------------+----------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`saturation` | ``1.0`` | + +-------------------------------------+---------------------------------------------------------+----------------------------------------------------------------------------------------+ + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`SVGTexture` | :ref:`create_from_string`\ (\ source\: :ref:`String`, scale\: :ref:`float` = 1.0, saturation\: :ref:`float` = 1.0, color_map\: :ref:`Dictionary` = {}\ ) |static| | + +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_source`\ (\ ) |const| | + +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_size_override`\ (\ size\: :ref:`Vector2i`\ ) | + +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_source`\ (\ source\: :ref:`String`\ ) | + +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Property Descriptions +--------------------- + +.. _class_SVGTexture_property_base_scale: + +.. rst-class:: classref-property + +:ref:`float` **base_scale** = ``1.0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_base_scale**\ (\ value\: :ref:`float`\ ) +- :ref:`float` **get_base_scale**\ (\ ) + +SVG texture scale. ``1.0`` is the original SVG size. Higher values result in a larger image. + +.. rst-class:: classref-item-separator + +---- + +.. _class_SVGTexture_property_color_map: + +.. rst-class:: classref-property + +:ref:`Dictionary` **color_map** = ``{}`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_color_map**\ (\ value\: :ref:`Dictionary`\ ) +- :ref:`Dictionary` **get_color_map**\ (\ ) + +If set, remaps SVG texture colors according to :ref:`Color`-:ref:`Color` map. + +.. rst-class:: classref-item-separator + +---- + +.. _class_SVGTexture_property_saturation: + +.. rst-class:: classref-property + +:ref:`float` **saturation** = ``1.0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_saturation**\ (\ value\: :ref:`float`\ ) +- :ref:`float` **get_saturation**\ (\ ) + +Overrides texture saturation. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_SVGTexture_method_create_from_string: + +.. rst-class:: classref-method + +:ref:`SVGTexture` **create_from_string**\ (\ source\: :ref:`String`, scale\: :ref:`float` = 1.0, saturation\: :ref:`float` = 1.0, color_map\: :ref:`Dictionary` = {}\ ) |static| :ref:`🔗` + +Creates a new **SVGTexture** and initializes it by allocating and setting the SVG data from string. + +.. rst-class:: classref-item-separator + +---- + +.. _class_SVGTexture_method_get_source: + +.. rst-class:: classref-method + +:ref:`String` **get_source**\ (\ ) |const| :ref:`🔗` + +Returns SVG source code. + +.. rst-class:: classref-item-separator + +---- + +.. _class_SVGTexture_method_set_size_override: + +.. rst-class:: classref-method + +|void| **set_size_override**\ (\ size\: :ref:`Vector2i`\ ) :ref:`🔗` + +Resizes the texture to the specified dimensions. + +.. rst-class:: classref-item-separator + +---- + +.. _class_SVGTexture_method_set_source: + +.. rst-class:: classref-method + +|void| **set_source**\ (\ source\: :ref:`String`\ ) :ref:`🔗` + +Sets SVG source code. + +.. |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.)` +.. |void| replace:: :abbr:`void (No return value.)` diff --git a/classes/class_textedit.rst b/classes/class_textedit.rst index 42bf41688..540963ed5 100644 --- a/classes/class_textedit.rst +++ b/classes/class_textedit.rst @@ -46,103 +46,105 @@ Properties .. table:: :widths: auto - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`AutowrapMode` | :ref:`autowrap_mode` | ``3`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`caret_blink` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`caret_blink_interval` | ``0.65`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`caret_draw_when_editable_disabled` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`caret_mid_grapheme` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`caret_move_on_right_click` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`caret_multiple` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`CaretType` | :ref:`caret_type` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | clip_contents | ``true`` (overrides :ref:`Control`) | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`context_menu_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`custom_word_separators` | ``""`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`deselect_on_focus_loss_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`drag_and_drop_selection_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`draw_control_chars` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`draw_spaces` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`draw_tabs` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editable` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`emoji_menu_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`empty_selection_clipboard_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`highlight_all_occurrences` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`highlight_current_line` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`indent_wrapped_lines` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`language` | ``""`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`middle_mouse_paste_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`minimap_draw` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`minimap_width` | ``80`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`CursorShape` | mouse_default_cursor_shape | ``1`` (overrides :ref:`Control`) | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`placeholder_text` | ``""`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`scroll_fit_content_height` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`scroll_fit_content_width` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`scroll_horizontal` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`scroll_past_end_of_file` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`scroll_smooth` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`scroll_v_scroll_speed` | ``80.0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`scroll_vertical` | ``0.0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`selecting_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shortcut_keys_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`StructuredTextParser` | :ref:`structured_text_bidi_override` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`Array` | :ref:`structured_text_bidi_override_options` | ``[]`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`SyntaxHighlighter` | :ref:`syntax_highlighter` | | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`tab_input_mode` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`text` | ``""`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`TextDirection` | :ref:`text_direction` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`use_custom_word_separators` | ``false`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`use_default_word_separators` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`virtual_keyboard_enabled` | ``true`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ - | :ref:`LineWrappingMode` | :ref:`wrap_mode` | ``0`` | - +-------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`AutowrapMode` | :ref:`autowrap_mode` | ``3`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`backspace_deletes_composite_character_enabled` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`caret_blink` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`caret_blink_interval` | ``0.65`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`caret_draw_when_editable_disabled` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`caret_mid_grapheme` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`caret_move_on_right_click` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`caret_multiple` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`CaretType` | :ref:`caret_type` | ``0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | clip_contents | ``true`` (overrides :ref:`Control`) | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`context_menu_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`custom_word_separators` | ``""`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`deselect_on_focus_loss_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`drag_and_drop_selection_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`draw_control_chars` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`draw_spaces` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`draw_tabs` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editable` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`emoji_menu_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`empty_selection_clipboard_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`highlight_all_occurrences` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`highlight_current_line` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`indent_wrapped_lines` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`language` | ``""`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`middle_mouse_paste_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`minimap_draw` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`minimap_width` | ``80`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`CursorShape` | mouse_default_cursor_shape | ``1`` (overrides :ref:`Control`) | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`placeholder_text` | ``""`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`scroll_fit_content_height` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`scroll_fit_content_width` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`scroll_horizontal` | ``0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`scroll_past_end_of_file` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`scroll_smooth` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`scroll_v_scroll_speed` | ``80.0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`scroll_vertical` | ``0.0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`selecting_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shortcut_keys_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`StructuredTextParser` | :ref:`structured_text_bidi_override` | ``0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`Array` | :ref:`structured_text_bidi_override_options` | ``[]`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`SyntaxHighlighter` | :ref:`syntax_highlighter` | | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`tab_input_mode` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`text` | ``""`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`TextDirection` | :ref:`text_direction` | ``0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`use_custom_word_separators` | ``false`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`use_default_word_separators` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`virtual_keyboard_enabled` | ``true`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ + | :ref:`LineWrappingMode` | :ref:`wrap_mode` | ``0`` | + +-------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -281,12 +283,16 @@ Methods +--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_minimap_visible_lines`\ (\ ) |const| | +--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_next_composite_character_column`\ (\ line\: :ref:`int`, column\: :ref:`int`\ ) |const| | + +--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2i` | :ref:`get_next_visible_line_index_offset_from`\ (\ line\: :ref:`int`, wrap_index\: :ref:`int`, visible_amount\: :ref:`int`\ ) |const| | +--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_next_visible_line_offset_from`\ (\ line\: :ref:`int`, visible_amount\: :ref:`int`\ ) |const| | +--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2i` | :ref:`get_pos_at_line_column`\ (\ line\: :ref:`int`, column\: :ref:`int`\ ) |const| | +--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_previous_composite_character_column`\ (\ line\: :ref:`int`, column\: :ref:`int`\ ) |const| | + +--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Rect2i` | :ref:`get_rect_at_line_column`\ (\ line\: :ref:`int`, column\: :ref:`int`\ ) |const| | +--------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_saved_version`\ (\ ) |const| | @@ -1126,6 +1132,23 @@ If :ref:`wrap_mode` is set to :ref:`LINE_WRAP ---- +.. _class_TextEdit_property_backspace_deletes_composite_character_enabled: + +.. rst-class:: classref-property + +:ref:`bool` **backspace_deletes_composite_character_enabled** = ``false`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_backspace_deletes_composite_character_enabled**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **is_backspace_deletes_composite_character_enabled**\ (\ ) + +If ``true`` and :ref:`caret_mid_grapheme` is ``false``, backspace deletes an entire composite character such as ❤️‍🩹, instead of deleting part of the composite character. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextEdit_property_caret_blink: .. rst-class:: classref-property @@ -2735,6 +2758,20 @@ Returns the number of lines that may be drawn on the minimap. ---- +.. _class_TextEdit_method_get_next_composite_character_column: + +.. rst-class:: classref-method + +:ref:`int` **get_next_composite_character_column**\ (\ line\: :ref:`int`, column\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the correct column at the end of a composite character like ❤️‍🩹 (mending heart; Unicode: ``U+2764 U+FE0F U+200D U+1FA79``) which is comprised of more than one Unicode code point, if the caret is at the start of the composite character. Also returns the correct column with the caret at mid grapheme and for non-composite characters. + +\ **Note:** To check at caret location use ``get_next_composite_character_column(get_caret_line(), get_caret_column())`` + +.. rst-class:: classref-item-separator + +---- + .. _class_TextEdit_method_get_next_visible_line_index_offset_from: .. rst-class:: classref-method @@ -2773,6 +2810,20 @@ Returns the local position for the given ``line`` and ``column``. If ``x`` or `` ---- +.. _class_TextEdit_method_get_previous_composite_character_column: + +.. rst-class:: classref-method + +:ref:`int` **get_previous_composite_character_column**\ (\ line\: :ref:`int`, column\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the correct column at the start of a composite character like ❤️‍🩹 (mending heart; Unicode: ``U+2764 U+FE0F U+200D U+1FA79``) which is comprised of more than one Unicode code point, if the caret is at the end of the composite character. Also returns the correct column with the caret at mid grapheme and for non-composite characters. + +\ **Note:** To check at caret location use ``get_previous_composite_character_column(get_caret_line(), get_caret_column())`` + +.. rst-class:: classref-item-separator + +---- + .. _class_TextEdit_method_get_rect_at_line_column: .. rst-class:: classref-method diff --git a/classes/class_texture2d.rst b/classes/class_texture2d.rst index b89347854..27692c292 100644 --- a/classes/class_texture2d.rst +++ b/classes/class_texture2d.rst @@ -12,7 +12,7 @@ Texture2D **Inherits:** :ref:`Texture` **<** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` -**Inherited By:** :ref:`AnimatedTexture`, :ref:`AtlasTexture`, :ref:`CameraTexture`, :ref:`CanvasTexture`, :ref:`CompressedTexture2D`, :ref:`CurveTexture`, :ref:`CurveXYZTexture`, :ref:`ExternalTexture`, :ref:`GradientTexture1D`, :ref:`GradientTexture2D`, :ref:`ImageTexture`, :ref:`MeshTexture`, :ref:`NoiseTexture2D`, :ref:`PlaceholderTexture2D`, :ref:`PortableCompressedTexture2D`, :ref:`Texture2DRD`, :ref:`ViewportTexture` +**Inherited By:** :ref:`AnimatedTexture`, :ref:`AtlasTexture`, :ref:`CameraTexture`, :ref:`CanvasTexture`, :ref:`CompressedTexture2D`, :ref:`CurveTexture`, :ref:`CurveXYZTexture`, :ref:`ExternalTexture`, :ref:`GradientTexture1D`, :ref:`GradientTexture2D`, :ref:`ImageTexture`, :ref:`MeshTexture`, :ref:`NoiseTexture2D`, :ref:`PlaceholderTexture2D`, :ref:`PortableCompressedTexture2D`, :ref:`SVGTexture`, :ref:`Texture2DRD`, :ref:`ViewportTexture` Texture for 2D and 3D. diff --git a/classes/class_vector2.rst b/classes/class_vector2.rst index d6e6aa447..1ed167fcc 100644 --- a/classes/class_vector2.rst +++ b/classes/class_vector2.rst @@ -669,7 +669,7 @@ Returns a new vector with all components rounded down (towards negative infinity :ref:`Vector2` **from_angle**\ (\ angle\: :ref:`float`\ ) |static| :ref:`🔗` -Creates a unit **Vector2** rotated to the given ``angle`` in radians. This is equivalent to doing ``Vector2(cos(angle), sin(angle))`` or ``Vector2.RIGHT.rotated(angle)``. +Creates a **Vector2** rotated to the given ``angle`` in radians. This is equivalent to doing ``Vector2(cos(angle), sin(angle))`` or ``Vector2.RIGHT.rotated(angle)``. :: @@ -677,6 +677,8 @@ Creates a unit **Vector2** rotated to the given ``angle`` in radians. This is eq print(Vector2(1, 0).angle()) # Prints 0.0, which is the angle used above. print(Vector2.from_angle(PI / 2)) # Prints (0.0, 1.0) +\ **Note:** The length of the returned **Vector2** is *approximately* ``1.0``, but is is not guaranteed to be exactly ``1.0`` due to floating-point precision issues. Call :ref:`normalized()` on the returned **Vector2** if you require a unit vector. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_viewport.rst b/classes/class_viewport.rst index b50fe759e..910709fc7 100644 --- a/classes/class_viewport.rst +++ b/classes/class_viewport.rst @@ -1552,7 +1552,7 @@ See also :ref:`ProjectSettings.rendering/anti_aliasing/quality/msaa_3d`\ ) - :ref:`bool` **is_using_oversampling**\ (\ ) -If ``true`` and one of the following conditions is true: :ref:`SubViewport.size_2d_override_stretch` and :ref:`SubViewport.size_2d_override` are set, :ref:`Window.content_scale_factor` is set and scaling is enabled, :ref:`oversampling_override` is set, font oversampling is enabled. +If ``true`` and one of the following conditions is true: :ref:`SubViewport.size_2d_override_stretch` and :ref:`SubViewport.size_2d_override` are set, :ref:`Window.content_scale_factor` is set and scaling is enabled, :ref:`oversampling_override` is set, font and :ref:`SVGTexture` oversampling is enabled. .. rst-class:: classref-item-separator diff --git a/classes/index.rst b/classes/index.rst index 76dae2231..f039439d6 100644 --- a/classes/index.rst +++ b/classes/index.rst @@ -567,6 +567,7 @@ Resources class_styleboxflat class_styleboxline class_styleboxtexture + class_svgtexture class_syntaxhighlighter class_systemfont class_textmesh @@ -819,6 +820,7 @@ Other objects class_kinematiccollision3d class_lightmapper class_lightmapperrd + class_logger class_mainloop class_marshalls class_meshconvexdecompositionsettings @@ -932,6 +934,7 @@ Other objects class_resourceimporteroggvorbis class_resourceimporterscene class_resourceimportershaderfile + class_resourceimportersvg class_resourceimportertexture class_resourceimportertextureatlas class_resourceimporterwav @@ -942,6 +945,7 @@ Other objects class_scenestate class_scenetree class_scenetreetimer + class_scriptbacktrace class_scriptlanguage class_scriptlanguageextension class_semaphore From 6c3cef80b3f88e7571852d039b71c0e3d0a7df0a Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Wed, 5 Mar 2025 02:35:27 +0100 Subject: [PATCH 048/263] Document typed dictionaries in GDScript --- .../scripting/gdscript/gdscript_basics.rst | 27 +++++++++++++++++ .../scripting/gdscript/static_typing.rst | 29 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/tutorials/scripting/gdscript/gdscript_basics.rst b/tutorials/scripting/gdscript/gdscript_basics.rst index 72ffc6ce9..eb88b2b36 100644 --- a/tutorials/scripting/gdscript/gdscript_basics.rst +++ b/tutorials/scripting/gdscript/gdscript_basics.rst @@ -979,6 +979,33 @@ assign to it:: this, use the :ref:`Object.get() ` and :ref:`Object.set() ` methods instead. +Typed dictionaries +^^^^^^^^^^^^^^^^^^ + +Godot 4.4 added support for typed dictionaries. On write operations, Godot checks that +element keys and values match the specified type, so the dictionary cannot contain invalid +keys or values. The GDScript static analyzer takes typed dictionaries into account. However, +dictionary methods that return values still have the ``Variant`` return type. + +Typed dictionaries have the syntax ``Dictionary[KeyType, ValueType]``, where ``KeyType`` and ``ValueType`` +can be any ``Variant`` type, native or user class, or enum. Both the key and value type **must** be specified, +but you can use ``Variant`` to make either of them untyped. +Nested typed collections (like ``Dictionary[String, Dictionary[String, int]]``) +are not supported. + +:: + + var a: Dictionary[String, int] + var b: Dictionary[String, Node] + var c: Dictionary[Vector2i, MyClass] + var d: Dictionary[MyEnum, float] + # String keys, values can be any type. + var e: Dictionary[String, Variant] + # Keys can be any type, boolean values. + var f: Dictionary[Variant, bool] + +``Dictionary`` and ``Dictionary[Variant, Variant]`` are the same thing. + :ref:`Signal ` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tutorials/scripting/gdscript/static_typing.rst b/tutorials/scripting/gdscript/static_typing.rst index b7065ddd0..931aeacce 100644 --- a/tutorials/scripting/gdscript/static_typing.rst +++ b/tutorials/scripting/gdscript/static_typing.rst @@ -230,6 +230,35 @@ For instance, you can write:: The array will remain untyped, but the ``name`` variable within the ``for`` loop will always be of ``String`` type. +Specify the element type of a ``Dictionary`` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +To define the type of a ``Dictionary``'s keys and values, enclose the type name in ``[]`` +and separate the key and value type with a comma. + +A dictionary's value type applies to ``for`` loop variables, as well as some operators like +``[]`` and ``[]=``. Dictionary methods that return values and other operators +(such as ``==``) are still untyped. Built-in types, native and custom classes, +and enums may be used as element types. Nested typed collections +(like ``Dictionary[String, Dictionary[String, int]]``) are not supported. + + +:: + + var fruit_costs: Dictionary[String, int] = { "apple": 5, "orange": 10 } + var vehicles: Dictionary[String, Node] = { "car": $Car, "plane": $Plane } + var item_tiles: Dictionary[Vector2i, Item] = { Vector2i(0, 0): Item.new(), Vector2i(0, 1): Item.new() } + var dictionary_of_dictionaries: Dictionary[String, Dictionary] = { { } } + # var dicts: Dictionary[String, Dictionary[String, int]] -- disallowed + + for cost in fruit_costs: + # cost has type `int` + + # The following would be errors: + fruit_costs["pear"] += vehicles + var s: String = fruit_costs["apple"] + fruit_costs["orange"] = "lots" + Type casting ~~~~~~~~~~~~ From c8583abde8916fc6cc2c69a00ff15d5a15d3b7b3 Mon Sep 17 00:00:00 2001 From: Muller-Castro <37383316+Muller-Castro@users.noreply.github.com> Date: Sun, 27 Apr 2025 22:06:15 -0300 Subject: [PATCH 049/263] Add _CLASS_SNAKE_CASE_ script template placeholder --- tutorials/scripting/creating_script_templates.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tutorials/scripting/creating_script_templates.rst b/tutorials/scripting/creating_script_templates.rst index 3e3c6c27d..374d05007 100644 --- a/tutorials/scripting/creating_script_templates.rst +++ b/tutorials/scripting/creating_script_templates.rst @@ -205,6 +205,9 @@ Base placeholders +--------------------------+----------------------------------------------------+ | ``_CLASS_`` | The name of the new class. | +--------------------------+----------------------------------------------------+ +| ``_CLASS_SNAKE_CASE_`` | The name of the new class as ``snake_case`` | +| | (used in GDScript only). | ++--------------------------+----------------------------------------------------+ | ``_BASE_`` | The base type a new script inherits from. | +--------------------------+----------------------------------------------------+ | ``_TS_`` | Indentation placeholder. The exact type and number | From 2bfc2f04cff2e83cc0f803451ce9abcfb48c3185 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 28 Apr 2025 19:03:08 +0200 Subject: [PATCH 050/263] Hide user notes on 404 page This switches to `404.rst` instead of an embedded 404 page in `conf.py`, so we can specify page metadata. --- 404.rst | 24 ++++++++++++++++++++++++ conf.py | 23 ----------------------- 2 files changed, 24 insertions(+), 23 deletions(-) create mode 100644 404.rst diff --git a/404.rst b/404.rst new file mode 100644 index 000000000..21960757c --- /dev/null +++ b/404.rst @@ -0,0 +1,24 @@ +:github_url: hide +:allow_comments: False + +Page not found +============== + +.. https://github.com/readthedocs/sphinx-notfound-page + +.. raw:: html + +

    + Sorry, we couldn't find that page. It may have been renamed or removed + in the version of the documentation you're currently browsing. +

    +

    + If you're currently browsing the + latest version of the documentation, try browsing the + stable version of the documentation. +

    +

    + Alternatively, use the + Search docs + box on the left or go to the homepage. +

    diff --git a/conf.py b/conf.py index 939ac5d75..8bb70accb 100644 --- a/conf.py +++ b/conf.py @@ -29,29 +29,6 @@ sphinx_tabs_nowarn = True # Disable collapsing tabs for codeblocks. sphinx_tabs_disable_tab_closing = True -# Custom 4O4 page HTML template. -# https://github.com/readthedocs/sphinx-notfound-page -notfound_context = { - "title": "Page not found", - "body": """ -

    Page not found

    -

    - Sorry, we couldn't find that page. It may have been renamed or removed - in the version of the documentation you're currently browsing. -

    -

    - If you're currently browsing the - latest version of the documentation, try browsing the - stable version of the documentation. -

    -

    - Alternatively, use the - Search docs - box on the left or go to the homepage. -

    - """, -} - # on_rtd is whether we are on readthedocs.org, this line of code grabbed from docs.readthedocs.org on_rtd = os.environ.get("READTHEDOCS", None) == "True" From c3a22b4364151e7de8dc5d60ac55b07678bf7b3a Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 28 Apr 2025 19:20:50 +0200 Subject: [PATCH 051/263] Add a Troubleshooting section to Exporting packs, patches and mods - Mention that the pack must be loaded early enough to have an effect. - Mention load order being important. - Mention ZIP format throughout the page, as it can be used in the same way as PCK files. - Link to Run-time resource loading and saving tutorial as an alternative. --- tutorials/export/exporting_pcks.rst | 83 +++++++++++++++++-------- tutorials/export/exporting_projects.rst | 2 + 2 files changed, 60 insertions(+), 25 deletions(-) diff --git a/tutorials/export/exporting_pcks.rst b/tutorials/export/exporting_pcks.rst index 1955d72d0..2af240a10 100644 --- a/tutorials/export/exporting_pcks.rst +++ b/tutorials/export/exporting_pcks.rst @@ -6,7 +6,7 @@ Exporting packs, patches, and mods Use cases --------- -Oftentimes one would like to add functionality to one's game after it has been +Oftentimes, one would like to add functionality to one's game after it has been deployed. Examples of this include... @@ -18,11 +18,11 @@ Examples of this include... These tools help developers to extend their development beyond the initial release. -Overview of PCK files ---------------------- +Overview of PCK/ZIP files +------------------------- Godot enables this via a feature called **resource packs** (PCK files, -with extension ``.pck``). +with the ``.pck`` extension, or ZIP files). **Advantages:** @@ -35,9 +35,9 @@ with extension ``.pck``). The first part of using them involves exporting and delivering the project to players. Then, when one wants to add functionality or content later on, they -just deliver the updates via PCK files to the users. +just deliver the updates via PCK/ZIP files to the users. -PCK files usually contain, but are not limited to: +PCK/ZIP files usually contain, but are not limited to: - scripts - scenes @@ -48,21 +48,35 @@ PCK files usually contain, but are not limited to: - music - any other asset suitable for import into the game -The PCK files can even be an entirely different Godot project, which the +The PCK/ZIP files can even be an entirely different Godot project, which the original game loads in at runtime. +It is possible to load both PCK and ZIP files as additional packs at the same time. +See :ref:`doc_exporting_projects_pck_versus_zip` for a comparison of the two formats. + +.. seealso:: + + If you want to load loose files at runtime (not packed in a PCK or ZIP by Godot), + consider using :ref:`doc_runtime_loading_and_saving` instead. + This is useful for loading user-generated content that is not made with Godot, + without requiring users to pack their mods into a specific file format. + + The downside of this approach is that it's less transparent to the game logic, + as it will not benefit from the same resource management as PCK/ZIP files. + Generating PCK files -------------------- -In order to pack all resources of a project into a PCK file open the project -and go to Project/Export and click on "Export PCK/Zip". Also make sure to have -an export template selected while doing so. +In order to pack all resources of a project into a PCK file, open the project +and go to **Project > Export** and click on **Export PCK/ZIP**. Also, make sure +to have an export preset selected while doing so. .. image:: img/export_pck.webp -Another method would be to :ref:`export from the command line `. -If the output file ends with a PCK or ZIP file extension, then the export -process will build that type of file for the chosen platform. +Another method would be to :ref:`export from the command line ` +with ``--export-pack``. The output file must with a ``.pck`` or ``.zip`` +file extension. The export process will build that type of file for the +chosen platform. .. note:: @@ -86,19 +100,19 @@ process will build that type of file for the chosen platform. use a tool-build of the engine (for security), so it's best to keep the modding tool and game separate. -Opening PCK files at runtime ----------------------------- +Opening PCK or ZIP files at runtime +----------------------------------- -To import a PCK file, one uses the ProjectSettings singleton. The following -example expects a “mod.pck” file in the directory of the games executable. -The PCK file contains a “mod_scene.tscn” test scene in its root. +To load a PCK or ZIP file, one uses the ProjectSettings singleton. The following +example expects a ``mod.pck`` file in the directory of the game's executable. +The PCK or ZIP file contains a ``mod_scene.tscn`` test scene in its root. .. tabs:: .. code-tab:: gdscript GDScript func _your_function(): # This could fail if, for example, mod.pck cannot be found. - var success = ProjectSettings.load_resource_pack("res://mod.pck") + var success = ProjectSettings.load_resource_pack(OS.get_executable_path().get_base_dir().path_join("mod.pck")) if success: # Now one can use the assets as if they had them in the project from the start. @@ -109,7 +123,7 @@ The PCK file contains a “mod_scene.tscn” test scene in its root. private void YourFunction() { // This could fail if, for example, mod.pck cannot be found. - var success = ProjectSettings.LoadResourcePack("res://mod.pck"); + var success = ProjectSettings.LoadResourcePack(OS.get_executable_path().get_base_dir().path_join("mod.pck)); if (success) { @@ -120,20 +134,39 @@ The PCK file contains a “mod_scene.tscn” test scene in its root. .. warning:: - By default, if you import a file with the same file path/name as one you already have in your - project, the imported one will replace it. This is something to watch out for when - creating DLC or mods. You can solve this problem by using a tool that isolates mods to a specific mods subfolder. - However, it is also a way of creating patches for one's own game. A - PCK file of this kind can fix the content of a previously loaded PCK. + By default, if you import a file with the same file path/name as one you + already have in your project, the imported one will replace it. This is + something to watch out for when creating DLC or mods. You can solve this + problem by using a tool that isolates mods to a specific mods subfolder. + + However, it is also a way of creating patches for one's own game. A PCK/ZIP + file of this kind can fix the content of a previously loaded PCK/ZIP + (therefore, the order in which packs are loaded matters). To opt out of this behavior, pass ``false`` as the second argument to :ref:`ProjectSettings.load_resource_pack() `. .. note:: + For a C# project, you need to build the DLL and place it in the project directory first. Then, before loading the resource pack, you need to load its DLL as follows: ``Assembly.LoadFile("mod.dll")`` +Troubleshooting +^^^^^^^^^^^^^^^ + +If you are loading a resource pack and are not noticing any changes, it may be +due to the pack being loaded too late. This is particularly the case with menu +scenes that may preload other scenes using +:ref:`preload() `. This means that loading +a pack in the menu will not affect the other scene that was already preloaded. + +To avoid this, you need to load the pack as early as possible. +To do so, create a new :ref:`autoload ` script and +call :ref:`ProjectSettings.load_resource_pack() ` +in the autoload script's ``_init()`` function, rather than ``_enter_tree()`` +or ``_ready()``. + Summary ------- diff --git a/tutorials/export/exporting_projects.rst b/tutorials/export/exporting_projects.rst index f873e05b0..d0d319730 100644 --- a/tutorials/export/exporting_projects.rst +++ b/tutorials/export/exporting_projects.rst @@ -220,6 +220,8 @@ the command: See :ref:`doc_command_line_tutorial` for more information about using Godot from the command line. +.. _doc_exporting_projects_pck_versus_zip: + PCK versus ZIP pack file formats -------------------------------- From 58f4c57a6390edee4d3437c14be55597d335d672 Mon Sep 17 00:00:00 2001 From: yesfish Date: Mon, 28 Apr 2025 18:33:20 +0100 Subject: [PATCH 052/263] Remove incorrect section about occluder ordering --- tutorials/2d/2d_lights_and_shadows.rst | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/tutorials/2d/2d_lights_and_shadows.rst b/tutorials/2d/2d_lights_and_shadows.rst index a5d014094..1b5ed240f 100644 --- a/tutorials/2d/2d_lights_and_shadows.rst +++ b/tutorials/2d/2d_lights_and_shadows.rst @@ -255,20 +255,6 @@ The following properties can be adjusted on 2D lights that have shadows enabled: Soft shadows with streaking artifacts due to Filter Smooth being too high (PCF5, Filter Smooth 4) -Occluder draw order -~~~~~~~~~~~~~~~~~~~ - -**LightOccluder2Ds follows the usual 2D drawing order.** This is important for 2D -lighting, as this is how you control whether the occluder should occlude the -sprite itself or not. - -If the LightOccluder2D node is a *sibling* of the sprite, the occluder will -occlude the sprite itself if it's placed *below* the sprite in the scene tree. - -If the LightOccluder2D node is a *child* of the sprite, the occluder will -occlude the sprite itself if **Show Behind Parent** is disabled on the -LightOccluder2D node (which is the default). - Normal and specular maps ------------------------ From c82da084572086244d131d16a3181e539fff8807 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Fri, 18 Apr 2025 19:28:38 +0200 Subject: [PATCH 053/263] Add a table listing STL datatypes and their Godot equivalents in C++ usage guidelines This is more comprehensive than the previous advice. --- .../development/cpp_usage_guidelines.rst | 76 ++++++++++++++++--- 1 file changed, 65 insertions(+), 11 deletions(-) diff --git a/contributing/development/cpp_usage_guidelines.rst b/contributing/development/cpp_usage_guidelines.rst index 7131f353f..06ef042ed 100644 --- a/contributing/development/cpp_usage_guidelines.rst +++ b/contributing/development/cpp_usage_guidelines.rst @@ -53,18 +53,72 @@ as Godot provides its own data types (among other things). See :ref:`doc_faq_why_not_stl` for more information. This means that pull requests should **not** use ``std::string``, -``std::vector`` and the like. Instead, use Godot's datatypes as described below: +``std::vector`` and the like. Instead, use Godot's datatypes as described below. +A 📜 icon denotes the type is part of :ref:`Variant `. This +means it can be used as a parameter or return value of a method exposed to the +scripting API. -- Use ``String`` instead of ``std::string``. -- Use ``Vector`` instead of ``std::vector``. In some cases, ``LocalVector`` - can be used as an alternative (ask core developers first). -- Use ``Array`` instead of ``std::array``. - -.. note:: - - Godot also has a List datatype (which is a linked list). While List is already used - in the codebase, it typically performs worse than other datatypes like Vector - and Array. Therefore, List should be avoided in new code unless necessary. ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| Godot datatype | Closest C++ STL datatype | Comment | ++========================+==========================+=======================================================================================+ +| ``String`` 📜 | ``std::string`` | **Use this as the "default" string type.** ``String`` uses UTF-32 encoding | +| | | to improve performance thanks to its fixed character size. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``StringName`` 📜 | ``std::string`` | Uses string interning for fast comparisons. Use this for static strings that are | +| | | referenced frequently and used in multiple locations in the engine. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``Vector`` | ``std::vector`` | **Use this as the "default" vector type.** Uses copy-on-write (COW) semantics. | +| | | This means it's generally slower but can be copied around almost for free. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``LocalVector`` | ``std::vector`` | Closer to ``std::vector`` in semantics. In most situations, ``Vector`` should be | +| | | preferred. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``Array`` 📜 | ``std::vector`` | Values can be of any Variant type. No static typing is imposed. | +| | | Uses shared reference counting, similar to ``std::shared_ptr``. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``TypedArray`` 📜 | ``std::vector`` | Subclass of ``Array`` but with static typing for its elements. | +| | | Not to be confused with ``Packed*Array``, which is internally a ``Vector``. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``Packed*Array`` 📜 | ``std::vector`` | Alias of ``Vector``, e.g. ``PackedColorArray = Vector``. | +| | | Only a limited list of packed array types are available | +| | | (use ``TypedArray`` otherwise). | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``List`` | ``std::list`` | Linked list type. Generally slower than other array/vector types. Prefer using | +| | | other types in new code, unless using ``List`` avoids the need for type conversions. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``Span`` | ``std::span`` | Represents read-only access to a contiguous array without needing to copy any data. | +| | | See `pull request description `__ | +| | | for details. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``HashSet`` | ``std::unordered_set`` | **Use this as the "default" set type.** | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``RBSet`` | ``std::set`` | Uses a `red-black tree `__ | +| | | for faster access. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``VSet`` | ``std::flat_set`` | Uses copy-on-write (COW) semantics. | +| | | This means it's generally slower but can be copied around almost for free. | +| | | The performance benefits of ``VSet`` aren't established, so prefer using other types. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``HashMap`` | ``std::unordered_map`` | **Use this as the "default" map type.** Does not preserve insertion order. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``AHashMap`` | ``std::unordered_map`` | Array-based implementation of a hash map. Does not preserve insertion order. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``OAHashMap`` | ``std::unordered_map`` | Does not preserve insertion order. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``RBMap`` | ``std::map`` | Uses a `red-black tree `__ | +| | | for faster access. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``VMap`` | ``std::flat_map`` | Uses copy-on-write (COW) semantics. | +| | | This means it's generally slower but can be copied around almost for free. | +| | | The performance benefits of ``VMap`` aren't established, so prefer using other types. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``Dictionary`` 📜 | ``std::unordered_map`` | Keys and values can be of any Variant type. No static typing is imposed. | +| | | Uses shared reference counting, similar to ``std::shared_ptr``. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``TypedDictionary`` 📜 | ``std::unordered_map`` | Subclass of ``Dictionary`` but with static typing for its keys and values. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``Pair`` | ``std::pair`` | Stores a single key-value pair. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ ``auto`` keyword ~~~~~~~~~~~~~~~~ From ddbc8e827d705539e901ef19de215c86fdcd1b35 Mon Sep 17 00:00:00 2001 From: Fredia Huya-Kouadio Date: Mon, 21 Apr 2025 08:16:52 -0700 Subject: [PATCH 054/263] Update the Android build documentation - Replace `generate_apk` with `generate_android_binaries` in the Android documentation - Update the ndk version to 27.2.12479018 --- .../compiling/compiling_for_android.rst | 22 +++++++++++-------- tutorials/export/exporting_for_android.rst | 4 ++-- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/contributing/development/compiling/compiling_for_android.rst b/contributing/development/compiling/compiling_for_android.rst index f97965d5c..02fd81a19 100644 --- a/contributing/development/compiling/compiling_for_android.rst +++ b/contributing/development/compiling/compiling_for_android.rst @@ -104,21 +104,21 @@ root directory with the following arguments: :: scons platform=android target=template_release arch=arm32 - scons platform=android target=template_release arch=arm64 generate_apk=yes + scons platform=android target=template_release arch=arm64 generate_android_binaries=yes - Debug template (used when exporting with **Debugging Enabled** checked) :: scons platform=android target=template_debug arch=arm32 - scons platform=android target=template_debug arch=arm64 generate_apk=yes + scons platform=android target=template_debug arch=arm64 generate_android_binaries=yes - (**Optional**) Dev template (used when troubleshooting) :: scons platform=android target=template_debug arch=arm32 dev_build=yes - scons platform=android target=template_debug arch=arm64 dev_build=yes generate_apk=yes + scons platform=android target=template_debug arch=arm64 dev_build=yes generate_android_binaries=yes The resulting templates will be located under the ``bin`` directory: @@ -129,9 +129,11 @@ The resulting templates will be located under the ``bin`` directory: .. note:: - - If you are changing the list of architectures you're building, remember to add ``generate_apk=yes`` to the *last* architecture you're building, so that the template files are generated after the build. + - If you are changing the list of architectures you're building, remember to add ``generate_android_binaries=yes`` to the *last* architecture you're building, so that the template files are generated after the build. - - To include debug symbols in the generated templates, add the ``debug_symbols=yes`` parameter to the SCons command. + - To include debug symbols in the generated templates, add the ``debug_symbols=yes`` parameters to the SCons command. + + - Note that you can include ``separate_debug_symbols=yes`` to generate the debug symbols in a separate ``*-native-debug-symbols.zip`` file. .. seealso:: @@ -151,7 +153,7 @@ example, for the release template: scons platform=android target=template_release arch=arm32 scons platform=android target=template_release arch=arm64 scons platform=android target=template_release arch=x86_32 - scons platform=android target=template_release arch=x86_64 generate_apk=yes + scons platform=android target=template_release arch=x86_64 generate_android_binaries=yes This will create template binaries that works on all platforms. The final binary size of exported projects will depend on the platforms you choose @@ -222,15 +224,17 @@ root directory with the following arguments: scons platform=android arch=arm32 production=yes target=editor scons platform=android arch=arm64 production=yes target=editor scons platform=android arch=x86_32 production=yes target=editor - scons platform=android arch=x86_64 production=yes target=editor generate_apk=yes + scons platform=android arch=x86_64 production=yes target=editor generate_android_binaries=yes - You can add the ``dev_build=yes`` parameter to generate a dev build of the Godot editor. -- You can add the ``debug_symbols=yes`` parameter to include the debug symbols in the generated build. +- You can add the ``debug_symbols=yes`` parameters to include the debug symbols in the generated build. + + - Note that you can include ``separate_debug_symbols=yes`` to generate the debug symbols in a separate ``*-native-debug-symbols.zip`` file. - You can skip certain architectures depending on your target device to speed up compilation. -Remember to add ``generate_apk=yes`` to the *last* architecture you're building, so that binaries are generated after the build. +Remember to add ``generate_android_binaries=yes`` to the *last* architecture you're building, so that binaries are generated after the build. The resulting binaries will be located under ``bin/android_editor_builds/``. diff --git a/tutorials/export/exporting_for_android.rst b/tutorials/export/exporting_for_android.rst index e3db694e9..1ad8345ca 100644 --- a/tutorials/export/exporting_for_android.rst +++ b/tutorials/export/exporting_for_android.rst @@ -41,7 +41,7 @@ Download and install the Android SDK. - Ensure that the `NDK and CMake are installed and configured `__. - CMake version 3.10.2.4988404 - - NDK version r23c (23.2.8568313) + - NDK version r27c (27.2.12479018) - Alternatively, you can install the Android SDK with the `sdkmanager` command line tool. @@ -50,7 +50,7 @@ Download and install the Android SDK. :: - sdkmanager --sdk_root= "platform-tools" "build-tools;34.0.0" "platforms;android-34" "cmdline-tools;latest" "cmake;3.10.2.4988404" "ndk;23.2.8568313" + sdkmanager --sdk_root= "platform-tools" "build-tools;34.0.0" "platforms;android-34" "cmdline-tools;latest" "cmake;3.10.2.4988404" "ndk;27.2.12479018" .. note:: From 48150d5cf287c6e83d892f00592fb4054e4d1457 Mon Sep 17 00:00:00 2001 From: MJacred Date: Wed, 30 Apr 2025 13:01:53 +0200 Subject: [PATCH 055/263] Fix URL to gamepad tester website --- tutorials/inputs/controllers_gamepads_joysticks.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/inputs/controllers_gamepads_joysticks.rst b/tutorials/inputs/controllers_gamepads_joysticks.rst index b541aa60d..9e86c32a4 100644 --- a/tutorials/inputs/controllers_gamepads_joysticks.rst +++ b/tutorials/inputs/controllers_gamepads_joysticks.rst @@ -284,8 +284,8 @@ My controller isn't recognized by Godot. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ First, check that your controller is recognized by other applications. You can -use the `Gamepad Tester `__ website to confirm that -your controller is recognized. +use the `Gamepad Tester `__ website to confirm +that your controller is recognized. On Windows Godot only supports up to 4 controllers at a time. This is because Godot uses the XInput API, which is limited to supporting 4 controllers From 916c65fe71507737c5ec20aa919b9c406889f551 Mon Sep 17 00:00:00 2001 From: Chaosus Date: Thu, 1 May 2025 14:38:06 +0300 Subject: [PATCH 056/263] Few fixes for shader's built-in methods --- .../shader_reference/shader_functions.rst | 185 +++++++++--------- 1 file changed, 92 insertions(+), 93 deletions(-) diff --git a/tutorials/shaders/shader_reference/shader_functions.rst b/tutorials/shaders/shader_reference/shader_functions.rst index 683dccbb1..f3f2d11f5 100644 --- a/tutorials/shaders/shader_reference/shader_functions.rst +++ b/tutorials/shaders/shader_reference/shader_functions.rst @@ -511,95 +511,94 @@ Exponential and math functions :class: nowrap-col2 :widths: auto - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | Return Type | Function | Description / Return value | - +=====================+=================================================================================================+=================================================================+ - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`pow`\ (\ |vec_type| x, |vec_type| y) | Power (undefined if ``x < 0`` or if ``x == 0`` and ``y <= 0``). | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`exp`\ (\ |vec_type| x) | Base-e exponential. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`exp2`\ (\ |vec_type| x) | Base-2 exponential. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`log`\ (\ |vec_type| x) | Natural (base-e) logarithm. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`log2`\ (\ |vec_type| x) | Base-2 logarithm. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`sqrt`\ (\ |vec_type| x) | Square root. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`inversesqrt`\ (\ |vec_type| x) | Inverse square root. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | | |vec_type| | | :ref:`abs`\ (\ |vec_type| x) | Absolute value (returns positive value if negative). | - | | |vec_int_type| | | :ref:`abs`\ (\ |vec_int_type| x) | | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`sign`\ (\ |vec_type| x) | Returns ``1.0`` if positive, ``-1.0`` if negative, | - | | | ``0.0`` otherwise. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_int_type| | :ref:`sign`\ (\ |vec_int_type| x) | Returns ``1`` if positive, ``-1`` if negative, | - | | | ``0`` otherwise. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`floor`\ (\ |vec_type| x) | Rounds to the integer below. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`round`\ (\ |vec_type| x) | Rounds to the nearest integer. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`roundEven`\ (\ |vec_type| x) | Rounds to the nearest even integer. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`trunc`\ (\ |vec_type| x) | Truncation. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`ceil`\ (\ |vec_type| x) | Rounds to the integer above. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`fract`\ (\ |vec_type| x) | Fractional (returns ``x - floor(x)``). | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | | |vec_type| | | :ref:`mod`\ (\ |vec_type| x, |vec_type| y) | Modulo (division remainder). | - | | |vec_type| | | :ref:`mod`\ (\ |vec_type| x, float y) | | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`modf`\ (\ |vec_type| x, out |vec_type| i) | Fractional of ``x``, with ``i`` as integer part. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | | |vec_type| | | :ref:`min`\ (\ |vec_type| a, |vec_type| b) | Lowest value between ``a`` and ``b``. | - | | |vec_type| | | :ref:`min`\ (\ |vec_type| a, float b) | | - | | |vec_int_type| | | :ref:`min`\ (\ |vec_int_type| a, |vec_int_type| b) | | - | | |vec_int_type| | | :ref:`min`\ (\ |vec_int_type| a, int b) | | - | | |vec_uint_type| | | :ref:`min`\ (\ |vec_uint_type| a, |vec_uint_type| b) | | - | | |vec_uint_type| | | :ref:`min`\ (\ |vec_uint_type| a, uint b) | | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | | |vec_type| | | :ref:`max`\ (\ |vec_type| a, |vec_type| b) | Highest value between ``a`` and ``b``. | - | | |vec_type| | | :ref:`max`\ (\ |vec_type| a, float b) | | - | | |vec_uint_type| | | :ref:`max`\ (\ |vec_uint_type| a, |vec_uint_type| b) | | - | | |vec_uint_type| | | :ref:`max`\ (\ |vec_uint_type| a, uint b) | | - | | |vec_int_type| | | :ref:`max`\ (\ |vec_int_type| a, |vec_int_type| b) | | - | | |vec_int_type| | | :ref:`max`\ (\ |vec_int_type| a, int b) | | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | | |vec_type| | | :ref:`clamp`\ (\ |vec_type| x, |vec_type| min, |vec_type| max) | Clamps ``x`` between ``min`` and ``max`` (inclusive). | - | | |vec_type| | | :ref:`clamp`\ (\ |vec_type| x, float min, float max) | | - | | |vec_uint_type| | | :ref:`clamp`\ (\ |vec_int_type| x, |vec_int_type| min, |vec_int_type| max) | | - | | |vec_uint_type| | | :ref:`clamp`\ (\ |vec_int_type| x, float min, float max) | | - | | |vec_int_type| | | :ref:`clamp`\ (\ |vec_type| x, |vec_type| min, |vec_type| max) | | - | | |vec_int_type| | | :ref:`clamp`\ (\ |vec_type| x, float min, float max) | | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | | |vec_type| | | :ref:`mix`\ (\ |vec_type| a, |vec_type| b, |vec_type| c) | Linear interpolate between ``a`` and ``b`` by ``c``. | - | | |vec_type| | | :ref:`mix`\ (\ |vec_type| a, |vec_type| b, float c) | | - | | |vec_type| | | :ref:`mix`\ (\ |vec_type| a, |vec_type| b, |vec_bool_type| c) | | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`fma`\ (\ |vec_type| a, |vec_type| b, |vec_type| c) | Fused multiply-add operation: ``(a * b + c)`` | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | | |vec_type| | | :ref:`step`\ (\ |vec_type| a, |vec_type| b) | ``b < a ? 0.0 : 1.0`` | - | | |vec_type| | | :ref:`step`\ (\ float a, |vec_type| b) | | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | | |vec_type| | | :ref:`smoothstep`\ (\ |vec_type| a, |vec_type| b, |vec_type| c) | Hermite interpolate between ``a`` and ``b`` by ``c``. | - | | |vec_type| | | :ref:`smoothstep`\ (\ float a, float b, |vec_type| c) | | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_bool_type| | :ref:`isnan`\ (\ |vec_type| x) | Returns ``true`` if scalar or vector component is ``NaN``. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_bool_type| | :ref:`isinf`\ (\ |vec_type| x) | Returns ``true`` if scalar or vector component is ``INF``. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_int_type| | :ref:`floatBitsToInt`\ (\ |vec_type| x) | ``float`` to ``int`` bit copying, no conversion. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_uint_type| | :ref:`floatBitsToUint`\ (\ |vec_type| x) | ``float`` to ``uint`` bit copying, no conversion. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`intBitsToFloat`\ (\ |vec_int_type| x) | ``int`` to ``float`` bit copying, no conversion. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ - | |vec_type| | :ref:`uintBitsToFloat`\ (\ |vec_uint_type| x) | ``uint`` to ``float`` bit copying, no conversion. | - +---------------------+-------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | Return Type | Function | Description / Return value | + +=====================+====================================================================================================+=================================================================+ + | |vec_type| | :ref:`pow`\ (\ |vec_type| x, |vec_type| y) | Power (undefined if ``x < 0`` or if ``x == 0`` and ``y <= 0``). | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`exp`\ (\ |vec_type| x) | Base-e exponential. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`exp2`\ (\ |vec_type| x) | Base-2 exponential. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`log`\ (\ |vec_type| x) | Natural (base-e) logarithm. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`log2`\ (\ |vec_type| x) | Base-2 logarithm. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`sqrt`\ (\ |vec_type| x) | Square root. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`inversesqrt`\ (\ |vec_type| x) | Inverse square root. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | | |vec_type| | | :ref:`abs`\ (\ |vec_type| x) | Absolute value (returns positive value if negative). | + | | |vec_int_type| | | :ref:`abs`\ (\ |vec_int_type| x) | | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`sign`\ (\ |vec_type| x) | Returns ``1.0`` if positive, ``-1.0`` if negative, | + | | | ``0.0`` otherwise. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_int_type| | :ref:`sign`\ (\ |vec_int_type| x) | Returns ``1`` if positive, ``-1`` if negative, | + | | | ``0`` otherwise. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`floor`\ (\ |vec_type| x) | Rounds to the integer below. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`round`\ (\ |vec_type| x) | Rounds to the nearest integer. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`roundEven`\ (\ |vec_type| x) | Rounds to the nearest even integer. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`trunc`\ (\ |vec_type| x) | Truncation. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`ceil`\ (\ |vec_type| x) | Rounds to the integer above. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`fract`\ (\ |vec_type| x) | Fractional (returns ``x - floor(x)``). | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | | |vec_type| | | :ref:`mod`\ (\ |vec_type| x, |vec_type| y) | Modulo (division remainder). | + | | |vec_type| | | :ref:`mod`\ (\ |vec_type| x, float y) | | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`modf`\ (\ |vec_type| x, out |vec_type| i) | Fractional of ``x``, with ``i`` as integer part. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | | |vec_type| | | :ref:`min`\ (\ |vec_type| a, |vec_type| b) | Lowest value between ``a`` and ``b``. | + | | |vec_type| | | :ref:`min`\ (\ |vec_type| a, float b) | | + | | |vec_int_type| | | :ref:`min`\ (\ |vec_int_type| a, |vec_int_type| b) | | + | | |vec_int_type| | | :ref:`min`\ (\ |vec_int_type| a, int b) | | + | | |vec_uint_type| | | :ref:`min`\ (\ |vec_uint_type| a, |vec_uint_type| b) | | + | | |vec_uint_type| | | :ref:`min`\ (\ |vec_uint_type| a, uint b) | | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | | |vec_type| | | :ref:`max`\ (\ |vec_type| a, |vec_type| b) | Highest value between ``a`` and ``b``. | + | | |vec_type| | | :ref:`max`\ (\ |vec_type| a, float b) | | + | | |vec_int_type| | | :ref:`max`\ (\ |vec_int_type| a, |vec_int_type| b) | | + | | |vec_int_type| | | :ref:`max`\ (\ |vec_int_type| a, int b) | | + | | |vec_uint_type| | | :ref:`max`\ (\ |vec_uint_type| a, |vec_uint_type| b) | | + | | |vec_uint_type| | | :ref:`max`\ (\ |vec_uint_type| a, uint b) | | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | | |vec_type| | | :ref:`clamp`\ (\ |vec_type| x, |vec_type| min, |vec_type| max) | Clamps ``x`` between ``min`` and ``max`` (inclusive). | + | | |vec_type| | | :ref:`clamp`\ (\ |vec_type| x, float min, float max) | | + | | |vec_int_type| | | :ref:`clamp`\ (\ |vec_int_type| x, |vec_int_type| min, |vec_int_type| max) | | + | | |vec_int_type| | | :ref:`clamp`\ (\ |vec_int_type| x, int min, int max) | | + | | |vec_uint_type| | | :ref:`clamp`\ (\ |vec_uint_type| x, |vec_uint_type| min, |vec_uint_type| max) | | + | | |vec_uint_type| | | :ref:`clamp`\ (\ |vec_uint_type| x, uint min, uint max) | | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | | |vec_type| | | :ref:`mix`\ (\ |vec_type| a, |vec_type| b, |vec_type| c) | Linear interpolate between ``a`` and ``b`` by ``c``. | + | | |vec_type| | | :ref:`mix`\ (\ |vec_type| a, |vec_type| b, float c) | | + | | |vec_type| | | :ref:`mix`\ (\ |vec_type| a, |vec_type| b, |vec_bool_type| c) | | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`fma`\ (\ |vec_type| a, |vec_type| b, |vec_type| c) | Fused multiply-add operation: ``(a * b + c)`` | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | | |vec_type| | | :ref:`step`\ (\ |vec_type| a, |vec_type| b) | ``b < a ? 0.0 : 1.0`` | + | | |vec_type| | | :ref:`step`\ (\ float a, |vec_type| b) | | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | | |vec_type| | | :ref:`smoothstep`\ (\ |vec_type| a, |vec_type| b, |vec_type| c) | Hermite interpolate between ``a`` and ``b`` by ``c``. | + | | |vec_type| | | :ref:`smoothstep`\ (\ float a, float b, |vec_type| c) | | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_bool_type| | :ref:`isnan`\ (\ |vec_type| x) | Returns ``true`` if scalar or vector component is ``NaN``. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_bool_type| | :ref:`isinf`\ (\ |vec_type| x) | Returns ``true`` if scalar or vector component is ``INF``. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_int_type| | :ref:`floatBitsToInt`\ (\ |vec_type| x) | ``float`` to ``int`` bit copying, no conversion. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_uint_type| | :ref:`floatBitsToUint`\ (\ |vec_type| x) | ``float`` to ``uint`` bit copying, no conversion. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`intBitsToFloat`\ (\ |vec_int_type| x) | ``int`` to ``float`` bit copying, no conversion. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ + | |vec_type| | :ref:`uintBitsToFloat`\ (\ |vec_uint_type| x) | ``uint`` to ``float`` bit copying, no conversion. | + +---------------------+----------------------------------------------------------------------------------------------------+-----------------------------------------------------------------+ .. rst-class:: classref-descriptions-group @@ -1152,19 +1151,19 @@ Exponential and math function descriptions .. rst-class:: classref-method -|vec_type| **clamp**\ (\ |vec_type| x, float minVal, float maxVal) :ref:`🔗` +|vec_int_type| **clamp**\ (\ |vec_int_type| x, |vec_int_type| minVal, |vec_int_type| maxVal) :ref:`🔗` .. rst-class:: classref-method -|vec_uint_type| **clamp**\ (\ |vec_int_type| x, float minVal, float maxVal) :ref:`🔗` +|vec_int_type| **clamp**\ (\ |vec_int_type| x, int minVal, int maxVal) :ref:`🔗` .. rst-class:: classref-method -|vec_int_type| **clamp**\ (\ |vec_type| x, |vec_type| minVal, |vec_type| maxVal) :ref:`🔗` +|vec_uint_type| **clamp**\ (\ |vec_uint_type| x, |vec_uint_type| minVal, |vec_uint_type| maxVal) :ref:`🔗` .. rst-class:: classref-method -|vec_int_type| **clamp**\ (\ |vec_type| x, float minVal, float maxVal) :ref:`🔗` +|vec_uint_type| **clamp**\ (\ |vec_uint_type| x, uint minVal, uint maxVal) :ref:`🔗` |componentwise| From 9fb7efde1912f0404f084f0823993077bc400df2 Mon Sep 17 00:00:00 2001 From: Lukas Tenbrink Date: Thu, 1 May 2025 11:02:24 +0200 Subject: [PATCH 057/263] Add notes to `Dictionary`, `HashMap` and `Array`. Add a link to Godot's container types to relevant FAQ entry. --- about/faq.rst | 2 ++ contributing/development/cpp_usage_guidelines.rst | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/about/faq.rst b/about/faq.rst index 8f6ff66cb..0043abf50 100644 --- a/about/faq.rst +++ b/about/faq.rst @@ -579,6 +579,8 @@ general-purpose library, but we had special requirements for Godot. * We use our custom String type, as the one provided by STL is too basic and lacks proper internationalization support. +Check out :ref:`Godot's container types ` for alternatives. + Why does Godot not use exceptions? ---------------------------------- diff --git a/contributing/development/cpp_usage_guidelines.rst b/contributing/development/cpp_usage_guidelines.rst index 06ef042ed..5247fb616 100644 --- a/contributing/development/cpp_usage_guidelines.rst +++ b/contributing/development/cpp_usage_guidelines.rst @@ -45,6 +45,8 @@ variables and ``nullptr`` is encouraged when possible. Still, try to keep your use of modern C++ features conservative. Their use needs to serve a real purpose, such as improving code readability or performance. +.. _doc_cpp_godot_types: + Standard Template Library ~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -75,6 +77,7 @@ scripting API. +------------------------+--------------------------+---------------------------------------------------------------------------------------+ | ``Array`` 📜 | ``std::vector`` | Values can be of any Variant type. No static typing is imposed. | | | | Uses shared reference counting, similar to ``std::shared_ptr``. | +| | | Uses Vector internally. | +------------------------+--------------------------+---------------------------------------------------------------------------------------+ | ``TypedArray`` 📜 | ``std::vector`` | Subclass of ``Array`` but with static typing for its elements. | | | | Not to be confused with ``Packed*Array``, which is internally a ``Vector``. | @@ -99,7 +102,7 @@ scripting API. | | | This means it's generally slower but can be copied around almost for free. | | | | The performance benefits of ``VSet`` aren't established, so prefer using other types. | +------------------------+--------------------------+---------------------------------------------------------------------------------------+ -| ``HashMap`` | ``std::unordered_map`` | **Use this as the "default" map type.** Does not preserve insertion order. | +| ``HashMap`` | ``std::unordered_map`` | **Use this as the "default" map type.** Preserves insertion order. | +------------------------+--------------------------+---------------------------------------------------------------------------------------+ | ``AHashMap`` | ``std::unordered_map`` | Array-based implementation of a hash map. Does not preserve insertion order. | +------------------------+--------------------------+---------------------------------------------------------------------------------------+ @@ -114,6 +117,7 @@ scripting API. +------------------------+--------------------------+---------------------------------------------------------------------------------------+ | ``Dictionary`` 📜 | ``std::unordered_map`` | Keys and values can be of any Variant type. No static typing is imposed. | | | | Uses shared reference counting, similar to ``std::shared_ptr``. | +| | | Preserves insertion order. Uses ``HashMap`` internally. | +------------------------+--------------------------+---------------------------------------------------------------------------------------+ | ``TypedDictionary`` 📜 | ``std::unordered_map`` | Subclass of ``Dictionary`` but with static typing for its keys and values. | +------------------------+--------------------------+---------------------------------------------------------------------------------------+ From ab7f0455b33f7a5e34d34bef82235a3fb387ccc8 Mon Sep 17 00:00:00 2001 From: Lukas Tenbrink Date: Thu, 1 May 2025 14:32:03 +0200 Subject: [PATCH 058/263] Add new `FixedVector` type to the types table. --- contributing/development/cpp_usage_guidelines.rst | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contributing/development/cpp_usage_guidelines.rst b/contributing/development/cpp_usage_guidelines.rst index 06ef042ed..59e0c47fb 100644 --- a/contributing/development/cpp_usage_guidelines.rst +++ b/contributing/development/cpp_usage_guidelines.rst @@ -86,6 +86,10 @@ scripting API. | ``List`` | ``std::list`` | Linked list type. Generally slower than other array/vector types. Prefer using | | | | other types in new code, unless using ``List`` avoids the need for type conversions. | +------------------------+--------------------------+---------------------------------------------------------------------------------------+ +| ``FixedVector`` | ``std::array`` | Vector with a fixed capacity (more similar to ``boost::container::static_vector``). | +| | | This container type is more efficient than other vector-like types because it makes | +| | | no heap allocations. | ++------------------------+--------------------------+---------------------------------------------------------------------------------------+ | ``Span`` | ``std::span`` | Represents read-only access to a contiguous array without needing to copy any data. | | | | See `pull request description `__ | | | | for details. | From a7815c997ede56550f64dab08e06d191984e9306 Mon Sep 17 00:00:00 2001 From: David Snopek Date: Tue, 1 Apr 2025 14:29:50 -0500 Subject: [PATCH 059/263] Stop referring to GDExtension as experimental --- tutorials/migrating/upgrading_to_godot_4.1.rst | 3 --- tutorials/scripting/cpp/about_godot_cpp.rst | 14 +++----------- .../scripting/cpp/gdextension_cpp_example.rst | 12 +++++------- 3 files changed, 8 insertions(+), 21 deletions(-) diff --git a/tutorials/migrating/upgrading_to_godot_4.1.rst b/tutorials/migrating/upgrading_to_godot_4.1.rst index 2529320b3..a48365430 100644 --- a/tutorials/migrating/upgrading_to_godot_4.1.rst +++ b/tutorials/migrating/upgrading_to_godot_4.1.rst @@ -242,9 +242,6 @@ Multiple layered ``SubViewportContainer`` nodes, that should all receive mouse i Updating your GDExtension for 4.1 --------------------------------- -GDExtension is still in beta. Until it's marked as stable, compatibility may break when -upgrading to a new minor version of Godot. - In order to fix a serious bug, in Godot 4.1 we had to break binary compatibility in a big way and source compatibility in a small way. diff --git a/tutorials/scripting/cpp/about_godot_cpp.rst b/tutorials/scripting/cpp/about_godot_cpp.rst index 8560b8632..3a512c9e5 100644 --- a/tutorials/scripting/cpp/about_godot_cpp.rst +++ b/tutorials/scripting/cpp/about_godot_cpp.rst @@ -22,12 +22,6 @@ and :ref:`C++ modules ` to run C or C++ code in a God They also both allow you to integrate third-party libraries into Godot. The one you should choose depends on your needs. -.. warning:: - - godot-cpp is currently *experimental*, which means that we may - break compatibility in order to fix major bugs or include critical features. - - Advantages of godot-cpp ~~~~~~~~~~~~~~~~~~~~~~~ @@ -71,7 +65,7 @@ godot-cpp (or another GDExtension system) isn't enough: Version compatibility --------------------- -Usually, GDExtensions targeting an earlier version of Godot will work in later +GDExtensions targeting an earlier version of Godot should work in later minor versions, but not vice-versa. For example, a GDExtension targeting Godot 4.2 should work just fine in Godot 4.3, but one targeting Godot 4.3 won't work in Godot 4.2. @@ -79,10 +73,8 @@ For this reason, when creating GDExtensions, you may want to target the lowest v Godot that has the features you need, *not* the most recent version of Godot. This can save you from needing to create multiple builds for different versions of Godot. -However, GDExtension is currently *experimental*, which means that we may -break compatibility in order to fix major bugs or include critical features. -For example, GDExtensions created for Godot 4.0 aren't compatible with Godot -4.1 (see :ref:`updating_your_gdextension_for_godot_4_1`). +There is one exception to this: extensions targeting Godot 4.0 will **not** work with +Godot 4.1 and later (see :ref:`updating_your_gdextension_for_godot_4_1`). GDExtensions are also only compatible with engine builds that use the same level of floating-point precision the extension was compiled for. This means diff --git a/tutorials/scripting/cpp/gdextension_cpp_example.rst b/tutorials/scripting/cpp/gdextension_cpp_example.rst index ea898738a..69a605df0 100644 --- a/tutorials/scripting/cpp/gdextension_cpp_example.rst +++ b/tutorials/scripting/cpp/gdextension_cpp_example.rst @@ -53,14 +53,12 @@ of Godot. GDExtensions will not work in older versions of Godot (only Godot 4 an to work with Godot's ``master`` branch. .. warning:: - Our long-term goal is that GDExtensions targeting an earlier version of Godot will work - in later minor versions, but not vice-versa. For example, a GDExtension targeting Godot 4.1 - should work just fine in Godot 4.2, but one targeting Godot 4.2 won't work in Godot 4.1. + GDExtensions targeting an earlier version of Godot should work in later + minor versions, but not vice-versa. For example, a GDExtension targeting Godot 4.2 + should work just fine in Godot 4.3, but one targeting Godot 4.3 won't work in Godot 4.2. - However, GDExtension is currently *experimental*, which means that we may break compatibility - in order to fix major bugs or include critical features. For example, GDExtensions created - for Godot 4.0 aren't compatible with Godot 4.1 - (see :ref:`updating_your_gdextension_for_godot_4_1`). + There is one exception to this: extensions targeting Godot 4.0 will **not** work with + Godot 4.1 and later (see :ref:`updating_your_gdextension_for_godot_4_1`). If you are versioning your project using Git, it is recommended to add it as a Git submodule: From 9d0fcf128892ef7e42ed3138870b1ca55465532b Mon Sep 17 00:00:00 2001 From: Athenr <82354163+Athenr@users.noreply.github.com> Date: Fri, 2 May 2025 16:14:26 -0400 Subject: [PATCH 060/263] Update c_sharp_differences.rst with C# string and Godot String UTF encoding Clarified that C# System.String uses UTF-16 encoding while Godot String uses UTF-32. --- tutorials/scripting/c_sharp/c_sharp_differences.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tutorials/scripting/c_sharp/c_sharp_differences.rst b/tutorials/scripting/c_sharp/c_sharp_differences.rst index 55b3de318..c7707bb05 100644 --- a/tutorials/scripting/c_sharp/c_sharp_differences.rst +++ b/tutorials/scripting/c_sharp/c_sharp_differences.rst @@ -381,6 +381,8 @@ Use ``System.String`` (``string``). Most of Godot's String methods have an equivalent in ``System.String`` or are provided by the ``StringExtensions`` class as extension methods. +Note that C# strings uses UTF-16 encoding, while Godot Strings uses UTF-32 encoding. + Example: .. code-block:: csharp From d7112fad77297754030b812bbb088d13b1926aab Mon Sep 17 00:00:00 2001 From: Godot Organization Date: Sat, 3 May 2025 03:27:02 +0000 Subject: [PATCH 061/263] classref: Sync with current master branch (1cf573f) --- classes/class_@globalscope.rst | 10 +- classes/class_animationnode.rst | 6 +- classes/class_animationnodeblendtree.rst | 52 ++-- classes/class_animationnodestatemachine.rst | 14 + classes/class_boneattachment3d.rst | 16 +- classes/class_control.rst | 2 +- classes/class_editorsettings.rst | 14 + classes/class_foldablecontainer.rst | 122 ++++---- classes/class_labelsettings.rst | 319 ++++++++++++++++++-- classes/class_meshinstance3d.rst | 2 +- classes/class_node.rst | 16 + classes/class_parallaxbackground.rst | 2 + classes/class_parallaxlayer.rst | 2 + classes/class_renderingserver.rst | 30 -- classes/class_resourcesaver.rst | 16 + classes/class_richtextlabel.rst | 32 ++ classes/class_scenetree.rst | 2 + classes/class_string.rst | 2 +- classes/class_stringname.rst | 2 +- classes/class_vehiclewheel3d.rst | 60 ++-- classes/class_zippacker.rst | 76 +++++ classes/class_zipreader.rst | 36 ++- 22 files changed, 646 insertions(+), 187 deletions(-) diff --git a/classes/class_@globalscope.rst b/classes/class_@globalscope.rst index 6503f8f6d..29a942918 100644 --- a/classes/class_@globalscope.rst +++ b/classes/class_@globalscope.rst @@ -3671,6 +3671,8 @@ If a property is :ref:`String`, hints that the property represents If a property is :ref:`Array`, hints the editor how to show elements. The ``hint_string`` must encode nested types using ``":"`` and ``"/"``. +If a property is :ref:`Dictionary`, hints the editor how to show elements. The ``hint_string`` is the same as :ref:`Array`, with a ``";"`` separating the key and value. + .. tabs:: @@ -3802,7 +3804,9 @@ Hints that an :ref:`int` property is a pointer. Used by GDExtension. :ref:`PropertyHint` **PROPERTY_HINT_ARRAY_TYPE** = ``31`` -Hints that a property is an :ref:`Array` with the stored type specified in the hint string. +Hints that a property is an :ref:`Array` with the stored type specified in the hint string. The hint string contains the type of the array (e.g. ``"String"``). + +Use the hint string format from :ref:`PROPERTY_HINT_TYPE_STRING` for more control over the stored type. .. _class_@GlobalScope_constant_PROPERTY_HINT_DICTIONARY_TYPE: @@ -3812,6 +3816,8 @@ Hints that a property is an :ref:`Array` with the stored type speci Hints that a property is a :ref:`Dictionary` with the stored types specified in the hint string. The hint string contains the key and value types separated by a semicolon (e.g. ``"int;String"``). +Use the hint string format from :ref:`PROPERTY_HINT_TYPE_STRING` for more control over the stored types. + .. _class_@GlobalScope_constant_PROPERTY_HINT_LOCALE_ID: .. rst-class:: classref-enumeration-constant @@ -7214,7 +7220,7 @@ Returns the square root of ``x``, where ``x`` is a non-negative number. sqrt(10.24) # Returns 3.2 sqrt(-1) # Returns NaN -\ **Note:** Negative values of ``x`` return NaN ("Not a Number"). in C#, if you need negative inputs, use ``System.Numerics.Complex``. +\ **Note:** Negative values of ``x`` return NaN ("Not a Number"). In C#, if you need negative inputs, use ``System.Numerics.Complex``. .. rst-class:: classref-item-separator diff --git a/classes/class_animationnode.rst b/classes/class_animationnode.rst index 93372bff6..81dc029d2 100644 --- a/classes/class_animationnode.rst +++ b/classes/class_animationnode.rst @@ -31,9 +31,9 @@ You can access the time information as read-only parameter which is processed an :: - var current_length = $AnimationTree[parameters/AnimationNodeName/current_length] - var current_position = $AnimationTree[parameters/AnimationNodeName/current_position] - var current_delta = $AnimationTree[parameters/AnimationNodeName/current_delta] + var current_length = $AnimationTree["parameters/AnimationNodeName/current_length"] + var current_position = $AnimationTree["parameters/AnimationNodeName/current_position"] + var current_delta = $AnimationTree["parameters/AnimationNodeName/current_delta"] .. rst-class:: classref-introduction-group diff --git a/classes/class_animationnodeblendtree.rst b/classes/class_animationnodeblendtree.rst index c2efe9588..fb34d4cee 100644 --- a/classes/class_animationnodeblendtree.rst +++ b/classes/class_animationnodeblendtree.rst @@ -50,25 +50,27 @@ Methods .. table:: :widths: auto - +-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_node`\ (\ name\: :ref:`StringName`, node\: :ref:`AnimationNode`, position\: :ref:`Vector2` = Vector2(0, 0)\ ) | - +-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`connect_node`\ (\ input_node\: :ref:`StringName`, input_index\: :ref:`int`, output_node\: :ref:`StringName`\ ) | - +-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`disconnect_node`\ (\ input_node\: :ref:`StringName`, input_index\: :ref:`int`\ ) | - +-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`AnimationNode` | :ref:`get_node`\ (\ name\: :ref:`StringName`\ ) |const| | - +-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_node_position`\ (\ name\: :ref:`StringName`\ ) |const| | - +-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_node`\ (\ name\: :ref:`StringName`\ ) |const| | - +-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`remove_node`\ (\ name\: :ref:`StringName`\ ) | - +-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`rename_node`\ (\ name\: :ref:`StringName`, new_name\: :ref:`StringName`\ ) | - +-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_node_position`\ (\ name\: :ref:`StringName`, position\: :ref:`Vector2`\ ) | - +-------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_node`\ (\ name\: :ref:`StringName`, node\: :ref:`AnimationNode`, position\: :ref:`Vector2` = Vector2(0, 0)\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`connect_node`\ (\ input_node\: :ref:`StringName`, input_index\: :ref:`int`, output_node\: :ref:`StringName`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`disconnect_node`\ (\ input_node\: :ref:`StringName`, input_index\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`AnimationNode` | :ref:`get_node`\ (\ name\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`StringName`\] | :ref:`get_node_list`\ (\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_node_position`\ (\ name\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_node`\ (\ name\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`remove_node`\ (\ name\: :ref:`StringName`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`rename_node`\ (\ name\: :ref:`StringName`, new_name\: :ref:`StringName`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_node_position`\ (\ name\: :ref:`StringName`, position\: :ref:`Vector2`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -223,6 +225,18 @@ Returns the sub animation node with the specified ``name``. ---- +.. _class_AnimationNodeBlendTree_method_get_node_list: + +.. rst-class:: classref-method + +:ref:`Array`\[:ref:`StringName`\] **get_node_list**\ (\ ) |const| :ref:`🔗` + +Returns a list containing the names of all sub animation nodes in this blend tree. + +.. rst-class:: classref-item-separator + +---- + .. _class_AnimationNodeBlendTree_method_get_node_position: .. rst-class:: classref-method diff --git a/classes/class_animationnodestatemachine.rst b/classes/class_animationnodestatemachine.rst index f22a1a63f..abf6e5abb 100644 --- a/classes/class_animationnodestatemachine.rst +++ b/classes/class_animationnodestatemachine.rst @@ -76,6 +76,8 @@ Methods +---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`AnimationNode` | :ref:`get_node`\ (\ name\: :ref:`StringName`\ ) |const| | +---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`StringName`\] | :ref:`get_node_list`\ (\ ) |const| | + +---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`StringName` | :ref:`get_node_name`\ (\ node\: :ref:`AnimationNode`\ ) |const| | +---------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`get_node_position`\ (\ name\: :ref:`StringName`\ ) |const| | @@ -261,6 +263,18 @@ Returns the animation node with the given name. ---- +.. _class_AnimationNodeStateMachine_method_get_node_list: + +.. rst-class:: classref-method + +:ref:`Array`\[:ref:`StringName`\] **get_node_list**\ (\ ) |const| :ref:`🔗` + +Returns a list containing the names of all animation nodes in this state machine. + +.. rst-class:: classref-item-separator + +---- + .. _class_AnimationNodeStateMachine_method_get_node_name: .. rst-class:: classref-method diff --git a/classes/class_boneattachment3d.rst b/classes/class_boneattachment3d.rst index 3aee9e350..e050a2b87 100644 --- a/classes/class_boneattachment3d.rst +++ b/classes/class_boneattachment3d.rst @@ -32,13 +32,15 @@ Properties .. table:: :widths: auto - +-----------------------------+---------------------------------------------------------------------+-----------+ - | :ref:`int` | :ref:`bone_idx` | ``-1`` | - +-----------------------------+---------------------------------------------------------------------+-----------+ - | :ref:`String` | :ref:`bone_name` | ``""`` | - +-----------------------------+---------------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`override_pose` | ``false`` | - +-----------------------------+---------------------------------------------------------------------+-----------+ + +---------------------------------------------------------------------+---------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`bone_idx` | ``-1`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`bone_name` | ``""`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`override_pose` | ``false`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`PhysicsInterpolationMode` | physics_interpolation_mode | ``2`` (overrides :ref:`Node`) | + +---------------------------------------------------------------------+---------------------------------------------------------------------+-------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group diff --git a/classes/class_control.rst b/classes/class_control.rst index 9013f47b9..6d9c2c5d3 100644 --- a/classes/class_control.rst +++ b/classes/class_control.rst @@ -2711,7 +2711,7 @@ Returns combined minimum size from :ref:`custom_minimum_size` **get_cursor_shape**\ (\ position\: :ref:`Vector2` = Vector2(0, 0)\ ) |const| :ref:`🔗` -Returns the mouse cursor shape the control displays on mouse hover. See :ref:`CursorShape`. +Returns the mouse cursor shape for this control when hovered over ``position`` in local coordinates. For most controls, this is the same as :ref:`mouse_default_cursor_shape`, but some built-in controls implement more complex logic. See :ref:`CursorShape`. .. rst-class:: classref-item-separator diff --git a/classes/class_editorsettings.rst b/classes/class_editorsettings.rst index bcd57e87f..5fb59f93c 100644 --- a/classes/class_editorsettings.rst +++ b/classes/class_editorsettings.rst @@ -313,6 +313,8 @@ Properties +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`editors/panning/warped_mouse_panning` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/panning/zoom_style` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`editors/polygon_editor/auto_bake_delay` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`editors/polygon_editor/point_grab_radius` | @@ -2553,6 +2555,18 @@ If ``true``, warps the mouse around the 2D viewport while panning in the 2D edit ---- +.. _class_EditorSettings_property_editors/panning/zoom_style: + +.. rst-class:: classref-property + +:ref:`int` **editors/panning/zoom_style** :ref:`🔗` + +The mouse cursor movement direction to use when drag-zooming in any editor (except 3D scene editor) by moving the mouse. This does not affect zooming with the mouse wheel. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_editors/polygon_editor/auto_bake_delay: .. rst-class:: classref-property diff --git a/classes/class_foldablecontainer.rst b/classes/class_foldablecontainer.rst index ad89a3e77..6eaf0b4e4 100644 --- a/classes/class_foldablecontainer.rst +++ b/classes/class_foldablecontainer.rst @@ -40,27 +40,27 @@ Properties .. table:: :widths: auto - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | :ref:`FoldableGroup` | :ref:`foldable_group` | | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | :ref:`bool` | :ref:`folded` | ``false`` | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | :ref:`String` | :ref:`language` | ``""`` | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | :ref:`MouseFilter` | mouse_filter | ``0`` (overrides :ref:`Control`) | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | :ref:`String` | :ref:`text` | ``""`` | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | :ref:`TextDirection` | :ref:`text_direction` | ``0`` | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | :ref:`OverrunBehavior` | :ref:`text_overrun_behavior` | ``0`` | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | :ref:`HorizontalAlignment` | :ref:`title_alignment` | ``0`` | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ - | :ref:`TitlePosition` | :ref:`title_position` | ``0`` | - +-------------------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`FoldableGroup` | :ref:`foldable_group` | | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`bool` | :ref:`folded` | ``false`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`String` | :ref:`language` | ``""`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`MouseFilter` | mouse_filter | ``0`` (overrides :ref:`Control`) | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`String` | :ref:`title` | ``""`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`HorizontalAlignment` | :ref:`title_alignment` | ``0`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`TitlePosition` | :ref:`title_position` | ``0`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`TextDirection` | :ref:`title_text_direction` | ``0`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ + | :ref:`OverrunBehavior` | :ref:`title_text_overrun_behavior` | ``0`` | + +-------------------------------------------------------------------+--------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -194,7 +194,7 @@ Property Descriptions - |void| **set_foldable_group**\ (\ value\: :ref:`FoldableGroup`\ ) - :ref:`FoldableGroup` **get_foldable_group**\ (\ ) -The :ref:`FoldableGroup` associated with the container. +The :ref:`FoldableGroup` associated with the container. When multiple **FoldableContainer** nodes share the same group, only one of them is allowed to be unfolded. .. rst-class:: classref-item-separator @@ -234,52 +234,18 @@ Language code used for text shaping algorithms. If left empty, current locale is ---- -.. _class_FoldableContainer_property_text: +.. _class_FoldableContainer_property_title: .. rst-class:: classref-property -:ref:`String` **text** = ``""`` :ref:`🔗` +:ref:`String` **title** = ``""`` :ref:`🔗` .. rst-class:: classref-property-setget -- |void| **set_text**\ (\ value\: :ref:`String`\ ) -- :ref:`String` **get_text**\ (\ ) +- |void| **set_title**\ (\ value\: :ref:`String`\ ) +- :ref:`String` **get_title**\ (\ ) -The Container's title text. - -.. rst-class:: classref-item-separator - ----- - -.. _class_FoldableContainer_property_text_direction: - -.. rst-class:: classref-property - -:ref:`TextDirection` **text_direction** = ``0`` :ref:`🔗` - -.. rst-class:: classref-property-setget - -- |void| **set_text_direction**\ (\ value\: :ref:`TextDirection`\ ) -- :ref:`TextDirection` **get_text_direction**\ (\ ) - -Base text writing direction. - -.. rst-class:: classref-item-separator - ----- - -.. _class_FoldableContainer_property_text_overrun_behavior: - -.. rst-class:: classref-property - -:ref:`OverrunBehavior` **text_overrun_behavior** = ``0`` :ref:`🔗` - -.. rst-class:: classref-property-setget - -- |void| **set_text_overrun_behavior**\ (\ value\: :ref:`OverrunBehavior`\ ) -- :ref:`OverrunBehavior` **get_text_overrun_behavior**\ (\ ) - -Defines the behavior of the **FoldableContainer** when the text is longer than the available space. +The container's title text. .. rst-class:: classref-item-separator @@ -315,6 +281,40 @@ Title's horizontal text alignment as defined in the :ref:`HorizontalAlignment` enum. +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_property_title_text_direction: + +.. rst-class:: classref-property + +:ref:`TextDirection` **title_text_direction** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_title_text_direction**\ (\ value\: :ref:`TextDirection`\ ) +- :ref:`TextDirection` **get_title_text_direction**\ (\ ) + +Title text writing direction. + +.. rst-class:: classref-item-separator + +---- + +.. _class_FoldableContainer_property_title_text_overrun_behavior: + +.. rst-class:: classref-property + +:ref:`OverrunBehavior` **title_text_overrun_behavior** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_title_text_overrun_behavior**\ (\ value\: :ref:`OverrunBehavior`\ ) +- :ref:`OverrunBehavior` **get_title_text_overrun_behavior**\ (\ ) + +Defines the behavior of the title when the text is longer than the available space. + .. rst-class:: classref-section-separator ---- diff --git a/classes/class_labelsettings.rst b/classes/class_labelsettings.rst index ccc4889dd..7244c1c14 100644 --- a/classes/class_labelsettings.rst +++ b/classes/class_labelsettings.rst @@ -29,27 +29,73 @@ Properties .. table:: :widths: auto - +-------------------------------+--------------------------------------------------------------------------+-----------------------+ - | :ref:`Font` | :ref:`font` | | - +-------------------------------+--------------------------------------------------------------------------+-----------------------+ - | :ref:`Color` | :ref:`font_color` | ``Color(1, 1, 1, 1)`` | - +-------------------------------+--------------------------------------------------------------------------+-----------------------+ - | :ref:`int` | :ref:`font_size` | ``16`` | - +-------------------------------+--------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`line_spacing` | ``3.0`` | - +-------------------------------+--------------------------------------------------------------------------+-----------------------+ - | :ref:`Color` | :ref:`outline_color` | ``Color(1, 1, 1, 1)`` | - +-------------------------------+--------------------------------------------------------------------------+-----------------------+ - | :ref:`int` | :ref:`outline_size` | ``0`` | - +-------------------------------+--------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`paragraph_spacing` | ``0.0`` | - +-------------------------------+--------------------------------------------------------------------------+-----------------------+ - | :ref:`Color` | :ref:`shadow_color` | ``Color(0, 0, 0, 0)`` | - +-------------------------------+--------------------------------------------------------------------------+-----------------------+ - | :ref:`Vector2` | :ref:`shadow_offset` | ``Vector2(1, 1)`` | - +-------------------------------+--------------------------------------------------------------------------+-----------------------+ - | :ref:`int` | :ref:`shadow_size` | ``1`` | - +-------------------------------+--------------------------------------------------------------------------+-----------------------+ + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`Font` | :ref:`font` | | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`Color` | :ref:`font_color` | ``Color(1, 1, 1, 1)`` | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`font_size` | ``16`` | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`line_spacing` | ``3.0`` | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`Color` | :ref:`outline_color` | ``Color(1, 1, 1, 1)`` | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`outline_size` | ``0`` | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`float` | :ref:`paragraph_spacing` | ``0.0`` | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`Color` | :ref:`shadow_color` | ``Color(0, 0, 0, 0)`` | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`Vector2` | :ref:`shadow_offset` | ``Vector2(1, 1)`` | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`shadow_size` | ``1`` | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`stacked_outline_count` | ``0`` | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + | :ref:`int` | :ref:`stacked_shadow_count` | ``0`` | + +-------------------------------+----------------------------------------------------------------------------------+-----------------------+ + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_stacked_outline`\ (\ index\: :ref:`int` = -1\ ) | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_stacked_shadow`\ (\ index\: :ref:`int` = -1\ ) | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`get_stacked_outline_color`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_stacked_outline_size`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`get_stacked_shadow_color`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_stacked_shadow_offset`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_stacked_shadow_outline_size`\ (\ index\: :ref:`int`\ ) |const| | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`move_stacked_outline`\ (\ from_index\: :ref:`int`, to_position\: :ref:`int`\ ) | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`move_stacked_shadow`\ (\ from_index\: :ref:`int`, to_position\: :ref:`int`\ ) | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`remove_stacked_outline`\ (\ index\: :ref:`int`\ ) | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`remove_stacked_shadow`\ (\ index\: :ref:`int`\ ) | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_stacked_outline_color`\ (\ index\: :ref:`int`, color\: :ref:`Color`\ ) | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_stacked_outline_size`\ (\ index\: :ref:`int`, size\: :ref:`int`\ ) | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_stacked_shadow_color`\ (\ index\: :ref:`int`, color\: :ref:`Color`\ ) | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_stacked_shadow_offset`\ (\ index\: :ref:`int`, offset\: :ref:`Vector2`\ ) | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_stacked_shadow_outline_size`\ (\ index\: :ref:`int`, size\: :ref:`int`\ ) | + +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -226,6 +272,237 @@ Offset of the shadow effect, in pixels. Size of the shadow effect. +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_property_stacked_outline_count: + +.. rst-class:: classref-property + +:ref:`int` **stacked_outline_count** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_stacked_outline_count**\ (\ value\: :ref:`int`\ ) +- :ref:`int` **get_stacked_outline_count**\ (\ ) + +The number of stacked outlines. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_property_stacked_shadow_count: + +.. rst-class:: classref-property + +:ref:`int` **stacked_shadow_count** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_stacked_shadow_count**\ (\ value\: :ref:`int`\ ) +- :ref:`int` **get_stacked_shadow_count**\ (\ ) + +Returns the stacked shadow count. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_LabelSettings_method_add_stacked_outline: + +.. rst-class:: classref-method + +|void| **add_stacked_outline**\ (\ index\: :ref:`int` = -1\ ) :ref:`🔗` + +Adds a new stacked outline to the label at the given ``index``. If ``index`` is ``-1``, the new stacked outline will be added at the end of the list. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_add_stacked_shadow: + +.. rst-class:: classref-method + +|void| **add_stacked_shadow**\ (\ index\: :ref:`int` = -1\ ) :ref:`🔗` + +Adds a new stacked shadow to the label at the given ``index``. If ``index`` is ``-1``, the new stacked shadow will be added at the end of the list. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_get_stacked_outline_color: + +.. rst-class:: classref-method + +:ref:`Color` **get_stacked_outline_color**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the color of the stacked outline at ``index``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_get_stacked_outline_size: + +.. rst-class:: classref-method + +:ref:`int` **get_stacked_outline_size**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the size of the stacked outline at ``index``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_get_stacked_shadow_color: + +.. rst-class:: classref-method + +:ref:`Color` **get_stacked_shadow_color**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the color of the stacked shadow at ``index``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_get_stacked_shadow_offset: + +.. rst-class:: classref-method + +:ref:`Vector2` **get_stacked_shadow_offset**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the offset of the stacked shadow at ``index``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_get_stacked_shadow_outline_size: + +.. rst-class:: classref-method + +:ref:`int` **get_stacked_shadow_outline_size**\ (\ index\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the outline size of the stacked shadow at ``index``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_move_stacked_outline: + +.. rst-class:: classref-method + +|void| **move_stacked_outline**\ (\ from_index\: :ref:`int`, to_position\: :ref:`int`\ ) :ref:`🔗` + +Moves the stacked outline at index ``from_index`` to the given position ``to_position`` in the array. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_move_stacked_shadow: + +.. rst-class:: classref-method + +|void| **move_stacked_shadow**\ (\ from_index\: :ref:`int`, to_position\: :ref:`int`\ ) :ref:`🔗` + +Moves the stacked shadow at index ``from_index`` to the given position ``to_position`` in the array. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_remove_stacked_outline: + +.. rst-class:: classref-method + +|void| **remove_stacked_outline**\ (\ index\: :ref:`int`\ ) :ref:`🔗` + +Removes the stacked outline at index ``index``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_remove_stacked_shadow: + +.. rst-class:: classref-method + +|void| **remove_stacked_shadow**\ (\ index\: :ref:`int`\ ) :ref:`🔗` + +Removes the stacked shadow at index ``index``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_set_stacked_outline_color: + +.. rst-class:: classref-method + +|void| **set_stacked_outline_color**\ (\ index\: :ref:`int`, color\: :ref:`Color`\ ) :ref:`🔗` + +Sets the color of the stacked outline identified by the given ``index`` to ``color``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_set_stacked_outline_size: + +.. rst-class:: classref-method + +|void| **set_stacked_outline_size**\ (\ index\: :ref:`int`, size\: :ref:`int`\ ) :ref:`🔗` + +Sets the size of the stacked outline identified by the given ``index`` to ``size``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_set_stacked_shadow_color: + +.. rst-class:: classref-method + +|void| **set_stacked_shadow_color**\ (\ index\: :ref:`int`, color\: :ref:`Color`\ ) :ref:`🔗` + +Sets the color of the stacked shadow identified by the given ``index`` to ``color``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_set_stacked_shadow_offset: + +.. rst-class:: classref-method + +|void| **set_stacked_shadow_offset**\ (\ index\: :ref:`int`, offset\: :ref:`Vector2`\ ) :ref:`🔗` + +Sets the offset of the stacked shadow identified by the given ``index`` to ``offset``. + +.. rst-class:: classref-item-separator + +---- + +.. _class_LabelSettings_method_set_stacked_shadow_outline_size: + +.. rst-class:: classref-method + +|void| **set_stacked_shadow_outline_size**\ (\ index\: :ref:`int`, size\: :ref:`int`\ ) :ref:`🔗` + +Sets the outline size of the stacked shadow identified by the given ``index`` to ``size``. + .. |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.)` diff --git a/classes/class_meshinstance3d.rst b/classes/class_meshinstance3d.rst index c0058626e..ca8715a08 100644 --- a/classes/class_meshinstance3d.rst +++ b/classes/class_meshinstance3d.rst @@ -21,7 +21,7 @@ Node that instances meshes into a scenario. Description ----------- -MeshInstance3D is a node that takes a :ref:`Mesh` resource and adds it to the current scenario by creating an instance of it. This is the class most often used render 3D geometry and can be used to instance a single :ref:`Mesh` in many places. This allows reusing geometry, which can save on resources. When a :ref:`Mesh` has to be instantiated more than thousands of times at close proximity, consider using a :ref:`MultiMesh` in a :ref:`MultiMeshInstance3D` instead. +MeshInstance3D is a node that takes a :ref:`Mesh` resource and adds it to the current scenario by creating an instance of it. This is the class most often used to render 3D geometry and can be used to instance a single :ref:`Mesh` in many places. This allows reusing geometry, which can save on resources. When a :ref:`Mesh` has to be instantiated more than thousands of times at close proximity, consider using a :ref:`MultiMesh` in a :ref:`MultiMeshInstance3D` instead. .. rst-class:: classref-introduction-group diff --git a/classes/class_node.rst b/classes/class_node.rst index 4877ae410..1f1bbfb96 100644 --- a/classes/class_node.rst +++ b/classes/class_node.rst @@ -189,6 +189,8 @@ Methods +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Node` | :ref:`get_node_or_null`\ (\ path\: :ref:`NodePath`\ ) |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`int`\] | :ref:`get_orphan_node_ids`\ (\ ) |static| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Node` | :ref:`get_parent`\ (\ ) |const| | +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`NodePath` | :ref:`get_path`\ (\ ) |const| | @@ -2340,6 +2342,20 @@ Fetches a node by :ref:`NodePath`. Similar to :ref:`get_node()`\[:ref:`int`\] **get_orphan_node_ids**\ (\ ) |static| :ref:`🔗` + +Returns object IDs of all orphan nodes (nodes outside the :ref:`SceneTree`). Used for debugging. + +\ **Note:** :ref:`get_orphan_node_ids()` only works in debug builds. When called in a project exported in release mode, :ref:`get_orphan_node_ids()` will return an empty array. + +.. rst-class:: classref-item-separator + +---- + .. _class_Node_method_get_parent: .. rst-class:: classref-method diff --git a/classes/class_parallaxbackground.rst b/classes/class_parallaxbackground.rst index a7c2621c5..80c2b1567 100644 --- a/classes/class_parallaxbackground.rst +++ b/classes/class_parallaxbackground.rst @@ -10,6 +10,8 @@ ParallaxBackground ================== +**Deprecated:** Use the :ref:`Parallax2D` node instead. + **Inherits:** :ref:`CanvasLayer` **<** :ref:`Node` **<** :ref:`Object` A node used to create a parallax scrolling background. diff --git a/classes/class_parallaxlayer.rst b/classes/class_parallaxlayer.rst index 7dc0f710a..3bbf24838 100644 --- a/classes/class_parallaxlayer.rst +++ b/classes/class_parallaxlayer.rst @@ -10,6 +10,8 @@ ParallaxLayer ============= +**Deprecated:** Use the :ref:`Parallax2D` node instead. + **Inherits:** :ref:`Node2D` **<** :ref:`CanvasItem` **<** :ref:`Node` **<** :ref:`Object` A parallax scrolling layer to be used with :ref:`ParallaxBackground`. diff --git a/classes/class_renderingserver.rst b/classes/class_renderingserver.rst index 596e11488..65b8ea146 100644 --- a/classes/class_renderingserver.rst +++ b/classes/class_renderingserver.rst @@ -495,8 +495,6 @@ Methods +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`instance_geometry_set_visibility_range`\ (\ instance\: :ref:`RID`, min\: :ref:`float`, max\: :ref:`float`, min_margin\: :ref:`float`, max_margin\: :ref:`float`, fade_mode\: :ref:`VisibilityRangeFadeMode`\ ) | +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`instance_reset_physics_interpolation`\ (\ instance\: :ref:`RID`\ ) | - +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`instance_set_base`\ (\ instance\: :ref:`RID`, base\: :ref:`RID`\ ) | +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`instance_set_blend_shape_weight`\ (\ instance\: :ref:`RID`, shape\: :ref:`int`, weight\: :ref:`float`\ ) | @@ -507,8 +505,6 @@ Methods +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`instance_set_ignore_culling`\ (\ instance\: :ref:`RID`, enabled\: :ref:`bool`\ ) | +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`instance_set_interpolated`\ (\ instance\: :ref:`RID`, interpolated\: :ref:`bool`\ ) | - +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`instance_set_layer_mask`\ (\ instance\: :ref:`RID`, mask\: :ref:`int`\ ) | +----------------------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`instance_set_pivot_data`\ (\ instance\: :ref:`RID`, sorting_offset\: :ref:`float`, use_aabb_center\: :ref:`bool`\ ) | @@ -8862,20 +8858,6 @@ Sets the visibility range values for the given geometry instance. Equivalent to ---- -.. _class_RenderingServer_method_instance_reset_physics_interpolation: - -.. rst-class:: classref-method - -|void| **instance_reset_physics_interpolation**\ (\ instance\: :ref:`RID`\ ) :ref:`🔗` - -Prevents physics interpolation for the current physics tick. - -This is useful when moving an instance to a new location, to give an instantaneous change rather than interpolation from the previous location. - -.. rst-class:: classref-item-separator - ----- - .. _class_RenderingServer_method_instance_set_base: .. rst-class:: classref-method @@ -8936,18 +8918,6 @@ If ``true``, ignores both frustum and occlusion culling on the specified 3D geom ---- -.. _class_RenderingServer_method_instance_set_interpolated: - -.. rst-class:: classref-method - -|void| **instance_set_interpolated**\ (\ instance\: :ref:`RID`, interpolated\: :ref:`bool`\ ) :ref:`🔗` - -Turns on and off physics interpolation for the instance. - -.. rst-class:: classref-item-separator - ----- - .. _class_RenderingServer_method_instance_set_layer_mask: .. rst-class:: classref-method diff --git a/classes/class_resourcesaver.rst b/classes/class_resourcesaver.rst index 4855a2530..f9faa6e54 100644 --- a/classes/class_resourcesaver.rst +++ b/classes/class_resourcesaver.rst @@ -42,6 +42,8 @@ Methods +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Error` | :ref:`save`\ (\ resource\: :ref:`Resource`, path\: :ref:`String` = "", flags\: |bitfield|\[:ref:`SaverFlags`\] = 0\ ) | +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`set_uid`\ (\ resource\: :ref:`String`, uid\: :ref:`int`\ ) | + +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -195,6 +197,20 @@ Returns :ref:`@GlobalScope.OK` on success. \ **Note:** When the project is running, any generated UID associated with the resource will not be saved as the required code is only executed in editor mode. +.. rst-class:: classref-item-separator + +---- + +.. _class_ResourceSaver_method_set_uid: + +.. rst-class:: classref-method + +:ref:`Error` **set_uid**\ (\ resource\: :ref:`String`, uid\: :ref:`int`\ ) :ref:`🔗` + +Sets the UID of the given ``resource`` path to ``uid``. You can generate a new UID using :ref:`ResourceUID.create_id()`. + +Since resources will normally get a UID automatically, this method is only useful in very specific cases. + .. |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.)` diff --git a/classes/class_richtextlabel.rst b/classes/class_richtextlabel.rst index ea63f3f16..ed95d658d 100644 --- a/classes/class_richtextlabel.rst +++ b/classes/class_richtextlabel.rst @@ -143,10 +143,14 @@ Methods +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_line_count`\ (\ ) |const| | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_line_height`\ (\ line\: :ref:`int`\ ) |const| | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_line_offset`\ (\ line\: :ref:`int`\ ) | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2i` | :ref:`get_line_range`\ (\ line\: :ref:`int`\ ) | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_line_width`\ (\ line\: :ref:`int`\ ) |const| | + +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PopupMenu` | :ref:`get_menu`\ (\ ) |const| | +-------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_paragraph_count`\ (\ ) |const| | @@ -1268,6 +1272,20 @@ Returns the total number of lines in the text. Wrapped text is counted as multip ---- +.. _class_RichTextLabel_method_get_line_height: + +.. rst-class:: classref-method + +:ref:`int` **get_line_height**\ (\ line\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the height of the line found at the provided index. + +\ **Note:** If :ref:`threaded` is enabled, this method returns a value for the loaded part of the document. Use :ref:`is_finished()` or :ref:`finished` to determine whether the document is fully loaded. + +.. rst-class:: classref-item-separator + +---- + .. _class_RichTextLabel_method_get_line_offset: .. rst-class:: classref-method @@ -1298,6 +1316,20 @@ Returns the indexes of the first and last visible characters for the given ``lin ---- +.. _class_RichTextLabel_method_get_line_width: + +.. rst-class:: classref-method + +:ref:`int` **get_line_width**\ (\ line\: :ref:`int`\ ) |const| :ref:`🔗` + +Returns the width of the line found at the provided index. + +\ **Note:** If :ref:`threaded` is enabled, this method returns a value for the loaded part of the document. Use :ref:`is_finished()` or :ref:`finished` to determine whether the document is fully loaded. + +.. rst-class:: classref-item-separator + +---- + .. _class_RichTextLabel_method_get_menu: .. rst-class:: classref-method diff --git a/classes/class_scenetree.rst b/classes/class_scenetree.rst index 0f49afd9a..a8c2f48f0 100644 --- a/classes/class_scenetree.rst +++ b/classes/class_scenetree.rst @@ -883,6 +883,8 @@ Sets a custom :ref:`MultiplayerAPI` with the given ``root_ \ **Note:** No :ref:`MultiplayerAPI` must be configured for the subpath containing ``root_path``, nested custom multiplayers are not allowed. I.e. if one is configured for ``"/root/Foo"`` setting one for ``"/root/Foo/Bar"`` will cause an error. +\ **Note:** :ref:`set_multiplayer()` should be called *before* the child nodes are ready at the given ``root_path``. If multiplayer nodes like :ref:`MultiplayerSpawner` or :ref:`MultiplayerSynchronizer` are added to the tree before the custom multiplayer API is set, they will not work. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_string.rst b/classes/class_string.rst index 376ad7c6e..d43073dc2 100644 --- a/classes/class_string.rst +++ b/classes/class_string.rst @@ -1086,7 +1086,7 @@ See also :ref:`is_valid_unicode_identifier()` **is_valid_filename**\ (\ ) |const| :ref:`🔗` -Returns ``true`` if this string does not contain characters that are not allowed in file names (``:`` ``/`` ``\`` ``?`` ``*`` ``"`` ``|`` ``%`` ``<`` ``>``). +Returns ``true`` if this string is a valid file name. A valid file name cannot be empty, begin or end with space characters, or contain characters that are not allowed (``:`` ``/`` ``\`` ``?`` ``*`` ``"`` ``|`` ``%`` ``<`` ``>``). .. rst-class:: classref-item-separator diff --git a/classes/class_stringname.rst b/classes/class_stringname.rst index cb9d9b53f..b9d518078 100644 --- a/classes/class_stringname.rst +++ b/classes/class_stringname.rst @@ -1026,7 +1026,7 @@ See also :ref:`is_valid_unicode_identifier()` **is_valid_filename**\ (\ ) |const| :ref:`🔗` -Returns ``true`` if this string does not contain characters that are not allowed in file names (``:`` ``/`` ``\`` ``?`` ``*`` ``"`` ``|`` ``%`` ``<`` ``>``). +Returns ``true`` if this string is a valid file name. A valid file name cannot be empty, begin or end with space characters, or contain characters that are not allowed (``:`` ``/`` ``\`` ``?`` ``*`` ``"`` ``|`` ``%`` ``<`` ``>``). .. rst-class:: classref-item-separator diff --git a/classes/class_vehiclewheel3d.rst b/classes/class_vehiclewheel3d.rst index 916996312..27bc442f9 100644 --- a/classes/class_vehiclewheel3d.rst +++ b/classes/class_vehiclewheel3d.rst @@ -38,35 +38,37 @@ Properties .. table:: :widths: auto - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`brake` | ``0.0`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`damping_compression` | ``0.83`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`damping_relaxation` | ``0.88`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`engine_force` | ``0.0`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`steering` | ``0.0`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`suspension_max_force` | ``6000.0`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`suspension_stiffness` | ``5.88`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`suspension_travel` | ``0.2`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`bool` | :ref:`use_as_steering` | ``false`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`bool` | :ref:`use_as_traction` | ``false`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`wheel_friction_slip` | ``10.5`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`wheel_radius` | ``0.5`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`wheel_rest_length` | ``0.15`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ - | :ref:`float` | :ref:`wheel_roll_influence` | ``0.1`` | - +---------------------------+---------------------------------------------------------------------------------+------------+ + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`brake` | ``0.0`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`damping_compression` | ``0.83`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`damping_relaxation` | ``0.88`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`engine_force` | ``0.0`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`PhysicsInterpolationMode` | physics_interpolation_mode | ``2`` (overrides :ref:`Node`) | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`steering` | ``0.0`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`suspension_max_force` | ``6000.0`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`suspension_stiffness` | ``5.88`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`suspension_travel` | ``0.2`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`use_as_steering` | ``false`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`use_as_traction` | ``false`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`wheel_friction_slip` | ``10.5`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`wheel_radius` | ``0.5`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`wheel_rest_length` | ``0.15`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`wheel_roll_influence` | ``0.1`` | + +---------------------------------------------------------------------+---------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group diff --git a/classes/class_zippacker.rst b/classes/class_zippacker.rst index e82d8aabc..a12945bfe 100644 --- a/classes/class_zippacker.rst +++ b/classes/class_zippacker.rst @@ -38,6 +38,18 @@ This class implements a writer that allows storing the multiple blobs in a ZIP a .. rst-class:: classref-reftable-group +Properties +---------- + +.. table:: + :widths: auto + + +-----------------------+----------------------------------------------------------------------+--------+ + | :ref:`int` | :ref:`compression_level` | ``-1`` | + +-----------------------+----------------------------------------------------------------------+--------+ + +.. rst-class:: classref-reftable-group + Methods ------- @@ -95,6 +107,70 @@ Append a new zip archive to the end of the already existing file at the given pa Add new files to the existing zip archive at the given path. +.. rst-class:: classref-item-separator + +---- + +.. _enum_ZIPPacker_CompressionLevel: + +.. rst-class:: classref-enumeration + +enum **CompressionLevel**: :ref:`🔗` + +.. _class_ZIPPacker_constant_COMPRESSION_DEFAULT: + +.. rst-class:: classref-enumeration-constant + +:ref:`CompressionLevel` **COMPRESSION_DEFAULT** = ``-1`` + +Start a file with the default Deflate compression level (``6``). This is a good compromise between speed and file size. + +.. _class_ZIPPacker_constant_COMPRESSION_NONE: + +.. rst-class:: classref-enumeration-constant + +:ref:`CompressionLevel` **COMPRESSION_NONE** = ``0`` + +Start a file with no compression. This is also known as the "Store" compression mode and is the fastest method of packing files inside a ZIP archive. Consider using this mode for files that are already compressed (such as JPEG, PNG, MP3, or Ogg Vorbis files). + +.. _class_ZIPPacker_constant_COMPRESSION_FAST: + +.. rst-class:: classref-enumeration-constant + +:ref:`CompressionLevel` **COMPRESSION_FAST** = ``1`` + +Start a file with the fastest Deflate compression level (``1``). This is fast to compress, but results in larger file sizes than :ref:`COMPRESSION_DEFAULT`. Decompression speed is generally unaffected by the chosen compression level. + +.. _class_ZIPPacker_constant_COMPRESSION_BEST: + +.. rst-class:: classref-enumeration-constant + +:ref:`CompressionLevel` **COMPRESSION_BEST** = ``9`` + +Start a file with the the best Deflate compression level (``9``). This is slow to compress, but results in smaller file sizes than :ref:`COMPRESSION_DEFAULT`. Decompression speed is generally unaffected by the chosen compression level. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Property Descriptions +--------------------- + +.. _class_ZIPPacker_property_compression_level: + +.. rst-class:: classref-property + +:ref:`int` **compression_level** = ``-1`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_compression_level**\ (\ value\: :ref:`int`\ ) +- :ref:`int` **get_compression_level**\ (\ ) + +The compression level used when :ref:`start_file()` is called. Use :ref:`CompressionLevel` as a reference. + .. rst-class:: classref-section-separator ---- diff --git a/classes/class_zipreader.rst b/classes/class_zipreader.rst index c3e7273bc..bad0f267a 100644 --- a/classes/class_zipreader.rst +++ b/classes/class_zipreader.rst @@ -67,17 +67,19 @@ Methods .. table:: :widths: auto - +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`close`\ (\ ) | - +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`file_exists`\ (\ path\: :ref:`String`, case_sensitive\: :ref:`bool` = true\ ) | - +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`get_files`\ (\ ) | - +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`open`\ (\ path\: :ref:`String`\ ) | - +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedByteArray` | :ref:`read_file`\ (\ path\: :ref:`String`, case_sensitive\: :ref:`bool` = true\ ) | - +---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`close`\ (\ ) | + +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`file_exists`\ (\ path\: :ref:`String`, case_sensitive\: :ref:`bool` = true\ ) | + +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_compression_level`\ (\ path\: :ref:`String`, case_sensitive\: :ref:`bool` = true\ ) | + +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`get_files`\ (\ ) | + +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`open`\ (\ path\: :ref:`String`\ ) | + +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedByteArray` | :ref:`read_file`\ (\ path\: :ref:`String`, case_sensitive\: :ref:`bool` = true\ ) | + +---------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -114,6 +116,18 @@ Must be called after :ref:`open()`. ---- +.. _class_ZIPReader_method_get_compression_level: + +.. rst-class:: classref-method + +:ref:`int` **get_compression_level**\ (\ path\: :ref:`String`, case_sensitive\: :ref:`bool` = true\ ) :ref:`🔗` + +Returns the compression level of the file in the loaded zip archive. Returns ``-1`` if the file doesn't exist or any other error occurs. Must be called after :ref:`open()`. + +.. rst-class:: classref-item-separator + +---- + .. _class_ZIPReader_method_get_files: .. rst-class:: classref-method From 91932021ee8940267849a191f5f0da7b2256b280 Mon Sep 17 00:00:00 2001 From: willnationsdev Date: Sat, 3 May 2025 17:54:19 -0500 Subject: [PATCH 062/263] Fix missing apostrophe. --- tutorials/inputs/inputevent.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/inputs/inputevent.rst b/tutorials/inputs/inputevent.rst index f7e88a550..037e70b39 100644 --- a/tutorials/inputs/inputevent.rst +++ b/tutorials/inputs/inputevent.rst @@ -72,7 +72,7 @@ received input, in order: 1. If the Viewport is embedding Windows, the Viewport tries to interpret the event in its capability as a Window-Manager (e.g. for resizing or moving Windows). 2. Next if an embedded Window is focused, the event is sent to that Window and processed in - the Windows Viewport and afterwards treated as handled. If no embedded Window is focused, + the Window's Viewport and afterwards treated as handled. If no embedded Window is focused, the event is sent to the nodes of the current viewport in the following order. 3. First of all, the standard :ref:`Node._input() ` function will be called in any node that overrides it (and hasn't disabled input processing with :ref:`Node.set_process_input() `). From 55f2cf1509fc4ba8422b0dd99b46325a82500bf1 Mon Sep 17 00:00:00 2001 From: Athenr <82354163+Athenr@users.noreply.github.com> Date: Sat, 3 May 2025 20:47:16 -0400 Subject: [PATCH 063/263] Update tutorials/scripting/c_sharp/c_sharp_differences.rst Revising for grammatical fixes in changes. Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com> --- tutorials/scripting/c_sharp/c_sharp_differences.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/scripting/c_sharp/c_sharp_differences.rst b/tutorials/scripting/c_sharp/c_sharp_differences.rst index c7707bb05..b1c9fcb7f 100644 --- a/tutorials/scripting/c_sharp/c_sharp_differences.rst +++ b/tutorials/scripting/c_sharp/c_sharp_differences.rst @@ -381,7 +381,7 @@ Use ``System.String`` (``string``). Most of Godot's String methods have an equivalent in ``System.String`` or are provided by the ``StringExtensions`` class as extension methods. -Note that C# strings uses UTF-16 encoding, while Godot Strings uses UTF-32 encoding. +Note that C# strings use UTF-16 encoding, while Godot Strings use UTF-32 encoding. Example: From 9b20054182cace81de55b43730ec8b10a81e3ec2 Mon Sep 17 00:00:00 2001 From: Yordan Dolchinkov Date: Fri, 9 May 2025 06:46:21 +0300 Subject: [PATCH 064/263] Remove outdated 2D batching note --- tutorials/performance/gpu_optimization.rst | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tutorials/performance/gpu_optimization.rst b/tutorials/performance/gpu_optimization.rst index 230ba57d6..e34976cb9 100644 --- a/tutorials/performance/gpu_optimization.rst +++ b/tutorials/performance/gpu_optimization.rst @@ -46,15 +46,11 @@ of these expensive state changes. In 2D, the costs of treating each item individually can be prohibitively high - there can easily be thousands of them on the screen. This is why 2D *batching* -is used with OpenGL-based rendering methods. Multiple similar items are grouped +is used. Multiple similar items are grouped together and rendered in a batch, via a single draw call, rather than making a separate draw call for each item. In addition, this means state changes, material and texture changes can be kept to a minimum. -Vulkan-based rendering methods do not use 2D batching yet. Since draw calls are -much cheaper with Vulkan compared to OpenGL, there is less of a need to have 2D -batching (although it can still be beneficial in some cases). - 3D batching ~~~~~~~~~~~ From 0b86baa14f1ee7a6efa406adbfec290c5784facb Mon Sep 17 00:00:00 2001 From: Yordan Dolchinkov Date: Fri, 9 May 2025 07:06:51 +0300 Subject: [PATCH 065/263] Add AgX to list of tonemappers in List of Features --- about/list_of_features.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/about/list_of_features.rst b/about/list_of_features.rst index dfcedbdb6..b59621983 100644 --- a/about/list_of_features.rst +++ b/about/list_of_features.rst @@ -346,7 +346,7 @@ See :ref:`doc_renderers` for a detailed comparison of the rendering methods. **Post-processing:** -- Tonemapping (Linear, Reinhard, Filmic, ACES). +- Tonemapping (Linear, Reinhard, Filmic, ACES, AgX). - Automatic exposure adjustments based on viewport brightness (and manual exposure override). - Near and far depth of field with adjustable bokeh simulation (box, hexagon, circle). - Screen-space ambient occlusion (SSAO) at half or full resolution. From 94d3e734d308b59deed700a6c9c4bec314c3952d Mon Sep 17 00:00:00 2001 From: Ruben Garcia Date: Fri, 9 May 2025 20:10:11 +0200 Subject: [PATCH 066/263] TextToSpeech supported platforms, CameraFeed, link to record audio. (#10930) * Update text_to_speech.rst, mention all supported platforms. --- tutorials/audio/text_to_speech.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/audio/text_to_speech.rst b/tutorials/audio/text_to_speech.rst index 6e91954c8..4717dccda 100644 --- a/tutorials/audio/text_to_speech.rst +++ b/tutorials/audio/text_to_speech.rst @@ -69,7 +69,7 @@ Requirements for functionality Godot includes text-to-speech functionality. You can find these under the :ref:`DisplayServer class `. -Godot depends on system libraries for text-to-speech functionality. These libraries are installed by default on Windows and macOS, but not on all Linux distributions. If they are not present, text-to-speech functionality will not work. Specifically, the ``tts_get_voices()`` method will return an empty list, indicating that there are no usable voices. +Godot depends on system libraries for text-to-speech functionality. These libraries are installed by default on Windows, macOS, Web, Android and iOS, but not on all Linux distributions. If they are not present, text-to-speech functionality will not work. Specifically, the ``tts_get_voices()`` method will return an empty list, indicating that there are no usable voices. Both Godot users on Linux and end-users on Linux running Godot games need to ensure that their system includes the system libraries for text-to-speech to work. Please consult the table below or your own distribution's documentation to determine what libraries you need to install. From a8ccd619365dc5504bbb39a90fd4a9adaea46429 Mon Sep 17 00:00:00 2001 From: ProgrammerOnCoffee <171874668+ProgrammerOnCoffee@users.noreply.github.com> Date: Fri, 9 May 2025 14:53:30 -0400 Subject: [PATCH 067/263] Add `call_deferred` to UI Navigation code example --- tutorials/ui/gui_navigation.rst | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tutorials/ui/gui_navigation.rst b/tutorials/ui/gui_navigation.rst index dbac7f486..d78082323 100644 --- a/tutorials/ui/gui_navigation.rst +++ b/tutorials/ui/gui_navigation.rst @@ -58,22 +58,25 @@ have well-defined vertical or horizontal navigation flow. Necessary code -------------- -For keyboard and controller navigation to work correctly, any node must be focused on +For keyboard and controller navigation to work correctly, any node must be focused by using code when the scene starts. Without doing this, pressing buttons or keys won't -do anything. Here is a basic example of setting initial focus with code: +do anything. + +You can use the :ref:`Control.grab_focus() ` method +to focus a control. Here is a basic example of setting initial focus with code: .. tabs:: .. code-tab:: gdscript GDScript func _ready(): - $StartButton.grab_focus() + $StartButton.grab_focus.call_deferred() .. code-tab:: csharp public override void _Ready() { - GetNode

    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 T!`Uyr#A&GHEvnXcIEd^6U7)%V From d7fe6c2d0186fb91f4a329eb110548946873ff41 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 15 Apr 2025 23:43:47 +0200 Subject: [PATCH 033/263] Fix Sublime Text arguments in Using an external editor - Mention automatic Exec Flags setting in 4.5. --- tutorials/editor/external_editor.rst | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tutorials/editor/external_editor.rst b/tutorials/editor/external_editor.rst index 75cb2dbaf..ec093871c 100644 --- a/tutorials/editor/external_editor.rst +++ b/tutorials/editor/external_editor.rst @@ -54,11 +54,18 @@ Some example **Exec Flags** for various editors include: +---------------------+-----------------------------------------------------+ | Emacs | ``emacs +{line}:{col} {file}`` | +---------------------+-----------------------------------------------------+ -| Sublime Text | ``{project} {file}:{line}:{column}`` | +| Sublime Text | ``{project} {file}:{line}:{col}`` | +---------------------+-----------------------------------------------------+ -| Visual Studio | ``/edit "file"`` | +| Visual Studio* | ``/edit "file"`` | +---------------------+-----------------------------------------------------+ +\*: Arguments are not automatically detected, so you must fill them in manually. + +Since Godot 4.5, **Exec Flags** are automatically detected for all editors +listed above (unless denoted with an asterisk). You don't need to paste them +from this page for it to work, unless your editor has an executable name not +recognized automatically (e.g. a fork of an editor listed here). + .. note:: For Visual Studio Code on Windows, you will have to point to the ``code.cmd`` From c910af068e44669e10f6dc2cd69084510f4b453d Mon Sep 17 00:00:00 2001 From: Gio Aleman Date: Wed, 16 Apr 2025 21:37:34 -0400 Subject: [PATCH 034/263] Minor formatting fix --- tutorials/shaders/shader_reference/shading_language.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/shaders/shader_reference/shading_language.rst b/tutorials/shaders/shader_reference/shading_language.rst index 00debc8e0..77e3c9415 100644 --- a/tutorials/shaders/shader_reference/shading_language.rst +++ b/tutorials/shaders/shader_reference/shading_language.rst @@ -1257,7 +1257,7 @@ Built-in variables A large number of built-in variables are available, like ``UV``, ``COLOR`` and ``VERTEX``. What variables are available depends on the type of shader (``spatial``, ``canvas_item``, ``particle``, etc) and the -function used (``vertex``, ``fragment``, ``light``, ``start``, ``process, +function used (``vertex``, ``fragment``, ``light``, ``start``, ``process``, ``sky``, or ``fog``). For a list of the built-in variables that are available, please see the corresponding pages: From 9c1d54034490730637b46275bfb1ab1c3a60715c Mon Sep 17 00:00:00 2001 From: Godot Organization Date: Sat, 19 Apr 2025 03:23:16 +0000 Subject: [PATCH 035/263] classref: Sync with current master branch (2d3bdca) --- classes/class_@gdscript.rst | 4 +- classes/class_@globalscope.rst | 6 +- classes/class_canvasitem.rst | 266 ++--- classes/class_control.rst | 152 ++- classes/class_editorsettings.rst | 6 +- classes/class_font.rst | 154 +-- classes/class_fontfile.rst | 8 +- classes/class_menubar.rst | 2 +- classes/class_navigationserver2d.rst | 16 + classes/class_navigationserver3d.rst | 16 + classes/class_object.rst | 2 + classes/class_projectsettings.rst | 4 +- classes/class_randomnumbergenerator.rst | 2 +- classes/class_range.rst | 2 +- classes/class_resourceimporterdynamicfont.rst | 14 - classes/class_resourceloader.rst | 11 +- classes/class_systemfont.rst | 8 +- classes/class_textline.rst | 12 +- classes/class_textparagraph.rst | 162 +-- classes/class_textserver.rst | 986 ++++++++-------- classes/class_textserverextension.rst | 1018 +++++++++-------- classes/class_viewport.rst | 52 + classes/class_xrinterface.rst | 34 + classes/class_xrinterfaceextension.rst | 160 +-- 24 files changed, 1681 insertions(+), 1416 deletions(-) diff --git a/classes/class_@gdscript.rst b/classes/class_@gdscript.rst index 58abd13be..1fdf78d65 100644 --- a/classes/class_@gdscript.rst +++ b/classes/class_@gdscript.rst @@ -109,7 +109,9 @@ Positive floating-point infinity. This is the result of floating-point division **NAN** = ``nan`` :ref:`🔗` -"Not a Number", an invalid floating-point value. :ref:`NAN` has special properties, including that ``!=`` always returns ``true``, while other comparison operators always return ``false``. This is true even when comparing with itself (``NAN == NAN`` returns ``false`` and ``NAN != NAN`` returns ``true``). It is returned by some invalid operations, such as dividing floating-point ``0.0`` by ``0.0``. +"Not a Number", an invalid floating-point value. It is returned by some invalid operations, such as dividing floating-point ``0.0`` by ``0.0``. + +\ :ref:`NAN` has special properties, including that ``!=`` always returns ``true``, while other comparison operators always return ``false``. This is true even when comparing with itself (``NAN == NAN`` returns ``false`` and ``NAN != NAN`` returns ``true``). Due to this, you must use :ref:`@GlobalScope.is_nan()` to check whether a number is equal to :ref:`NAN`. \ **Warning:** "Not a Number" is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer ``0`` by ``0`` will not result in :ref:`NAN` and will result in a run-time error instead. diff --git a/classes/class_@globalscope.rst b/classes/class_@globalscope.rst index 1f780985e..7c98b7c98 100644 --- a/classes/class_@globalscope.rst +++ b/classes/class_@globalscope.rst @@ -6015,7 +6015,7 @@ Infinity values of the same sign are considered equal. :ref:`bool` **is_finite**\ (\ x\: :ref:`float`\ ) :ref:`🔗` -Returns whether ``x`` is a finite value, i.e. it is not :ref:`@GDScript.NAN`, positive infinity, or negative infinity. +Returns whether ``x`` is a finite value, i.e. it is not :ref:`@GDScript.NAN`, positive infinity, or negative infinity. See also :ref:`is_inf()` and :ref:`is_nan()`. .. rst-class:: classref-item-separator @@ -6027,7 +6027,7 @@ Returns whether ``x`` is a finite value, i.e. it is not :ref:`@GDScript.NAN` **is_inf**\ (\ x\: :ref:`float`\ ) :ref:`🔗` -Returns ``true`` if ``x`` is either positive infinity or negative infinity. +Returns ``true`` if ``x`` is either positive infinity or negative infinity. See also :ref:`is_finite()` and :ref:`is_nan()`. .. rst-class:: classref-item-separator @@ -6063,7 +6063,7 @@ Returns ``true`` if ``instance`` is a valid Object (e.g. has not been deleted fr :ref:`bool` **is_nan**\ (\ x\: :ref:`float`\ ) :ref:`🔗` -Returns ``true`` if ``x`` is a NaN ("Not a Number" or invalid) value. +Returns ``true`` if ``x`` is a NaN ("Not a Number" or invalid) value. This method is needed as :ref:`@GDScript.NAN` is not equal to itself, which means ``x == NAN`` can't be used to check whether a value is a NaN. .. rst-class:: classref-item-separator diff --git a/classes/class_canvasitem.rst b/classes/class_canvasitem.rst index f65f28b31..bb6b914e3 100644 --- a/classes/class_canvasitem.rst +++ b/classes/class_canvasitem.rst @@ -90,127 +90,127 @@ Methods .. table:: :widths: auto - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_draw`\ (\ ) |virtual| | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_animation_slice`\ (\ animation_length\: :ref:`float`, slice_begin\: :ref:`float`, slice_end\: :ref:`float`, offset\: :ref:`float` = 0.0\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_arc`\ (\ center\: :ref:`Vector2`, radius\: :ref:`float`, start_angle\: :ref:`float`, end_angle\: :ref:`float`, point_count\: :ref:`int`, color\: :ref:`Color`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_char`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, char\: :ref:`String`, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_char_outline`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, char\: :ref:`String`, font_size\: :ref:`int` = 16, size\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_circle`\ (\ position\: :ref:`Vector2`, radius\: :ref:`float`, color\: :ref:`Color`, filled\: :ref:`bool` = true, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_colored_polygon`\ (\ points\: :ref:`PackedVector2Array`, color\: :ref:`Color`, uvs\: :ref:`PackedVector2Array` = PackedVector2Array(), texture\: :ref:`Texture2D` = null\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_dashed_line`\ (\ from\: :ref:`Vector2`, to\: :ref:`Vector2`, color\: :ref:`Color`, width\: :ref:`float` = -1.0, dash\: :ref:`float` = 2.0, aligned\: :ref:`bool` = true, antialiased\: :ref:`bool` = false\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_end_animation`\ (\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_lcd_texture_rect_region`\ (\ texture\: :ref:`Texture2D`, rect\: :ref:`Rect2`, src_rect\: :ref:`Rect2`, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_line`\ (\ from\: :ref:`Vector2`, to\: :ref:`Vector2`, color\: :ref:`Color`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_mesh`\ (\ mesh\: :ref:`Mesh`, texture\: :ref:`Texture2D`, transform\: :ref:`Transform2D` = Transform2D(1, 0, 0, 1, 0, 0), modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_msdf_texture_rect_region`\ (\ texture\: :ref:`Texture2D`, rect\: :ref:`Rect2`, src_rect\: :ref:`Rect2`, modulate\: :ref:`Color` = Color(1, 1, 1, 1), outline\: :ref:`float` = 0.0, pixel_range\: :ref:`float` = 4.0, scale\: :ref:`float` = 1.0\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_multiline`\ (\ points\: :ref:`PackedVector2Array`, color\: :ref:`Color`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_multiline_colors`\ (\ points\: :ref:`PackedVector2Array`, colors\: :ref:`PackedColorArray`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_multiline_string`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_multiline_string_outline`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_multimesh`\ (\ multimesh\: :ref:`MultiMesh`, texture\: :ref:`Texture2D`\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_polygon`\ (\ points\: :ref:`PackedVector2Array`, colors\: :ref:`PackedColorArray`, uvs\: :ref:`PackedVector2Array` = PackedVector2Array(), texture\: :ref:`Texture2D` = null\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_polyline`\ (\ points\: :ref:`PackedVector2Array`, color\: :ref:`Color`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_polyline_colors`\ (\ points\: :ref:`PackedVector2Array`, colors\: :ref:`PackedColorArray`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_primitive`\ (\ points\: :ref:`PackedVector2Array`, colors\: :ref:`PackedColorArray`, uvs\: :ref:`PackedVector2Array`, texture\: :ref:`Texture2D` = null\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_rect`\ (\ rect\: :ref:`Rect2`, color\: :ref:`Color`, filled\: :ref:`bool` = true, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_set_transform`\ (\ position\: :ref:`Vector2`, rotation\: :ref:`float` = 0.0, scale\: :ref:`Vector2` = Vector2(1, 1)\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_set_transform_matrix`\ (\ xform\: :ref:`Transform2D`\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_string`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_string_outline`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_style_box`\ (\ style_box\: :ref:`StyleBox`, rect\: :ref:`Rect2`\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_texture`\ (\ texture\: :ref:`Texture2D`, position\: :ref:`Vector2`, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_texture_rect`\ (\ texture\: :ref:`Texture2D`, rect\: :ref:`Rect2`, tile\: :ref:`bool`, modulate\: :ref:`Color` = Color(1, 1, 1, 1), transpose\: :ref:`bool` = false\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_texture_rect_region`\ (\ texture\: :ref:`Texture2D`, rect\: :ref:`Rect2`, src_rect\: :ref:`Rect2`, modulate\: :ref:`Color` = Color(1, 1, 1, 1), transpose\: :ref:`bool` = false, clip_uv\: :ref:`bool` = true\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`force_update_transform`\ (\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_canvas`\ (\ ) |const| | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_canvas_item`\ (\ ) |const| | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`CanvasLayer` | :ref:`get_canvas_layer_node`\ (\ ) |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:`Variant` | :ref:`get_instance_shader_parameter`\ (\ name\: :ref:`StringName`\ ) |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`\ (\ layer\: :ref:`int`\ ) |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`\ (\ viewport_point\: :ref:`Vector2`\ ) |const| | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`InputEvent` | :ref:`make_input_local`\ (\ event\: :ref:`InputEvent`\ ) |const| | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`move_to_front`\ (\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`queue_redraw`\ (\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_instance_shader_parameter`\ (\ name\: :ref:`StringName`, value\: :ref:`Variant`\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_notify_local_transform`\ (\ enable\: :ref:`bool`\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_notify_transform`\ (\ enable\: :ref:`bool`\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_visibility_layer_bit`\ (\ layer\: :ref:`int`, enabled\: :ref:`bool`\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`show`\ (\ ) | - +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_draw`\ (\ ) |virtual| | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_animation_slice`\ (\ animation_length\: :ref:`float`, slice_begin\: :ref:`float`, slice_end\: :ref:`float`, offset\: :ref:`float` = 0.0\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_arc`\ (\ center\: :ref:`Vector2`, radius\: :ref:`float`, start_angle\: :ref:`float`, end_angle\: :ref:`float`, point_count\: :ref:`int`, color\: :ref:`Color`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_char`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, char\: :ref:`String`, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_char_outline`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, char\: :ref:`String`, font_size\: :ref:`int` = 16, size\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_circle`\ (\ position\: :ref:`Vector2`, radius\: :ref:`float`, color\: :ref:`Color`, filled\: :ref:`bool` = true, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_colored_polygon`\ (\ points\: :ref:`PackedVector2Array`, color\: :ref:`Color`, uvs\: :ref:`PackedVector2Array` = PackedVector2Array(), texture\: :ref:`Texture2D` = null\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_dashed_line`\ (\ from\: :ref:`Vector2`, to\: :ref:`Vector2`, color\: :ref:`Color`, width\: :ref:`float` = -1.0, dash\: :ref:`float` = 2.0, aligned\: :ref:`bool` = true, antialiased\: :ref:`bool` = false\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_end_animation`\ (\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_lcd_texture_rect_region`\ (\ texture\: :ref:`Texture2D`, rect\: :ref:`Rect2`, src_rect\: :ref:`Rect2`, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_line`\ (\ from\: :ref:`Vector2`, to\: :ref:`Vector2`, color\: :ref:`Color`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_mesh`\ (\ mesh\: :ref:`Mesh`, texture\: :ref:`Texture2D`, transform\: :ref:`Transform2D` = Transform2D(1, 0, 0, 1, 0, 0), modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_msdf_texture_rect_region`\ (\ texture\: :ref:`Texture2D`, rect\: :ref:`Rect2`, src_rect\: :ref:`Rect2`, modulate\: :ref:`Color` = Color(1, 1, 1, 1), outline\: :ref:`float` = 0.0, pixel_range\: :ref:`float` = 4.0, scale\: :ref:`float` = 1.0\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_multiline`\ (\ points\: :ref:`PackedVector2Array`, color\: :ref:`Color`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_multiline_colors`\ (\ points\: :ref:`PackedVector2Array`, colors\: :ref:`PackedColorArray`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_multiline_string`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_multiline_string_outline`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_multimesh`\ (\ multimesh\: :ref:`MultiMesh`, texture\: :ref:`Texture2D`\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_polygon`\ (\ points\: :ref:`PackedVector2Array`, colors\: :ref:`PackedColorArray`, uvs\: :ref:`PackedVector2Array` = PackedVector2Array(), texture\: :ref:`Texture2D` = null\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_polyline`\ (\ points\: :ref:`PackedVector2Array`, color\: :ref:`Color`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_polyline_colors`\ (\ points\: :ref:`PackedVector2Array`, colors\: :ref:`PackedColorArray`, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_primitive`\ (\ points\: :ref:`PackedVector2Array`, colors\: :ref:`PackedColorArray`, uvs\: :ref:`PackedVector2Array`, texture\: :ref:`Texture2D` = null\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_rect`\ (\ rect\: :ref:`Rect2`, color\: :ref:`Color`, filled\: :ref:`bool` = true, width\: :ref:`float` = -1.0, antialiased\: :ref:`bool` = false\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_set_transform`\ (\ position\: :ref:`Vector2`, rotation\: :ref:`float` = 0.0, scale\: :ref:`Vector2` = Vector2(1, 1)\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_set_transform_matrix`\ (\ xform\: :ref:`Transform2D`\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_string`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_string_outline`\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_style_box`\ (\ style_box\: :ref:`StyleBox`, rect\: :ref:`Rect2`\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_texture`\ (\ texture\: :ref:`Texture2D`, position\: :ref:`Vector2`, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_texture_rect`\ (\ texture\: :ref:`Texture2D`, rect\: :ref:`Rect2`, tile\: :ref:`bool`, modulate\: :ref:`Color` = Color(1, 1, 1, 1), transpose\: :ref:`bool` = false\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_texture_rect_region`\ (\ texture\: :ref:`Texture2D`, rect\: :ref:`Rect2`, src_rect\: :ref:`Rect2`, modulate\: :ref:`Color` = Color(1, 1, 1, 1), transpose\: :ref:`bool` = false, clip_uv\: :ref:`bool` = true\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`force_update_transform`\ (\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_canvas`\ (\ ) |const| | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_canvas_item`\ (\ ) |const| | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`CanvasLayer` | :ref:`get_canvas_layer_node`\ (\ ) |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:`Variant` | :ref:`get_instance_shader_parameter`\ (\ name\: :ref:`StringName`\ ) |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`\ (\ layer\: :ref:`int`\ ) |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`\ (\ viewport_point\: :ref:`Vector2`\ ) |const| | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`InputEvent` | :ref:`make_input_local`\ (\ event\: :ref:`InputEvent`\ ) |const| | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`move_to_front`\ (\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`queue_redraw`\ (\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_instance_shader_parameter`\ (\ name\: :ref:`StringName`, value\: :ref:`Variant`\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_notify_local_transform`\ (\ enable\: :ref:`bool`\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_notify_transform`\ (\ enable\: :ref:`bool`\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_visibility_layer_bit`\ (\ layer\: :ref:`int`, enabled\: :ref:`bool`\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`show`\ (\ ) | + +---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -848,9 +848,9 @@ The arc is drawn from ``start_angle`` towards the value of ``end_angle`` so in c .. rst-class:: classref-method -|void| **draw_char**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, char\: :ref:`String`, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **draw_char**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, char\: :ref:`String`, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draws a string first character using a custom font. +Draws a string first character using a custom font. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -860,9 +860,9 @@ Draws a string first character using a custom font. .. rst-class:: classref-method -|void| **draw_char_outline**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, char\: :ref:`String`, font_size\: :ref:`int` = 16, size\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **draw_char_outline**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, char\: :ref:`String`, font_size\: :ref:`int` = 16, size\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draws a string first character outline using a custom font. +Draws a string first character outline using a custom font. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -1033,9 +1033,9 @@ If ``width`` is negative, then two-point primitives will be drawn instead of a f .. rst-class:: classref-method -|void| **draw_multiline_string**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| :ref:`🔗` +|void| **draw_multiline_string**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -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. +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. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -1045,9 +1045,9 @@ Breaks ``text`` into lines and draws it using the specified ``font`` at the ``po .. rst-class:: classref-method -|void| **draw_multiline_string_outline**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| :ref:`🔗` +|void| **draw_multiline_string_outline**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -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. +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. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -1169,9 +1169,9 @@ Sets a custom transform for drawing via matrix. Anything drawn afterwards will b .. rst-class:: classref-method -|void| **draw_string**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| :ref:`🔗` +|void| **draw_string**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -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. +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. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. \ **Example:** Draw "Hello world", using the project's default font: @@ -1208,9 +1208,9 @@ See also :ref:`Font.draw_string()`. .. rst-class:: classref-method -|void| **draw_string_outline**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| :ref:`🔗` +|void| **draw_string_outline**\ (\ font\: :ref:`Font`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -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. +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. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator diff --git a/classes/class_control.rst b/classes/class_control.rst index eb5d2f25b..9013f47b9 100644 --- a/classes/class_control.rst +++ b/classes/class_control.rst @@ -81,6 +81,8 @@ Properties +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`custom_minimum_size` | ``Vector2(0, 0)`` | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`FocusBehaviorRecursive` | :ref:`focus_behavior_recursive` | ``0`` | + +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`FocusMode` | :ref:`focus_mode` | ``0`` | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`NodePath` | :ref:`focus_neighbor_bottom` | ``NodePath("")`` | @@ -95,8 +97,6 @@ Properties +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`NodePath` | :ref:`focus_previous` | ``NodePath("")`` | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ - | :ref:`RecursiveBehavior` | :ref:`focus_recursive_behavior` | ``0`` | - +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`global_position` | | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`GrowDirection` | :ref:`grow_horizontal` | ``1`` | @@ -107,14 +107,14 @@ Properties +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`localize_numeral_system` | ``true`` | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`MouseBehaviorRecursive` | :ref:`mouse_behavior_recursive` | ``0`` | + +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`CursorShape` | :ref:`mouse_default_cursor_shape` | ``0`` | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`MouseFilter` | :ref:`mouse_filter` | ``0`` | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`mouse_force_pass_scroll_events` | ``true`` | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ - | :ref:`RecursiveBehavior` | :ref:`mouse_recursive_behavior` | ``0`` | - +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`float` | :ref:`offset_bottom` | ``0.0`` | +---------------------------------------------------------------------+----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`float` | :ref:`offset_left` | ``0.0`` | @@ -223,7 +223,7 @@ Methods +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`get_end`\ (\ ) |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`FocusMode` | :ref:`get_focus_mode_with_recursive`\ (\ ) |const| | + | :ref:`FocusMode` | :ref:`get_focus_mode_with_override`\ (\ ) |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`NodePath` | :ref:`get_focus_neighbor`\ (\ side\: :ref:`Side`\ ) |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -231,7 +231,7 @@ Methods +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`get_minimum_size`\ (\ ) |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`MouseFilter` | :ref:`get_mouse_filter_with_recursive`\ (\ ) |const| | + | :ref:`MouseFilter` | :ref:`get_mouse_filter_with_override`\ (\ ) |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`get_offset`\ (\ offset\: :ref:`Side`\ ) |const| | +--------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -522,35 +522,69 @@ The node can grab focus only when screen reader is active. Use with :ref:`focus_ ---- -.. _enum_Control_RecursiveBehavior: +.. _enum_Control_FocusBehaviorRecursive: .. rst-class:: classref-enumeration -enum **RecursiveBehavior**: :ref:`🔗` +enum **FocusBehaviorRecursive**: :ref:`🔗` -.. _class_Control_constant_RECURSIVE_BEHAVIOR_INHERITED: +.. _class_Control_constant_FOCUS_BEHAVIOR_INHERITED: .. rst-class:: classref-enumeration-constant -:ref:`RecursiveBehavior` **RECURSIVE_BEHAVIOR_INHERITED** = ``0`` +:ref:`FocusBehaviorRecursive` **FOCUS_BEHAVIOR_INHERITED** = ``0`` -Inherits the associated behavior from the control's parent. This is the default for any newly created control. +Inherits the :ref:`focus_behavior_recursive` from the parent control. If there is no parent control, this is the same as :ref:`FOCUS_BEHAVIOR_ENABLED`. -.. _class_Control_constant_RECURSIVE_BEHAVIOR_DISABLED: +.. _class_Control_constant_FOCUS_BEHAVIOR_DISABLED: .. rst-class:: classref-enumeration-constant -:ref:`RecursiveBehavior` **RECURSIVE_BEHAVIOR_DISABLED** = ``1`` +:ref:`FocusBehaviorRecursive` **FOCUS_BEHAVIOR_DISABLED** = ``1`` -The current control and all its recursive child controls have their associated behavior disabled, regardless of the parent control's configuration. +Prevents the control from getting focused. :ref:`get_focus_mode_with_override()` will return :ref:`FOCUS_NONE`. -.. _class_Control_constant_RECURSIVE_BEHAVIOR_ENABLED: +.. _class_Control_constant_FOCUS_BEHAVIOR_ENABLED: .. rst-class:: classref-enumeration-constant -:ref:`RecursiveBehavior` **RECURSIVE_BEHAVIOR_ENABLED** = ``2`` +:ref:`FocusBehaviorRecursive` **FOCUS_BEHAVIOR_ENABLED** = ``2`` -The current control and all its recursive child controls have their associated behavior enabled, regardless of the parent control's configuration. +Allows the control to be focused, depending on the :ref:`focus_mode`. This can be used to ignore the parent's :ref:`focus_behavior_recursive`. :ref:`get_focus_mode_with_override()` will return the :ref:`focus_mode`. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_Control_MouseBehaviorRecursive: + +.. rst-class:: classref-enumeration + +enum **MouseBehaviorRecursive**: :ref:`🔗` + +.. _class_Control_constant_MOUSE_BEHAVIOR_INHERITED: + +.. rst-class:: classref-enumeration-constant + +:ref:`MouseBehaviorRecursive` **MOUSE_BEHAVIOR_INHERITED** = ``0`` + +Inherits the :ref:`mouse_behavior_recursive` from the parent control. If there is no parent control, this is the same as :ref:`MOUSE_BEHAVIOR_ENABLED`. + +.. _class_Control_constant_MOUSE_BEHAVIOR_DISABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`MouseBehaviorRecursive` **MOUSE_BEHAVIOR_DISABLED** = ``1`` + +Prevents the control from receiving mouse input. :ref:`get_mouse_filter_with_override()` will return :ref:`MOUSE_FILTER_IGNORE`. + +.. _class_Control_constant_MOUSE_BEHAVIOR_ENABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`MouseBehaviorRecursive` **MOUSE_BEHAVIOR_ENABLED** = ``2`` + +Allows the control to be receive mouse input, depending on the :ref:`mouse_filter`. This can be used to ignore the parent's :ref:`mouse_behavior_recursive`. :ref:`get_mouse_filter_with_override()` will return the :ref:`mouse_filter`. .. rst-class:: classref-item-separator @@ -1413,6 +1447,23 @@ The minimum size of the node's bounding rectangle. If you set it to a value grea ---- +.. _class_Control_property_focus_behavior_recursive: + +.. rst-class:: classref-property + +:ref:`FocusBehaviorRecursive` **focus_behavior_recursive** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_focus_behavior_recursive**\ (\ value\: :ref:`FocusBehaviorRecursive`\ ) +- :ref:`FocusBehaviorRecursive` **get_focus_behavior_recursive**\ (\ ) + +Determines which controls can be focused together with :ref:`focus_mode`. See :ref:`get_focus_mode_with_override()`. Since the default behavior is :ref:`FOCUS_BEHAVIOR_INHERITED`, this can be used to prevent all children controls from getting focused. + +.. rst-class:: classref-item-separator + +---- + .. _class_Control_property_focus_mode: .. rst-class:: classref-property @@ -1424,7 +1475,7 @@ The minimum size of the node's bounding rectangle. If you set it to a value grea - |void| **set_focus_mode**\ (\ value\: :ref:`FocusMode`\ ) - :ref:`FocusMode` **get_focus_mode**\ (\ ) -The focus access mode for the control (None, Click or All). Only one Control can be focused at the same time, and it will receive keyboard, gamepad, and mouse signals. +Determines which controls can be focused. Only one control can be focused at a time, and the focused control will receive keyboard, gamepad, and mouse events in :ref:`_gui_input()`. Use :ref:`get_focus_mode_with_override()` to determine if a control can grab focus, since :ref:`focus_behavior_recursive` also affects it. See also :ref:`grab_focus()`. .. rst-class:: classref-item-separator @@ -1536,23 +1587,6 @@ If this property is not set, Godot will select a "best guess" based on surroundi ---- -.. _class_Control_property_focus_recursive_behavior: - -.. rst-class:: classref-property - -:ref:`RecursiveBehavior` **focus_recursive_behavior** = ``0`` :ref:`🔗` - -.. rst-class:: classref-property-setget - -- |void| **set_focus_recursive_behavior**\ (\ value\: :ref:`RecursiveBehavior`\ ) -- :ref:`RecursiveBehavior` **get_focus_recursive_behavior**\ (\ ) - -Controls whether the recursive child nodes should have their :ref:`focus_mode` overridden to :ref:`FOCUS_NONE` when evaluating input. - -.. rst-class:: classref-item-separator - ----- - .. _class_Control_property_global_position: .. rst-class:: classref-property @@ -1639,6 +1673,23 @@ If ``true``, automatically converts code line numbers, list indices, :ref:`SpinB ---- +.. _class_Control_property_mouse_behavior_recursive: + +.. rst-class:: classref-property + +:ref:`MouseBehaviorRecursive` **mouse_behavior_recursive** = ``0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_mouse_behavior_recursive**\ (\ value\: :ref:`MouseBehaviorRecursive`\ ) +- :ref:`MouseBehaviorRecursive` **get_mouse_behavior_recursive**\ (\ ) + +Determines which controls can receive mouse input together with :ref:`mouse_filter`. See :ref:`get_mouse_filter_with_override()`. Since the default behavior is :ref:`MOUSE_BEHAVIOR_INHERITED`, this can be used to prevent all children controls from receiving mouse input. + +.. rst-class:: classref-item-separator + +---- + .. _class_Control_property_mouse_default_cursor_shape: .. rst-class:: classref-property @@ -1669,7 +1720,7 @@ The default cursor shape for this control. Useful for Godot plugins and applicat - |void| **set_mouse_filter**\ (\ value\: :ref:`MouseFilter`\ ) - :ref:`MouseFilter` **get_mouse_filter**\ (\ ) -Controls whether the control will be able to receive mouse button input events through :ref:`_gui_input()` and how these events should be handled. Also controls whether the control can receive the :ref:`mouse_entered`, and :ref:`mouse_exited` signals. See the constants to learn what each does. +Determines which controls will be able to receive mouse button input events through :ref:`_gui_input()` and the :ref:`mouse_entered`, and :ref:`mouse_exited` signals. Also determines how these events should be propagated. See the constants to learn what each does. Use :ref:`get_mouse_filter_with_override()` to determine if a control can receive mouse input, since :ref:`mouse_behavior_recursive` also affects it. .. rst-class:: classref-item-separator @@ -1696,23 +1747,6 @@ You should disable it on the root of your UI if you do not want scroll events to ---- -.. _class_Control_property_mouse_recursive_behavior: - -.. rst-class:: classref-property - -:ref:`RecursiveBehavior` **mouse_recursive_behavior** = ``0`` :ref:`🔗` - -.. rst-class:: classref-property-setget - -- |void| **set_mouse_recursive_behavior**\ (\ value\: :ref:`RecursiveBehavior`\ ) -- :ref:`RecursiveBehavior` **get_mouse_recursive_behavior**\ (\ ) - -Controls whether the recursive child nodes should have their :ref:`mouse_filter` overridden to :ref:`MOUSE_FILTER_IGNORE` when evaluating input. - -.. rst-class:: classref-item-separator - ----- - .. _class_Control_property_offset_bottom: .. rst-class:: classref-property @@ -2695,13 +2729,13 @@ Returns :ref:`offset_right` and :ref:`offse ---- -.. _class_Control_method_get_focus_mode_with_recursive: +.. _class_Control_method_get_focus_mode_with_override: .. rst-class:: classref-method -:ref:`FocusMode` **get_focus_mode_with_recursive**\ (\ ) |const| :ref:`🔗` +:ref:`FocusMode` **get_focus_mode_with_override**\ (\ ) |const| :ref:`🔗` -Similar to the getter of :ref:`focus_mode`, but takes parent's :ref:`focus_recursive_behavior` into account. +Returns the :ref:`focus_mode`, but takes the :ref:`focus_behavior_recursive` into account. If :ref:`focus_behavior_recursive` is set to :ref:`FOCUS_BEHAVIOR_DISABLED`, or it is set to :ref:`FOCUS_BEHAVIOR_INHERITED` and its ancestor is set to :ref:`FOCUS_BEHAVIOR_DISABLED`, then this returns :ref:`FOCUS_NONE`. .. rst-class:: classref-item-separator @@ -2749,13 +2783,13 @@ Returns the minimum size for this control. See :ref:`custom_minimum_size` **get_mouse_filter_with_recursive**\ (\ ) |const| :ref:`🔗` +:ref:`MouseFilter` **get_mouse_filter_with_override**\ (\ ) |const| :ref:`🔗` -Similar to the getter of :ref:`mouse_filter`, but takes parent's :ref:`mouse_recursive_behavior` into account. +Returns the :ref:`mouse_filter`, but takes the :ref:`mouse_behavior_recursive` into account. If :ref:`mouse_behavior_recursive` is set to :ref:`MOUSE_BEHAVIOR_DISABLED`, or it is set to :ref:`MOUSE_BEHAVIOR_INHERITED` and its ancestor is set to :ref:`MOUSE_BEHAVIOR_DISABLED`, then this returns :ref:`MOUSE_FILTER_IGNORE`. .. rst-class:: classref-item-separator diff --git a/classes/class_editorsettings.rst b/classes/class_editorsettings.rst index fa0a2e82d..a8c3daa50 100644 --- a/classes/class_editorsettings.rst +++ b/classes/class_editorsettings.rst @@ -605,7 +605,7 @@ Properties +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`interface/touchscreen/scale_gizmo_handles` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`network/connection/engine_version_update_mode` | + | :ref:`int` | :ref:`network/connection/check_for_updates` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`network/connection/network_mode` | +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -4488,11 +4488,11 @@ Specify the multiplier to apply to the scale for the editor gizmo handles to imp ---- -.. _class_EditorSettings_property_network/connection/engine_version_update_mode: +.. _class_EditorSettings_property_network/connection/check_for_updates: .. rst-class:: classref-property -:ref:`int` **network/connection/engine_version_update_mode** :ref:`🔗` +:ref:`int` **network/connection/check_for_updates** :ref:`🔗` Specifies how the engine should check for updates. diff --git a/classes/class_font.rst b/classes/class_font.rst index 204d3a67a..cebb0f88d 100644 --- a/classes/class_font.rst +++ b/classes/class_font.rst @@ -43,71 +43,71 @@ Methods .. table:: :widths: auto - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`draw_char`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, char\: :ref:`int`, font_size\: :ref:`int`, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`draw_char_outline`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, char\: :ref:`int`, font_size\: :ref:`int`, size\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_multiline_string`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_multiline_string_outline`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_string`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_string_outline`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`find_variation`\ (\ variation_coordinates\: :ref:`Dictionary`, face_index\: :ref:`int` = 0, strength\: :ref:`float` = 0.0, transform\: :ref:`Transform2D` = Transform2D(1, 0, 0, 1, 0, 0), spacing_top\: :ref:`int` = 0, spacing_bottom\: :ref:`int` = 0, spacing_space\: :ref:`int` = 0, spacing_glyph\: :ref:`int` = 0, baseline_offset\: :ref:`float` = 0.0\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_ascent`\ (\ font_size\: :ref:`int` = 16\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_char_size`\ (\ char\: :ref:`int`, font_size\: :ref:`int`\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_descent`\ (\ font_size\: :ref:`int` = 16\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_face_count`\ (\ ) |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`\ (\ font_size\: :ref:`int` = 16\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_multiline_string_size`\ (\ text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`get_opentype_features`\ (\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`get_ot_name_strings`\ (\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`RID`\] | :ref:`get_rids`\ (\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_spacing`\ (\ spacing\: :ref:`SpacingType`\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_string_size`\ (\ text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`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`\ (\ font_size\: :ref:`int` = 16\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_underline_thickness`\ (\ font_size\: :ref:`int` = 16\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_char`\ (\ char\: :ref:`int`\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_language_supported`\ (\ language\: :ref:`String`\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_script_supported`\ (\ script\: :ref:`String`\ ) |const| | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_cache_capacity`\ (\ single_line\: :ref:`int`, multi_line\: :ref:`int`\ ) | - +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`draw_char`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, char\: :ref:`int`, font_size\: :ref:`int`, modulate\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`draw_char_outline`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, char\: :ref:`int`, font_size\: :ref:`int`, size\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_multiline_string`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_multiline_string_outline`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_string`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_string_outline`\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`find_variation`\ (\ variation_coordinates\: :ref:`Dictionary`, face_index\: :ref:`int` = 0, strength\: :ref:`float` = 0.0, transform\: :ref:`Transform2D` = Transform2D(1, 0, 0, 1, 0, 0), spacing_top\: :ref:`int` = 0, spacing_bottom\: :ref:`int` = 0, spacing_space\: :ref:`int` = 0, spacing_glyph\: :ref:`int` = 0, baseline_offset\: :ref:`float` = 0.0\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_ascent`\ (\ font_size\: :ref:`int` = 16\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_char_size`\ (\ char\: :ref:`int`, font_size\: :ref:`int`\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_descent`\ (\ font_size\: :ref:`int` = 16\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_face_count`\ (\ ) |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`\ (\ font_size\: :ref:`int` = 16\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_multiline_string_size`\ (\ text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`get_opentype_features`\ (\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`get_ot_name_strings`\ (\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`RID`\] | :ref:`get_rids`\ (\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_spacing`\ (\ spacing\: :ref:`SpacingType`\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_string_size`\ (\ text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`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`\ (\ font_size\: :ref:`int` = 16\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_underline_thickness`\ (\ font_size\: :ref:`int` = 16\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_char`\ (\ char\: :ref:`int`\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_language_supported`\ (\ language\: :ref:`String`\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_script_supported`\ (\ script\: :ref:`String`\ ) |const| | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_cache_capacity`\ (\ single_line\: :ref:`int`, multi_line\: :ref:`int`\ ) | + +-----------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -146,9 +146,9 @@ Method Descriptions .. rst-class:: classref-method -:ref:`float` **draw_char**\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, char\: :ref:`int`, font_size\: :ref:`int`, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +:ref:`float` **draw_char**\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, char\: :ref:`int`, font_size\: :ref:`int`, modulate\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw a single Unicode character ``char`` into a canvas item using the font, at a given position, with ``modulate`` color. ``pos`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis. +Draw a single Unicode character ``char`` into a canvas item using the font, at a given position, with ``modulate`` color. ``pos`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. \ **Note:** Do not use this function to draw strings character by character, use :ref:`draw_string()` or :ref:`TextLine` instead. @@ -160,9 +160,9 @@ Draw a single Unicode character ``char`` into a canvas item using the font, at a .. rst-class:: classref-method -:ref:`float` **draw_char_outline**\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, char\: :ref:`int`, font_size\: :ref:`int`, size\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +:ref:`float` **draw_char_outline**\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, char\: :ref:`int`, font_size\: :ref:`int`, size\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw a single Unicode character ``char`` outline into a canvas item using the font, at a given position, with ``modulate`` color and ``size`` outline size. ``pos`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis. +Draw a single Unicode character ``char`` outline into a canvas item using the font, at a given position, with ``modulate`` color and ``size`` outline size. ``pos`` specifies the baseline, not the top. To draw from the top, *ascent* must be added to the Y axis. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. \ **Note:** Do not use this function to draw strings character by character, use :ref:`draw_string()` or :ref:`TextLine` instead. @@ -174,9 +174,9 @@ Draw a single Unicode character ``char`` outline into a canvas item using the fo .. rst-class:: classref-method -|void| **draw_multiline_string**\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| :ref:`🔗` +|void| **draw_multiline_string**\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -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. +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. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. See also :ref:`CanvasItem.draw_multiline_string()`. @@ -188,9 +188,9 @@ See also :ref:`CanvasItem.draw_multiline_string()`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| :ref:`🔗` +|void| **draw_multiline_string_outline**\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, max_lines\: :ref:`int` = -1, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), brk_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -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. +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. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. See also :ref:`CanvasItem.draw_multiline_string_outline()`. @@ -202,9 +202,9 @@ See also :ref:`CanvasItem.draw_multiline_string_outline()`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| :ref:`🔗` +|void| **draw_string**\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -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. +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. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. See also :ref:`CanvasItem.draw_string()`. @@ -216,9 +216,9 @@ See also :ref:`CanvasItem.draw_string()`. .. rst-class:: classref-method -|void| **draw_string_outline**\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) |const| :ref:`🔗` +|void| **draw_string_outline**\ (\ canvas_item\: :ref:`RID`, pos\: :ref:`Vector2`, text\: :ref:`String`, alignment\: :ref:`HorizontalAlignment` = 0, width\: :ref:`float` = -1, font_size\: :ref:`int` = 16, size\: :ref:`int` = 1, modulate\: :ref:`Color` = Color(1, 1, 1, 1), justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3, direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0, oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -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. +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. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. See also :ref:`CanvasItem.draw_string_outline()`. diff --git a/classes/class_fontfile.rst b/classes/class_fontfile.rst index 556c65be6..db6648d0c 100644 --- a/classes/class_fontfile.rst +++ b/classes/class_fontfile.rst @@ -110,7 +110,7 @@ Properties +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ | :ref:`Dictionary` | :ref:`opentype_feature_overrides` | ``{}`` | +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ - | :ref:`float` | :ref:`oversampling` | ``0.0`` | + | :ref:`float` | :ref:`oversampling` | | +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ | :ref:`String` | :ref:`style_name` | ``""`` | +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ @@ -603,14 +603,16 @@ Font OpenType feature set override. .. rst-class:: classref-property -:ref:`float` **oversampling** = ``0.0`` :ref:`🔗` +:ref:`float` **oversampling** :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_oversampling**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_oversampling**\ (\ ) -Font oversampling factor. If set to ``0.0``, the global oversampling factor is used instead. Used by dynamic fonts only (MSDF fonts ignore oversampling). +**Deprecated:** Use the ``oversampling`` argument of the ``draw_*`` methods instead. + +Deprecated. This property does nothing. .. rst-class:: classref-item-separator diff --git a/classes/class_menubar.rst b/classes/class_menubar.rst index a05ecf7c7..62d804975 100644 --- a/classes/class_menubar.rst +++ b/classes/class_menubar.rst @@ -32,7 +32,7 @@ Properties +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ | :ref:`bool` | :ref:`flat` | ``false`` | +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ - | :ref:`FocusMode` | focus_mode | ``2`` (overrides :ref:`Control`) | + | :ref:`FocusMode` | focus_mode | ``3`` (overrides :ref:`Control`) | +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ | :ref:`String` | :ref:`language` | ``""`` | +--------------------------------------------------+----------------------------------------------------------------------+---------------------------------------------------------------------+ diff --git a/classes/class_navigationserver2d.rst b/classes/class_navigationserver2d.rst index f69f24a5f..da712445c 100644 --- a/classes/class_navigationserver2d.rst +++ b/classes/class_navigationserver2d.rst @@ -273,6 +273,8 @@ Methods +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`region_get_enter_cost`\ (\ region\: :ref:`RID`\ ) |const| | +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`region_get_iteration_id`\ (\ region\: :ref:`RID`\ ) |const| | + +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID` | :ref:`region_get_map`\ (\ region\: :ref:`RID`\ ) |const| | +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`region_get_navigation_layers`\ (\ region\: :ref:`RID`\ ) |const| | @@ -1793,6 +1795,20 @@ Returns the enter cost of this ``region``. ---- +.. _class_NavigationServer2D_method_region_get_iteration_id: + +.. rst-class:: classref-method + +:ref:`int` **region_get_iteration_id**\ (\ region\: :ref:`RID`\ ) |const| :ref:`🔗` + +Returns the current iteration ID of the navigation region. Every time the navigation region changes and synchronizes, the iteration ID increases. An iteration ID of ``0`` means the navigation region has never synchronized. + +\ **Note:** The iteration ID will wrap around to ``1`` after reaching its range limit. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer2D_method_region_get_map: .. rst-class:: classref-method diff --git a/classes/class_navigationserver3d.rst b/classes/class_navigationserver3d.rst index 6bc2da800..03b3afae8 100644 --- a/classes/class_navigationserver3d.rst +++ b/classes/class_navigationserver3d.rst @@ -311,6 +311,8 @@ Methods +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`float` | :ref:`region_get_enter_cost`\ (\ region\: :ref:`RID`\ ) |const| | +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`region_get_iteration_id`\ (\ region\: :ref:`RID`\ ) |const| | + +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`RID` | :ref:`region_get_map`\ (\ region\: :ref:`RID`\ ) |const| | +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`region_get_navigation_layers`\ (\ region\: :ref:`RID`\ ) |const| | @@ -2069,6 +2071,20 @@ Returns the enter cost of this ``region``. ---- +.. _class_NavigationServer3D_method_region_get_iteration_id: + +.. rst-class:: classref-method + +:ref:`int` **region_get_iteration_id**\ (\ region\: :ref:`RID`\ ) |const| :ref:`🔗` + +Returns the current iteration ID of the navigation region. Every time the navigation region changes and synchronizes, the iteration ID increases. An iteration ID of ``0`` means the navigation region has never synchronized. + +\ **Note:** The iteration ID will wrap around to ``1`` after reaching its range limit. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationServer3D_method_region_get_map: .. rst-class:: classref-method diff --git a/classes/class_object.rst b/classes/class_object.rst index 4e27301d3..e114e4170 100644 --- a/classes/class_object.rst +++ b/classes/class_object.rst @@ -970,6 +970,8 @@ A signal can only be connected once to the same :ref:`Callable`. \ **Note:** In GDScript, it is generally recommended to connect signals with :ref:`Signal.connect()` instead. +\ **Note:** This operation (and all other signal related operations) is thread-safe. + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_projectsettings.rst b/classes/class_projectsettings.rst index 5e3776698..0460b1916 100644 --- a/classes/class_projectsettings.rst +++ b/classes/class_projectsettings.rst @@ -13483,8 +13483,6 @@ Specify whether OpenXR should be configured for an HMD or a hand held device. If ``true`` and foveation is supported, will automatically adjust foveation level based on framerate up to the level set on :ref:`xr/openxr/foveation_level`. -\ **Note:** Only works on the Compatibility rendering method. - .. rst-class:: classref-item-separator ---- @@ -13497,7 +13495,7 @@ If ``true`` and foveation is supported, will automatically adjust foveation leve Applied foveation level if supported: 0 = off, 1 = low, 2 = medium, 3 = high. -\ **Note:** Only works on the Compatibility rendering method. On platforms other than Android, if :ref:`rendering/anti_aliasing/quality/msaa_3d` is enabled, this feature will be disabled. +\ **Note:** On platforms other than Android, if :ref:`rendering/anti_aliasing/quality/msaa_3d` is enabled, this feature will be disabled. .. rst-class:: classref-item-separator diff --git a/classes/class_randomnumbergenerator.rst b/classes/class_randomnumbergenerator.rst index c3d170009..0cf2ed423 100644 --- a/classes/class_randomnumbergenerator.rst +++ b/classes/class_randomnumbergenerator.rst @@ -138,7 +138,7 @@ The current state of the random number generator. Save and restore this property \ **Note:** Do not set state to arbitrary values, since the random number generator requires the state to have certain qualities to behave properly. It should only be set to values that came from the state property itself. To initialize the random number generator with arbitrary input, use :ref:`seed` instead. -\ **Note:** The default value of this property is pseudo-random, and changes when calling :ref:`randomize()`. The ``0`` value documented here is a placeholder, and not the actual default seed. +\ **Note:** The default value of this property is pseudo-random, and changes when calling :ref:`randomize()`. The ``0`` value documented here is a placeholder, and not the actual default state. .. rst-class:: classref-section-separator diff --git a/classes/class_range.rst b/classes/class_range.rst index 377dd4f0f..01af8415f 100644 --- a/classes/class_range.rst +++ b/classes/class_range.rst @@ -158,7 +158,7 @@ If ``true``, :ref:`value` may be less than :ref:`min - |void| **set_exp_ratio**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_ratio_exp**\ (\ ) -If ``true``, and :ref:`min_value` is greater than 0, :ref:`value` will be represented exponentially rather than linearly. +If ``true``, and :ref:`min_value` is greater or equal to ``0``, :ref:`value` will be represented exponentially rather than linearly. .. rst-class:: classref-item-separator diff --git a/classes/class_resourceimporterdynamicfont.rst b/classes/class_resourceimporterdynamicfont.rst index 8cd595495..0f3fa3d6c 100644 --- a/classes/class_resourceimporterdynamicfont.rst +++ b/classes/class_resourceimporterdynamicfont.rst @@ -71,8 +71,6 @@ Properties +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`Dictionary` | :ref:`opentype_features` | ``{}`` | +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ - | :ref:`float` | :ref:`oversampling` | ``0.0`` | - +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`Array` | :ref:`preload` | ``[]`` | +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`Dictionary` | :ref:`script_support` | ``{}`` | @@ -287,18 +285,6 @@ The OpenType features to enable, disable or set a value for this font. This can ---- -.. _class_ResourceImporterDynamicFont_property_oversampling: - -.. rst-class:: classref-property - -:ref:`float` **oversampling** = ``0.0`` :ref:`🔗` - -If set to a value greater than ``0.0``, overrides the oversampling factor for the font. This can be used to render the font at a higher or lower resolution than intended without affecting its physical size. In most cases, this should be left at ``0.0``. - -.. rst-class:: classref-item-separator - ----- - .. _class_ResourceImporterDynamicFont_property_preload: .. rst-class:: classref-property diff --git a/classes/class_resourceloader.rst b/classes/class_resourceloader.rst index 16ef7cc4e..65f0c06a3 100644 --- a/classes/class_resourceloader.rst +++ b/classes/class_resourceloader.rst @@ -286,7 +286,16 @@ Once a resource has been loaded by the engine, it is cached in memory for faster :ref:`PackedStringArray` **list_directory**\ (\ directory_path\: :ref:`String`\ ) :ref:`🔗` -Lists a directory (as example: "res://assets/enemies"), returning all resources contained within. The resource files are the original file names as visible in the editor before exporting. +Lists a directory, returning all resources and subdirectories contained within. The resource files have the original file names as visible in the editor before exporting. The directories have ``"/"`` appended. + +:: + + # Prints ["extra_data/", "model.gltf", "model.tscn", "model_slime.png"] + print(ResourceLoader.list_directory("res://assets/enemies/slime")) + +\ **Note:** The order of files and directories returned by this method is not deterministic, and can vary between operating systems. + +\ **Note:** To normally traverse the filesystem, see :ref:`DirAccess`. .. rst-class:: classref-item-separator diff --git a/classes/class_systemfont.rst b/classes/class_systemfont.rst index 7fc17d15f..4a0786c52 100644 --- a/classes/class_systemfont.rst +++ b/classes/class_systemfont.rst @@ -68,7 +68,7 @@ Properties +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`bool` | :ref:`multichannel_signed_distance_field` | ``false`` | +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ - | :ref:`float` | :ref:`oversampling` | ``0.0`` | + | :ref:`float` | :ref:`oversampling` | | +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`SubpixelPositioning` | :ref:`subpixel_positioning` | ``1`` | +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ @@ -343,14 +343,16 @@ If set to ``true``, glyphs of all sizes are rendered using single multichannel s .. rst-class:: classref-property -:ref:`float` **oversampling** = ``0.0`` :ref:`🔗` +:ref:`float` **oversampling** :ref:`🔗` .. rst-class:: classref-property-setget - |void| **set_oversampling**\ (\ value\: :ref:`float`\ ) - :ref:`float` **get_oversampling**\ (\ ) -Font oversampling factor, if set to ``0.0`` global oversampling factor is used instead. +**Deprecated:** Use the ``oversampling`` argument of the ``draw_*`` methods instead. + +Deprecated. This property does nothing. .. rst-class:: classref-item-separator diff --git a/classes/class_textline.rst b/classes/class_textline.rst index 0c2c51565..cace5b23f 100644 --- a/classes/class_textline.rst +++ b/classes/class_textline.rst @@ -64,9 +64,9 @@ Methods +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear`\ (\ ) | +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | + | |void| | :ref:`draw`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | + | |void| | :ref:`draw_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Direction` | :ref:`get_inferred_direction`\ (\ ) |const| | +---------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -304,9 +304,9 @@ Clears text line (removes text and inline objects). .. rst-class:: classref-method -|void| **draw**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **draw**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw text into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. +Draw text into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -316,9 +316,9 @@ Draw text into a canvas item at a given position, with ``color``. ``pos`` specif .. rst-class:: classref-method -|void| **draw_outline**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **draw_outline**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw text into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. +Draw text into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator diff --git a/classes/class_textparagraph.rst b/classes/class_textparagraph.rst index a0bd83263..be33ce992 100644 --- a/classes/class_textparagraph.rst +++ b/classes/class_textparagraph.rst @@ -65,75 +65,75 @@ Methods .. table:: :widths: auto - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`add_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, length\: :ref:`int` = 1, baseline\: :ref:`float` = 0.0\ ) | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`add_string`\ (\ text\: :ref:`String`, font\: :ref:`Font`, font_size\: :ref:`int`, language\: :ref:`String` = "", meta\: :ref:`Variant` = null\ ) | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear`\ (\ ) | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear_dropcap`\ (\ ) | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_dropcap`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_dropcap_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_line`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_line_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_dropcap_lines`\ (\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_dropcap_rid`\ (\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_dropcap_size`\ (\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Direction` | :ref:`get_inferred_direction`\ (\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_ascent`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_line_count`\ (\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_descent`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`get_line_object_rect`\ (\ line\: :ref:`int`, key\: :ref:`Variant`\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array` | :ref:`get_line_objects`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`get_line_range`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_line_rid`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_line_size`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_underline_position`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_underline_thickness`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`get_line_width`\ (\ line\: :ref:`int`\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_non_wrapped_size`\ (\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`get_range`\ (\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_rid`\ (\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_size`\ (\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`hit_test`\ (\ coords\: :ref:`Vector2`\ ) |const| | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`resize_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, baseline\: :ref:`float` = 0.0\ ) | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_bidi_override`\ (\ override\: :ref:`Array`\ ) | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`set_dropcap`\ (\ text\: :ref:`String`, font\: :ref:`Font`, font_size\: :ref:`int`, dropcap_margins\: :ref:`Rect2` = Rect2(0, 0, 0, 0), language\: :ref:`String` = ""\ ) | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`tab_align`\ (\ tab_stops\: :ref:`PackedFloat32Array`\ ) | - +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`add_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, length\: :ref:`int` = 1, baseline\: :ref:`float` = 0.0\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`add_string`\ (\ text\: :ref:`String`, font\: :ref:`Font`, font_size\: :ref:`int`, language\: :ref:`String` = "", meta\: :ref:`Variant` = null\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear`\ (\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear_dropcap`\ (\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_dropcap`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_dropcap_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_line`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_line_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_outline`\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_dropcap_lines`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_dropcap_rid`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_dropcap_size`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`get_inferred_direction`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_ascent`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_line_count`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_descent`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`get_line_object_rect`\ (\ line\: :ref:`int`, key\: :ref:`Variant`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array` | :ref:`get_line_objects`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`get_line_range`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_line_rid`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_line_size`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_underline_position`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_underline_thickness`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_line_width`\ (\ line\: :ref:`int`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_non_wrapped_size`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`get_range`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_rid`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_size`\ (\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`hit_test`\ (\ coords\: :ref:`Vector2`\ ) |const| | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`resize_object`\ (\ key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, baseline\: :ref:`float` = 0.0\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_bidi_override`\ (\ override\: :ref:`Array`\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`set_dropcap`\ (\ text\: :ref:`String`, font\: :ref:`Font`, font_size\: :ref:`int`, dropcap_margins\: :ref:`Rect2` = Rect2(0, 0, 0, 0), language\: :ref:`String` = ""\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`tab_align`\ (\ tab_stops\: :ref:`PackedFloat32Array`\ ) | + +---------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -422,9 +422,9 @@ Removes dropcap. .. rst-class:: classref-method -|void| **draw**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **draw**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw all lines of the text and drop cap into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. +Draw all lines of the text and drop cap into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -434,9 +434,9 @@ Draw all lines of the text and drop cap into a canvas item at a given position, .. rst-class:: classref-method -|void| **draw_dropcap**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **draw_dropcap**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw drop cap into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. +Draw drop cap into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -446,9 +446,9 @@ Draw drop cap into a canvas item at a given position, with ``color``. ``pos`` sp .. rst-class:: classref-method -|void| **draw_dropcap_outline**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **draw_dropcap_outline**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw drop cap outline into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. +Draw drop cap outline into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -458,9 +458,9 @@ Draw drop cap outline into a canvas item at a given position, with ``color``. `` .. rst-class:: classref-method -|void| **draw_line**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **draw_line**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw single line of text into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. +Draw single line of text into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -470,9 +470,9 @@ Draw single line of text into a canvas item at a given position, with ``color``. .. rst-class:: classref-method -|void| **draw_line_outline**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **draw_line_outline**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, line\: :ref:`int`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw outline of the single line of text into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. +Draw outline of the single line of text into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -482,9 +482,9 @@ Draw outline of the single line of text into a canvas item at a given position, .. rst-class:: classref-method -|void| **draw_outline**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **draw_outline**\ (\ canvas\: :ref:`RID`, pos\: :ref:`Vector2`, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), dc_color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw outlines of all lines of the text and drop cap into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. +Draw outlines of all lines of the text and drop cap into a canvas item at a given position, with ``color``. ``pos`` specifies the top left corner of the bounding box. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator diff --git a/classes/class_textserver.rst b/classes/class_textserver.rst index cabb0a4dd..4e5cc8455 100644 --- a/classes/class_textserver.rst +++ b/classes/class_textserver.rst @@ -48,469 +48,473 @@ Methods .. table:: :widths: auto - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`create_font`\ (\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`create_font_linked_variation`\ (\ font_rid\: :ref:`RID`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`create_shaped_text`\ (\ direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`draw_hex_code_box`\ (\ canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_clear_glyphs`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_clear_kerning_map`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_clear_size_cache`\ (\ font_rid\: :ref:`RID`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_clear_textures`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_draw_glyph`\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_draw_glyph_outline`\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, outline_size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`FontAntialiasing` | :ref:`font_get_antialiasing`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`font_get_ascent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`font_get_baseline_offset`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_char_from_glyph_index`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`font_get_descent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_get_disable_embedded_bitmaps`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`font_get_embolden`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_face_count`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_face_index`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_fixed_size`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`FixedSizeScaleMode` | :ref:`font_get_fixed_size_scale_mode`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_get_generate_mipmaps`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`font_get_global_oversampling`\ (\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`font_get_glyph_advance`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`font_get_glyph_contours`\ (\ font\: :ref:`RID`, size\: :ref:`int`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_glyph_index`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, char\: :ref:`int`, variation_selector\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`font_get_glyph_list`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`font_get_glyph_offset`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`font_get_glyph_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_glyph_texture_idx`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`font_get_glyph_texture_rid`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`font_get_glyph_texture_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`font_get_glyph_uv_rect`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Hinting` | :ref:`font_get_hinting`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_get_keep_rounding_remainders`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`font_get_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Vector2i`\] | :ref:`font_get_kerning_list`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_get_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`font_get_language_support_overrides`\ (\ font_rid\: :ref:`RID`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_msdf_pixel_range`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_msdf_size`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`font_get_name`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`font_get_opentype_feature_overrides`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`font_get_ot_name_strings`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`font_get_oversampling`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`font_get_scale`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_get_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`font_get_script_support_overrides`\ (\ font_rid\: :ref:`RID`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Vector2i`\] | :ref:`font_get_size_cache_list`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_spacing`\ (\ font_rid\: :ref:`RID`, spacing\: :ref:`SpacingType`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_stretch`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |bitfield|\[:ref:`FontStyle`\] | :ref:`font_get_style`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`font_get_style_name`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`SubpixelPositioning` | :ref:`font_get_subpixel_positioning`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`font_get_supported_chars`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`font_get_supported_glyphs`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_texture_count`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Image` | :ref:`font_get_texture_image`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`font_get_texture_offsets`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`font_get_transform`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`font_get_underline_position`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`font_get_underline_thickness`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`font_get_variation_coordinates`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`font_get_weight`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_has_char`\ (\ font_rid\: :ref:`RID`, char\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_is_allow_system_fallback`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_is_force_autohinter`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_is_language_supported`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_is_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_is_multichannel_signed_distance_field`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`font_is_script_supported`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_remove_glyph`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_remove_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_remove_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_remove_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_remove_size_cache`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_remove_texture`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_render_glyph`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, index\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_render_range`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, start\: :ref:`int`, end\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_allow_system_fallback`\ (\ font_rid\: :ref:`RID`, allow_system_fallback\: :ref:`bool`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_antialiasing`\ (\ font_rid\: :ref:`RID`, antialiasing\: :ref:`FontAntialiasing`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_ascent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, ascent\: :ref:`float`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_baseline_offset`\ (\ font_rid\: :ref:`RID`, baseline_offset\: :ref:`float`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_data`\ (\ font_rid\: :ref:`RID`, data\: :ref:`PackedByteArray`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_descent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, descent\: :ref:`float`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_disable_embedded_bitmaps`\ (\ font_rid\: :ref:`RID`, disable_embedded_bitmaps\: :ref:`bool`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_embolden`\ (\ font_rid\: :ref:`RID`, strength\: :ref:`float`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_face_index`\ (\ font_rid\: :ref:`RID`, face_index\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_fixed_size`\ (\ font_rid\: :ref:`RID`, fixed_size\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_fixed_size_scale_mode`\ (\ font_rid\: :ref:`RID`, fixed_size_scale_mode\: :ref:`FixedSizeScaleMode`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_force_autohinter`\ (\ font_rid\: :ref:`RID`, force_autohinter\: :ref:`bool`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_generate_mipmaps`\ (\ font_rid\: :ref:`RID`, generate_mipmaps\: :ref:`bool`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_global_oversampling`\ (\ oversampling\: :ref:`float`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_glyph_advance`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph\: :ref:`int`, advance\: :ref:`Vector2`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_glyph_offset`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, offset\: :ref:`Vector2`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_glyph_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, gl_size\: :ref:`Vector2`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_glyph_texture_idx`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, texture_idx\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_glyph_uv_rect`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, uv_rect\: :ref:`Rect2`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_hinting`\ (\ font_rid\: :ref:`RID`, hinting\: :ref:`Hinting`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_keep_rounding_remainders`\ (\ font_rid\: :ref:`RID`, keep_rounding_remainders\: :ref:`bool`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`, kerning\: :ref:`Vector2`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`, supported\: :ref:`bool`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`, force_autohinter\: :ref:`bool`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_msdf_pixel_range`\ (\ font_rid\: :ref:`RID`, msdf_pixel_range\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_msdf_size`\ (\ font_rid\: :ref:`RID`, msdf_size\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_multichannel_signed_distance_field`\ (\ font_rid\: :ref:`RID`, msdf\: :ref:`bool`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_name`\ (\ font_rid\: :ref:`RID`, name\: :ref:`String`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_opentype_feature_overrides`\ (\ font_rid\: :ref:`RID`, overrides\: :ref:`Dictionary`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_oversampling`\ (\ font_rid\: :ref:`RID`, oversampling\: :ref:`float`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_scale`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, scale\: :ref:`float`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`, supported\: :ref:`bool`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_spacing`\ (\ font_rid\: :ref:`RID`, spacing\: :ref:`SpacingType`, value\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_stretch`\ (\ font_rid\: :ref:`RID`, weight\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_style`\ (\ font_rid\: :ref:`RID`, style\: |bitfield|\[:ref:`FontStyle`\]\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_style_name`\ (\ font_rid\: :ref:`RID`, name\: :ref:`String`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_subpixel_positioning`\ (\ font_rid\: :ref:`RID`, subpixel_positioning\: :ref:`SubpixelPositioning`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_texture_image`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`, image\: :ref:`Image`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_texture_offsets`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`, offset\: :ref:`PackedInt32Array`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_transform`\ (\ font_rid\: :ref:`RID`, transform\: :ref:`Transform2D`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_underline_position`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, underline_position\: :ref:`float`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_underline_thickness`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, underline_thickness\: :ref:`float`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_variation_coordinates`\ (\ font_rid\: :ref:`RID`, variation_coordinates\: :ref:`Dictionary`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`font_set_weight`\ (\ font_rid\: :ref:`RID`, weight\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`font_supported_feature_list`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`font_supported_variation_list`\ (\ font_rid\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`format_number`\ (\ number\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`free_rid`\ (\ rid\: :ref:`RID`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`get_features`\ (\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`get_hex_code_box_size`\ (\ size\: :ref:`int`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_name`\ (\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedByteArray` | :ref:`get_support_data`\ (\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_support_data_filename`\ (\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`get_support_data_info`\ (\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has`\ (\ rid\: :ref:`RID`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_feature`\ (\ feature\: :ref:`Feature`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`is_confusable`\ (\ string\: :ref:`String`, dict\: :ref:`PackedStringArray`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_locale_right_to_left`\ (\ locale\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_valid_identifier`\ (\ string\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_valid_letter`\ (\ unicode\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`load_support_data`\ (\ filename\: :ref:`String`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`name_to_tag`\ (\ name\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`parse_number`\ (\ number\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Vector3i`\] | :ref:`parse_structured_text`\ (\ parser_type\: :ref:`StructuredTextParser`, args\: :ref:`Array`, text\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`percent_sign`\ (\ language\: :ref:`String` = ""\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`save_support_data`\ (\ filename\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_get_run_count`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Direction` | :ref:`shaped_get_run_direction`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`shaped_get_run_font_rid`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_get_run_font_size`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`shaped_get_run_language`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`shaped_get_run_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`shaped_get_run_range`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`shaped_get_run_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_get_span_count`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`shaped_get_span_embedded_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`shaped_get_span_meta`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`shaped_get_span_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`shaped_get_span_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`shaped_get_text`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_set_span_update_font`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary` = {}\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shaped_text_add_object`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, length\: :ref:`int` = 1, baseline\: :ref:`float` = 0.0\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shaped_text_add_string`\ (\ shaped\: :ref:`RID`, text\: :ref:`String`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary` = {}, language\: :ref:`String` = "", meta\: :ref:`Variant` = null\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_clear`\ (\ rid\: :ref:`RID`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_closest_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_draw`\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float` = -1, clip_r\: :ref:`float` = -1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_draw_outline`\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float` = -1, clip_r\: :ref:`float` = -1, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`shaped_text_fit_to_width`\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`shaped_text_get_ascent`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`shaped_text_get_carets`\ (\ shaped\: :ref:`RID`, position\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`shaped_text_get_character_breaks`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_get_custom_ellipsis`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`shaped_text_get_custom_punctuation`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`shaped_text_get_descent`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Direction` | :ref:`shaped_text_get_direction`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Direction` | :ref:`shaped_text_get_dominant_direction_in_range`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, end\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_get_ellipsis_glyph_count`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`shaped_text_get_ellipsis_glyphs`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_get_ellipsis_pos`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_get_glyph_count`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`shaped_text_get_glyphs`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`shaped_text_get_grapheme_bounds`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Direction` | :ref:`shaped_text_get_inferred_direction`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`shaped_text_get_line_breaks`\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, start\: :ref:`int` = 0, break_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`shaped_text_get_line_breaks_adv`\ (\ shaped\: :ref:`RID`, width\: :ref:`PackedFloat32Array`, start\: :ref:`int` = 0, once\: :ref:`bool` = true, break_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_get_object_glyph`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`shaped_text_get_object_range`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`shaped_text_get_object_rect`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array` | :ref:`shaped_text_get_objects`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Orientation` | :ref:`shaped_text_get_orientation`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`shaped_text_get_parent`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shaped_text_get_preserve_control`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shaped_text_get_preserve_invalid`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`shaped_text_get_range`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedVector2Array` | :ref:`shaped_text_get_selection`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, end\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`shaped_text_get_size`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_get_spacing`\ (\ shaped\: :ref:`RID`, spacing\: :ref:`SpacingType`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_get_trim_pos`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`shaped_text_get_underline_position`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`shaped_text_get_underline_thickness`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`shaped_text_get_width`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`shaped_text_get_word_breaks`\ (\ shaped\: :ref:`RID`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag`\] = 264, skip_grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag`\] = 4\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shaped_text_has_visible_chars`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_hit_test_grapheme`\ (\ shaped\: :ref:`RID`, coords\: :ref:`float`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_hit_test_position`\ (\ shaped\: :ref:`RID`, coords\: :ref:`float`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shaped_text_is_ready`\ (\ shaped\: :ref:`RID`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_next_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_next_grapheme_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_overrun_trim_to_width`\ (\ shaped\: :ref:`RID`, width\: :ref:`float` = 0, overrun_trim_flags\: |bitfield|\[:ref:`TextOverrunFlag`\] = 0\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_prev_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`shaped_text_prev_grapheme_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shaped_text_resize_object`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, baseline\: :ref:`float` = 0.0\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_set_bidi_override`\ (\ shaped\: :ref:`RID`, override\: :ref:`Array`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_set_custom_ellipsis`\ (\ shaped\: :ref:`RID`, char\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_set_custom_punctuation`\ (\ shaped\: :ref:`RID`, punct\: :ref:`String`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_set_direction`\ (\ shaped\: :ref:`RID`, direction\: :ref:`Direction` = 0\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_set_orientation`\ (\ shaped\: :ref:`RID`, orientation\: :ref:`Orientation` = 0\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_set_preserve_control`\ (\ shaped\: :ref:`RID`, enabled\: :ref:`bool`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_set_preserve_invalid`\ (\ shaped\: :ref:`RID`, enabled\: :ref:`bool`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`shaped_text_set_spacing`\ (\ shaped\: :ref:`RID`, spacing\: :ref:`SpacingType`, value\: :ref:`int`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`shaped_text_shape`\ (\ shaped\: :ref:`RID`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`shaped_text_sort_logical`\ (\ shaped\: :ref:`RID`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`shaped_text_substr`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, length\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`shaped_text_tab_align`\ (\ shaped\: :ref:`RID`, tab_stops\: :ref:`PackedFloat32Array`\ ) | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`spoof_check`\ (\ string\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`string_get_character_breaks`\ (\ string\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`string_get_word_breaks`\ (\ string\: :ref:`String`, language\: :ref:`String` = "", chars_per_line\: :ref:`int` = 0\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`string_to_lower`\ (\ string\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`string_to_title`\ (\ string\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`string_to_upper`\ (\ string\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`strip_diacritics`\ (\ string\: :ref:`String`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`tag_to_name`\ (\ tag\: :ref:`int`\ ) |const| | - +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`create_font`\ (\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`create_font_linked_variation`\ (\ font_rid\: :ref:`RID`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`create_shaped_text`\ (\ direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`draw_hex_code_box`\ (\ canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_clear_glyphs`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_clear_kerning_map`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_clear_size_cache`\ (\ font_rid\: :ref:`RID`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_clear_system_fallback_cache`\ (\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_clear_textures`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_draw_glyph`\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_draw_glyph_outline`\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, outline_size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`FontAntialiasing` | :ref:`font_get_antialiasing`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`font_get_ascent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`font_get_baseline_offset`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_char_from_glyph_index`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`font_get_descent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_get_disable_embedded_bitmaps`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`font_get_embolden`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_face_count`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_face_index`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_fixed_size`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`FixedSizeScaleMode` | :ref:`font_get_fixed_size_scale_mode`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_get_generate_mipmaps`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`font_get_global_oversampling`\ (\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`font_get_glyph_advance`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`font_get_glyph_contours`\ (\ font\: :ref:`RID`, size\: :ref:`int`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_glyph_index`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, char\: :ref:`int`, variation_selector\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`font_get_glyph_list`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`font_get_glyph_offset`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`font_get_glyph_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_glyph_texture_idx`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`font_get_glyph_texture_rid`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`font_get_glyph_texture_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`font_get_glyph_uv_rect`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Hinting` | :ref:`font_get_hinting`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_get_keep_rounding_remainders`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`font_get_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Vector2i`\] | :ref:`font_get_kerning_list`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_get_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`font_get_language_support_overrides`\ (\ font_rid\: :ref:`RID`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_msdf_pixel_range`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_msdf_size`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`font_get_name`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`font_get_opentype_feature_overrides`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`font_get_ot_name_strings`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`font_get_oversampling`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`font_get_scale`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_get_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`font_get_script_support_overrides`\ (\ font_rid\: :ref:`RID`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`font_get_size_cache_info`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Vector2i`\] | :ref:`font_get_size_cache_list`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_spacing`\ (\ font_rid\: :ref:`RID`, spacing\: :ref:`SpacingType`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_stretch`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |bitfield|\[:ref:`FontStyle`\] | :ref:`font_get_style`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`font_get_style_name`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`SubpixelPositioning` | :ref:`font_get_subpixel_positioning`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`font_get_supported_chars`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`font_get_supported_glyphs`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_texture_count`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Image` | :ref:`font_get_texture_image`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`font_get_texture_offsets`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`font_get_transform`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`font_get_underline_position`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`font_get_underline_thickness`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`font_get_variation_coordinates`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`font_get_weight`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_has_char`\ (\ font_rid\: :ref:`RID`, char\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_is_allow_system_fallback`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_is_force_autohinter`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_is_language_supported`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_is_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_is_multichannel_signed_distance_field`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`font_is_script_supported`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_remove_glyph`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_remove_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_remove_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_remove_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_remove_size_cache`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_remove_texture`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_render_glyph`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, index\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_render_range`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, start\: :ref:`int`, end\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_allow_system_fallback`\ (\ font_rid\: :ref:`RID`, allow_system_fallback\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_antialiasing`\ (\ font_rid\: :ref:`RID`, antialiasing\: :ref:`FontAntialiasing`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_ascent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, ascent\: :ref:`float`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_baseline_offset`\ (\ font_rid\: :ref:`RID`, baseline_offset\: :ref:`float`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_data`\ (\ font_rid\: :ref:`RID`, data\: :ref:`PackedByteArray`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_descent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, descent\: :ref:`float`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_disable_embedded_bitmaps`\ (\ font_rid\: :ref:`RID`, disable_embedded_bitmaps\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_embolden`\ (\ font_rid\: :ref:`RID`, strength\: :ref:`float`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_face_index`\ (\ font_rid\: :ref:`RID`, face_index\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_fixed_size`\ (\ font_rid\: :ref:`RID`, fixed_size\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_fixed_size_scale_mode`\ (\ font_rid\: :ref:`RID`, fixed_size_scale_mode\: :ref:`FixedSizeScaleMode`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_force_autohinter`\ (\ font_rid\: :ref:`RID`, force_autohinter\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_generate_mipmaps`\ (\ font_rid\: :ref:`RID`, generate_mipmaps\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_global_oversampling`\ (\ oversampling\: :ref:`float`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_glyph_advance`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph\: :ref:`int`, advance\: :ref:`Vector2`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_glyph_offset`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, offset\: :ref:`Vector2`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_glyph_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, gl_size\: :ref:`Vector2`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_glyph_texture_idx`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, texture_idx\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_glyph_uv_rect`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, uv_rect\: :ref:`Rect2`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_hinting`\ (\ font_rid\: :ref:`RID`, hinting\: :ref:`Hinting`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_keep_rounding_remainders`\ (\ font_rid\: :ref:`RID`, keep_rounding_remainders\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`, kerning\: :ref:`Vector2`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`, supported\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`, force_autohinter\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_msdf_pixel_range`\ (\ font_rid\: :ref:`RID`, msdf_pixel_range\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_msdf_size`\ (\ font_rid\: :ref:`RID`, msdf_size\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_multichannel_signed_distance_field`\ (\ font_rid\: :ref:`RID`, msdf\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_name`\ (\ font_rid\: :ref:`RID`, name\: :ref:`String`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_opentype_feature_overrides`\ (\ font_rid\: :ref:`RID`, overrides\: :ref:`Dictionary`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_oversampling`\ (\ font_rid\: :ref:`RID`, oversampling\: :ref:`float`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_scale`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, scale\: :ref:`float`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`, supported\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_spacing`\ (\ font_rid\: :ref:`RID`, spacing\: :ref:`SpacingType`, value\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_stretch`\ (\ font_rid\: :ref:`RID`, weight\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_style`\ (\ font_rid\: :ref:`RID`, style\: |bitfield|\[:ref:`FontStyle`\]\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_style_name`\ (\ font_rid\: :ref:`RID`, name\: :ref:`String`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_subpixel_positioning`\ (\ font_rid\: :ref:`RID`, subpixel_positioning\: :ref:`SubpixelPositioning`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_texture_image`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`, image\: :ref:`Image`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_texture_offsets`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`, offset\: :ref:`PackedInt32Array`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_transform`\ (\ font_rid\: :ref:`RID`, transform\: :ref:`Transform2D`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_underline_position`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, underline_position\: :ref:`float`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_underline_thickness`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, underline_thickness\: :ref:`float`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_variation_coordinates`\ (\ font_rid\: :ref:`RID`, variation_coordinates\: :ref:`Dictionary`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`font_set_weight`\ (\ font_rid\: :ref:`RID`, weight\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`font_supported_feature_list`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`font_supported_variation_list`\ (\ font_rid\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`format_number`\ (\ number\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`free_rid`\ (\ rid\: :ref:`RID`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_features`\ (\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`get_hex_code_box_size`\ (\ size\: :ref:`int`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_name`\ (\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedByteArray` | :ref:`get_support_data`\ (\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_support_data_filename`\ (\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`get_support_data_info`\ (\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has`\ (\ rid\: :ref:`RID`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_feature`\ (\ feature\: :ref:`Feature`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`is_confusable`\ (\ string\: :ref:`String`, dict\: :ref:`PackedStringArray`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_locale_right_to_left`\ (\ locale\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_valid_identifier`\ (\ string\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_valid_letter`\ (\ unicode\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`load_support_data`\ (\ filename\: :ref:`String`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`name_to_tag`\ (\ name\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`parse_number`\ (\ number\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Vector3i`\] | :ref:`parse_structured_text`\ (\ parser_type\: :ref:`StructuredTextParser`, args\: :ref:`Array`, text\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`percent_sign`\ (\ language\: :ref:`String` = ""\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`save_support_data`\ (\ filename\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_get_run_count`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`shaped_get_run_direction`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`shaped_get_run_font_rid`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_get_run_font_size`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`shaped_get_run_language`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`shaped_get_run_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`shaped_get_run_range`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`shaped_get_run_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_get_span_count`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`shaped_get_span_embedded_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`shaped_get_span_meta`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`shaped_get_span_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`shaped_get_span_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`shaped_get_text`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_set_span_update_font`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary` = {}\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shaped_text_add_object`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, length\: :ref:`int` = 1, baseline\: :ref:`float` = 0.0\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shaped_text_add_string`\ (\ shaped\: :ref:`RID`, text\: :ref:`String`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary` = {}, language\: :ref:`String` = "", meta\: :ref:`Variant` = null\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_clear`\ (\ rid\: :ref:`RID`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_closest_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_draw`\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float` = -1, clip_r\: :ref:`float` = -1, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_draw_outline`\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float` = -1, clip_r\: :ref:`float` = -1, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`shaped_text_fit_to_width`\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\] = 3\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`shaped_text_get_ascent`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`shaped_text_get_carets`\ (\ shaped\: :ref:`RID`, position\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`shaped_text_get_character_breaks`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_get_custom_ellipsis`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`shaped_text_get_custom_punctuation`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`shaped_text_get_descent`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`shaped_text_get_direction`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`shaped_text_get_dominant_direction_in_range`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, end\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_get_ellipsis_glyph_count`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`shaped_text_get_ellipsis_glyphs`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_get_ellipsis_pos`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_get_glyph_count`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`shaped_text_get_glyphs`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`shaped_text_get_grapheme_bounds`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`shaped_text_get_inferred_direction`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`shaped_text_get_line_breaks`\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, start\: :ref:`int` = 0, break_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`shaped_text_get_line_breaks_adv`\ (\ shaped\: :ref:`RID`, width\: :ref:`PackedFloat32Array`, start\: :ref:`int` = 0, once\: :ref:`bool` = true, break_flags\: |bitfield|\[:ref:`LineBreakFlag`\] = 3\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_get_object_glyph`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`shaped_text_get_object_range`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`shaped_text_get_object_rect`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array` | :ref:`shaped_text_get_objects`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Orientation` | :ref:`shaped_text_get_orientation`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`shaped_text_get_parent`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shaped_text_get_preserve_control`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shaped_text_get_preserve_invalid`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`shaped_text_get_range`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedVector2Array` | :ref:`shaped_text_get_selection`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, end\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`shaped_text_get_size`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_get_spacing`\ (\ shaped\: :ref:`RID`, spacing\: :ref:`SpacingType`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_get_trim_pos`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`shaped_text_get_underline_position`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`shaped_text_get_underline_thickness`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`shaped_text_get_width`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`shaped_text_get_word_breaks`\ (\ shaped\: :ref:`RID`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag`\] = 264, skip_grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag`\] = 4\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shaped_text_has_visible_chars`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_hit_test_grapheme`\ (\ shaped\: :ref:`RID`, coords\: :ref:`float`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_hit_test_position`\ (\ shaped\: :ref:`RID`, coords\: :ref:`float`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shaped_text_is_ready`\ (\ shaped\: :ref:`RID`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_next_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_next_grapheme_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_overrun_trim_to_width`\ (\ shaped\: :ref:`RID`, width\: :ref:`float` = 0, overrun_trim_flags\: |bitfield|\[:ref:`TextOverrunFlag`\] = 0\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_prev_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`shaped_text_prev_grapheme_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shaped_text_resize_object`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment` = 5, baseline\: :ref:`float` = 0.0\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_set_bidi_override`\ (\ shaped\: :ref:`RID`, override\: :ref:`Array`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_set_custom_ellipsis`\ (\ shaped\: :ref:`RID`, char\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_set_custom_punctuation`\ (\ shaped\: :ref:`RID`, punct\: :ref:`String`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_set_direction`\ (\ shaped\: :ref:`RID`, direction\: :ref:`Direction` = 0\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_set_orientation`\ (\ shaped\: :ref:`RID`, orientation\: :ref:`Orientation` = 0\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_set_preserve_control`\ (\ shaped\: :ref:`RID`, enabled\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_set_preserve_invalid`\ (\ shaped\: :ref:`RID`, enabled\: :ref:`bool`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`shaped_text_set_spacing`\ (\ shaped\: :ref:`RID`, spacing\: :ref:`SpacingType`, value\: :ref:`int`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`shaped_text_shape`\ (\ shaped\: :ref:`RID`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`shaped_text_sort_logical`\ (\ shaped\: :ref:`RID`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`shaped_text_substr`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, length\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`shaped_text_tab_align`\ (\ shaped\: :ref:`RID`, tab_stops\: :ref:`PackedFloat32Array`\ ) | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`spoof_check`\ (\ string\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`string_get_character_breaks`\ (\ string\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`string_get_word_breaks`\ (\ string\: :ref:`String`, language\: :ref:`String` = "", chars_per_line\: :ref:`int` = 0\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`string_to_lower`\ (\ string\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`string_to_title`\ (\ string\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`string_to_upper`\ (\ string\: :ref:`String`, language\: :ref:`String` = ""\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`strip_diacritics`\ (\ string\: :ref:`String`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`tag_to_name`\ (\ tag\: :ref:`int`\ ) |const| | + +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -1740,6 +1744,18 @@ Removes all font sizes from the cache entry. ---- +.. _class_TextServer_method_font_clear_system_fallback_cache: + +.. rst-class:: classref-method + +|void| **font_clear_system_fallback_cache**\ (\ ) :ref:`🔗` + +Frees all automatically loaded system fonts. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServer_method_font_clear_textures: .. rst-class:: classref-method @@ -1758,9 +1774,9 @@ Removes all textures from font cache entry. .. rst-class:: classref-method -|void| **font_draw_glyph**\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **font_draw_glyph**\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draws single glyph into a canvas item at the position, using ``font_rid`` at the size ``size``. +Draws single glyph into a canvas item at the position, using ``font_rid`` at the size ``size``. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. \ **Note:** Glyph index is specific to the font, use glyphs indices returned by :ref:`shaped_text_get_glyphs()` or :ref:`font_get_glyph_index()`. @@ -1774,9 +1790,9 @@ Draws single glyph into a canvas item at the position, using ``font_rid`` at the .. rst-class:: classref-method -|void| **font_draw_glyph_outline**\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, outline_size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **font_draw_glyph_outline**\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, outline_size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draws single glyph outline of size ``outline_size`` into a canvas item at the position, using ``font_rid`` at the size ``size``. +Draws single glyph outline of size ``outline_size`` into a canvas item at the position, using ``font_rid`` at the size ``size``. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. \ **Note:** Glyph index is specific to the font, use glyphs indices returned by :ref:`shaped_text_get_glyphs()` or :ref:`font_get_glyph_index()`. @@ -1936,7 +1952,9 @@ Returns ``true`` if font texture mipmap generation is enabled. :ref:`float` **font_get_global_oversampling**\ (\ ) |const| :ref:`🔗` -Returns the font oversampling factor, shared by all fonts in the TextServer. +**Deprecated:** Use :ref:`Viewport` oversampling, or the ``oversampling`` argument of the ``draw_*`` methods instead. + +Deprecated. This method always returns ``1.0``. .. rst-class:: classref-item-separator @@ -2222,7 +2240,9 @@ Returns :ref:`Dictionary` with OpenType font name strings (loc :ref:`float` **font_get_oversampling**\ (\ font_rid\: :ref:`RID`\ ) |const| :ref:`🔗` -Returns font oversampling factor, if set to ``0.0`` global oversampling factor is used instead. Used by dynamic fonts only. +**Deprecated:** Use :ref:`Viewport` oversampling, or the ``oversampling`` argument of the ``draw_*`` methods instead. + +Deprecated. This method always returns ``1.0``. .. rst-class:: classref-item-separator @@ -2264,6 +2284,18 @@ Returns list of script support overrides. ---- +.. _class_TextServer_method_font_get_size_cache_info: + +.. rst-class:: classref-method + +:ref:`Array`\[:ref:`Dictionary`\] **font_get_size_cache_info**\ (\ font_rid\: :ref:`RID`\ ) |const| :ref:`🔗` + +Returns font cache information, each entry contains the following fields: ``Vector2i size_px`` - font size in pixels, ``float viewport_oversampling`` - viewport oversampling factor, ``int glyphs`` - number of rendered glyphs, ``int textures`` - number of used textures, ``int textures_size`` - size of texture data in bytes. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServer_method_font_get_size_cache_list: .. rst-class:: classref-method @@ -2802,9 +2834,9 @@ If set to ``true`` font texture mipmap generation is enabled. |void| **font_set_global_oversampling**\ (\ oversampling\: :ref:`float`\ ) :ref:`🔗` -Sets oversampling factor, shared by all font in the TextServer. +**Deprecated:** Use :ref:`Viewport` oversampling, or the ``oversampling`` argument of the ``draw_*`` methods instead. -\ **Note:** This value can be automatically changed by display server. +Deprecated. This method does nothing. .. rst-class:: classref-item-separator @@ -3000,7 +3032,9 @@ Sets font OpenType feature set override. |void| **font_set_oversampling**\ (\ font_rid\: :ref:`RID`, oversampling\: :ref:`float`\ ) :ref:`🔗` -Sets font oversampling factor, if set to ``0.0`` global oversampling factor is used instead. Used by dynamic fonts only. +**Deprecated:** Use :ref:`Viewport` oversampling, or the ``oversampling`` argument of the ``draw_*`` methods instead. + +Deprecated. This method does nothing. .. rst-class:: classref-item-separator @@ -3704,9 +3738,9 @@ Returns composite character position closest to the ``pos``. .. rst-class:: classref-method -|void| **shaped_text_draw**\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float` = -1, clip_r\: :ref:`float` = -1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **shaped_text_draw**\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float` = -1, clip_r\: :ref:`float` = -1, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw shaped text into a canvas item at a given position, with ``color``. ``pos`` specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). +Draw shaped text into a canvas item at a given position, with ``color``. ``pos`` specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -3716,9 +3750,9 @@ Draw shaped text into a canvas item at a given position, with ``color``. ``pos`` .. rst-class:: classref-method -|void| **shaped_text_draw_outline**\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float` = -1, clip_r\: :ref:`float` = -1, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1)\ ) |const| :ref:`🔗` +|void| **shaped_text_draw_outline**\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float` = -1, clip_r\: :ref:`float` = -1, outline_size\: :ref:`int` = 1, color\: :ref:`Color` = Color(1, 1, 1, 1), oversampling\: :ref:`float` = 0.0\ ) |const| :ref:`🔗` -Draw the outline of the shaped text into a canvas item at a given position, with ``color``. ``pos`` specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). +Draw the outline of the shaped text into a canvas item at a given position, with ``color``. ``pos`` specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator diff --git a/classes/class_textserverextension.rst b/classes/class_textserverextension.rst index 72bcc2159..6290ffb02 100644 --- a/classes/class_textserverextension.rst +++ b/classes/class_textserverextension.rst @@ -31,475 +31,483 @@ Methods .. table:: :widths: auto - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_cleanup`\ (\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_create_font`\ (\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_create_font_linked_variation`\ (\ font_rid\: :ref:`RID`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_create_shaped_text`\ (\ direction\: :ref:`Direction`, orientation\: :ref:`Orientation`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_draw_hex_code_box`\ (\ canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_clear_glyphs`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_clear_kerning_map`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_clear_size_cache`\ (\ font_rid\: :ref:`RID`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_clear_textures`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_draw_glyph`\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_draw_glyph_outline`\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, outline_size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`FontAntialiasing` | :ref:`_font_get_antialiasing`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_ascent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_baseline_offset`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_char_from_glyph_index`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_descent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_get_disable_embedded_bitmaps`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_embolden`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_face_count`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_face_index`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_fixed_size`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`FixedSizeScaleMode` | :ref:`_font_get_fixed_size_scale_mode`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_get_generate_mipmaps`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_global_oversampling`\ (\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_font_get_glyph_advance`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_get_glyph_contours`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_glyph_index`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, char\: :ref:`int`, variation_selector\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_font_get_glyph_list`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_font_get_glyph_offset`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_font_get_glyph_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_glyph_texture_idx`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_font_get_glyph_texture_rid`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_font_get_glyph_texture_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`_font_get_glyph_uv_rect`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Hinting` | :ref:`_font_get_hinting`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_get_keep_rounding_remainders`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_font_get_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Vector2i`\] | :ref:`_font_get_kerning_list`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_get_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`_font_get_language_support_overrides`\ (\ font_rid\: :ref:`RID`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_msdf_pixel_range`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_msdf_size`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_font_get_name`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_get_opentype_feature_overrides`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_get_ot_name_strings`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_oversampling`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_scale`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_get_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`_font_get_script_support_overrides`\ (\ font_rid\: :ref:`RID`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Vector2i`\] | :ref:`_font_get_size_cache_list`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_spacing`\ (\ font_rid\: :ref:`RID`, spacing\: :ref:`SpacingType`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_stretch`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |bitfield|\[:ref:`FontStyle`\] | :ref:`_font_get_style`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_font_get_style_name`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`SubpixelPositioning` | :ref:`_font_get_subpixel_positioning`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_font_get_supported_chars`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_font_get_supported_glyphs`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_texture_count`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Image` | :ref:`_font_get_texture_image`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_font_get_texture_offsets`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform2D` | :ref:`_font_get_transform`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_underline_position`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_font_get_underline_thickness`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_get_variation_coordinates`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_font_get_weight`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_has_char`\ (\ font_rid\: :ref:`RID`, char\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_is_allow_system_fallback`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_is_force_autohinter`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_is_language_supported`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_is_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_is_multichannel_signed_distance_field`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_font_is_script_supported`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_remove_glyph`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_remove_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_remove_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_remove_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_remove_size_cache`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_remove_texture`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_render_glyph`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, index\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_render_range`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, start\: :ref:`int`, end\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_allow_system_fallback`\ (\ font_rid\: :ref:`RID`, allow_system_fallback\: :ref:`bool`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_antialiasing`\ (\ font_rid\: :ref:`RID`, antialiasing\: :ref:`FontAntialiasing`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_ascent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, ascent\: :ref:`float`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_baseline_offset`\ (\ font_rid\: :ref:`RID`, baseline_offset\: :ref:`float`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_data`\ (\ font_rid\: :ref:`RID`, data\: :ref:`PackedByteArray`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_data_ptr`\ (\ font_rid\: :ref:`RID`, data_ptr\: ``const uint8_t*``, data_size\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_descent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, descent\: :ref:`float`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_disable_embedded_bitmaps`\ (\ font_rid\: :ref:`RID`, disable_embedded_bitmaps\: :ref:`bool`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_embolden`\ (\ font_rid\: :ref:`RID`, strength\: :ref:`float`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_face_index`\ (\ font_rid\: :ref:`RID`, face_index\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_fixed_size`\ (\ font_rid\: :ref:`RID`, fixed_size\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_fixed_size_scale_mode`\ (\ font_rid\: :ref:`RID`, fixed_size_scale_mode\: :ref:`FixedSizeScaleMode`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_force_autohinter`\ (\ font_rid\: :ref:`RID`, force_autohinter\: :ref:`bool`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_generate_mipmaps`\ (\ font_rid\: :ref:`RID`, generate_mipmaps\: :ref:`bool`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_global_oversampling`\ (\ oversampling\: :ref:`float`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_glyph_advance`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph\: :ref:`int`, advance\: :ref:`Vector2`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_glyph_offset`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, offset\: :ref:`Vector2`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_glyph_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, gl_size\: :ref:`Vector2`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_glyph_texture_idx`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, texture_idx\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_glyph_uv_rect`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, uv_rect\: :ref:`Rect2`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_hinting`\ (\ font_rid\: :ref:`RID`, hinting\: :ref:`Hinting`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_keep_rounding_remainders`\ (\ font_rid\: :ref:`RID`, keep_rounding_remainders\: :ref:`bool`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`, kerning\: :ref:`Vector2`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`, supported\: :ref:`bool`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`, modulate\: :ref:`bool`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_msdf_pixel_range`\ (\ font_rid\: :ref:`RID`, msdf_pixel_range\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_msdf_size`\ (\ font_rid\: :ref:`RID`, msdf_size\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_multichannel_signed_distance_field`\ (\ font_rid\: :ref:`RID`, msdf\: :ref:`bool`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_name`\ (\ font_rid\: :ref:`RID`, name\: :ref:`String`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_opentype_feature_overrides`\ (\ font_rid\: :ref:`RID`, overrides\: :ref:`Dictionary`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_oversampling`\ (\ font_rid\: :ref:`RID`, oversampling\: :ref:`float`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_scale`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, scale\: :ref:`float`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`, supported\: :ref:`bool`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_spacing`\ (\ font_rid\: :ref:`RID`, spacing\: :ref:`SpacingType`, value\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_stretch`\ (\ font_rid\: :ref:`RID`, stretch\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_style`\ (\ font_rid\: :ref:`RID`, style\: |bitfield|\[:ref:`FontStyle`\]\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_style_name`\ (\ font_rid\: :ref:`RID`, name_style\: :ref:`String`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_subpixel_positioning`\ (\ font_rid\: :ref:`RID`, subpixel_positioning\: :ref:`SubpixelPositioning`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_texture_image`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`, image\: :ref:`Image`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_texture_offsets`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`, offset\: :ref:`PackedInt32Array`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_transform`\ (\ font_rid\: :ref:`RID`, transform\: :ref:`Transform2D`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_underline_position`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, underline_position\: :ref:`float`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_underline_thickness`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, underline_thickness\: :ref:`float`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_variation_coordinates`\ (\ font_rid\: :ref:`RID`, variation_coordinates\: :ref:`Dictionary`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_font_set_weight`\ (\ font_rid\: :ref:`RID`, weight\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_supported_feature_list`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_font_supported_variation_list`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_format_number`\ (\ number\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_free_rid`\ (\ rid\: :ref:`RID`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_get_features`\ (\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_get_hex_code_box_size`\ (\ size\: :ref:`int`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_get_name`\ (\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedByteArray` | :ref:`_get_support_data`\ (\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_get_support_data_filename`\ (\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_get_support_data_info`\ (\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_has`\ (\ rid\: :ref:`RID`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_has_feature`\ (\ feature\: :ref:`Feature`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_is_confusable`\ (\ string\: :ref:`String`, dict\: :ref:`PackedStringArray`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_is_locale_right_to_left`\ (\ locale\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_is_valid_identifier`\ (\ string\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_is_valid_letter`\ (\ unicode\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_load_support_data`\ (\ filename\: :ref:`String`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_name_to_tag`\ (\ name\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_parse_number`\ (\ number\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Vector3i`\] | :ref:`_parse_structured_text`\ (\ parser_type\: :ref:`StructuredTextParser`, args\: :ref:`Array`, text\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_percent_sign`\ (\ language\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_save_support_data`\ (\ filename\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_get_run_count`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Direction` | :ref:`_shaped_get_run_direction`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_shaped_get_run_font_rid`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_get_run_font_size`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_shaped_get_run_language`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`_shaped_get_run_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`_shaped_get_run_range`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_shaped_get_run_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_get_span_count`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`_shaped_get_span_embedded_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`_shaped_get_span_meta`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`_shaped_get_span_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_shaped_get_span_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_shaped_get_text`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_set_span_update_font`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_add_object`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment`, length\: :ref:`int`, baseline\: :ref:`float`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_add_string`\ (\ shaped\: :ref:`RID`, text\: :ref:`String`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary`, language\: :ref:`String`, meta\: :ref:`Variant`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_clear`\ (\ shaped\: :ref:`RID`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_closest_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_draw`\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float`, clip_r\: :ref:`float`, color\: :ref:`Color`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_draw_outline`\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float`, clip_r\: :ref:`float`, outline_size\: :ref:`int`, color\: :ref:`Color`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_fit_to_width`\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\]\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_get_ascent`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_get_carets`\ (\ shaped\: :ref:`RID`, position\: :ref:`int`, caret\: ``CaretInfo*``\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_character_breaks`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_custom_ellipsis`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_shaped_text_get_custom_punctuation`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_get_descent`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Direction` | :ref:`_shaped_text_get_direction`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_dominant_direction_in_range`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, end\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_ellipsis_glyph_count`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | ``const Glyph*`` | :ref:`_shaped_text_get_ellipsis_glyphs`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_ellipsis_pos`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_glyph_count`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | ``const Glyph*`` | :ref:`_shaped_text_get_glyphs`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_shaped_text_get_grapheme_bounds`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Direction` | :ref:`_shaped_text_get_inferred_direction`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_line_breaks`\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, start\: :ref:`int`, break_flags\: |bitfield|\[:ref:`LineBreakFlag`\]\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_line_breaks_adv`\ (\ shaped\: :ref:`RID`, width\: :ref:`PackedFloat32Array`, start\: :ref:`int`, once\: :ref:`bool`, break_flags\: |bitfield|\[:ref:`LineBreakFlag`\]\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_object_glyph`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`_shaped_text_get_object_range`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Rect2` | :ref:`_shaped_text_get_object_rect`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array` | :ref:`_shaped_text_get_objects`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Orientation` | :ref:`_shaped_text_get_orientation`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_shaped_text_get_parent`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_get_preserve_control`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_get_preserve_invalid`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2i` | :ref:`_shaped_text_get_range`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedVector2Array` | :ref:`_shaped_text_get_selection`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, end\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_shaped_text_get_size`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_spacing`\ (\ shaped\: :ref:`RID`, spacing\: :ref:`SpacingType`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_get_trim_pos`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_get_underline_position`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_get_underline_thickness`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_get_width`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_word_breaks`\ (\ shaped\: :ref:`RID`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag`\], skip_grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag`\]\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_hit_test_grapheme`\ (\ shaped\: :ref:`RID`, coord\: :ref:`float`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_hit_test_position`\ (\ shaped\: :ref:`RID`, coord\: :ref:`float`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_is_ready`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_next_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_next_grapheme_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_overrun_trim_to_width`\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, trim_flags\: |bitfield|\[:ref:`TextOverrunFlag`\]\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_prev_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_shaped_text_prev_grapheme_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_resize_object`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment`, baseline\: :ref:`float`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_set_bidi_override`\ (\ shaped\: :ref:`RID`, override\: :ref:`Array`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_set_custom_ellipsis`\ (\ shaped\: :ref:`RID`, char\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_set_custom_punctuation`\ (\ shaped\: :ref:`RID`, punct\: :ref:`String`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_set_direction`\ (\ shaped\: :ref:`RID`, direction\: :ref:`Direction`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_set_orientation`\ (\ shaped\: :ref:`RID`, orientation\: :ref:`Orientation`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_set_preserve_control`\ (\ shaped\: :ref:`RID`, enabled\: :ref:`bool`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_set_preserve_invalid`\ (\ shaped\: :ref:`RID`, enabled\: :ref:`bool`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_shaped_text_set_spacing`\ (\ shaped\: :ref:`RID`, spacing\: :ref:`SpacingType`, value\: :ref:`int`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_shape`\ (\ shaped\: :ref:`RID`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | ``const Glyph*`` | :ref:`_shaped_text_sort_logical`\ (\ shaped\: :ref:`RID`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_shaped_text_substr`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, length\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`_shaped_text_tab_align`\ (\ shaped\: :ref:`RID`, tab_stops\: :ref:`PackedFloat32Array`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_update_breaks`\ (\ shaped\: :ref:`RID`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_shaped_text_update_justification_ops`\ (\ shaped\: :ref:`RID`\ ) |virtual| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_spoof_check`\ (\ string\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_string_get_character_breaks`\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`_string_get_word_breaks`\ (\ string\: :ref:`String`, language\: :ref:`String`, chars_per_line\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_string_to_lower`\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_string_to_title`\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_string_to_upper`\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_strip_diacritics`\ (\ string\: :ref:`String`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_tag_to_name`\ (\ tag\: :ref:`int`\ ) |virtual| |const| | - +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_cleanup`\ (\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_create_font`\ (\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_create_font_linked_variation`\ (\ font_rid\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_create_shaped_text`\ (\ direction\: :ref:`Direction`, orientation\: :ref:`Orientation`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_draw_hex_code_box`\ (\ canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_clear_glyphs`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_clear_kerning_map`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_clear_size_cache`\ (\ font_rid\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_clear_system_fallback_cache`\ (\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_clear_textures`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_draw_glyph`\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`, oversampling\: :ref:`float`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_draw_glyph_outline`\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, outline_size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`, oversampling\: :ref:`float`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`FontAntialiasing` | :ref:`_font_get_antialiasing`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_ascent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_baseline_offset`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_char_from_glyph_index`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_descent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_get_disable_embedded_bitmaps`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_embolden`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_face_count`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_face_index`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_fixed_size`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`FixedSizeScaleMode` | :ref:`_font_get_fixed_size_scale_mode`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_get_generate_mipmaps`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_global_oversampling`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_font_get_glyph_advance`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_get_glyph_contours`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_glyph_index`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, char\: :ref:`int`, variation_selector\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_font_get_glyph_list`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_font_get_glyph_offset`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_font_get_glyph_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_glyph_texture_idx`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_font_get_glyph_texture_rid`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_font_get_glyph_texture_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`_font_get_glyph_uv_rect`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Hinting` | :ref:`_font_get_hinting`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_get_keep_rounding_remainders`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_font_get_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Vector2i`\] | :ref:`_font_get_kerning_list`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_get_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`_font_get_language_support_overrides`\ (\ font_rid\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_msdf_pixel_range`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_msdf_size`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_font_get_name`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_get_opentype_feature_overrides`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_get_ot_name_strings`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_oversampling`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_scale`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_get_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`_font_get_script_support_overrides`\ (\ font_rid\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`_font_get_size_cache_info`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Vector2i`\] | :ref:`_font_get_size_cache_list`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_spacing`\ (\ font_rid\: :ref:`RID`, spacing\: :ref:`SpacingType`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_stretch`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |bitfield|\[:ref:`FontStyle`\] | :ref:`_font_get_style`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_font_get_style_name`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`SubpixelPositioning` | :ref:`_font_get_subpixel_positioning`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_font_get_supported_chars`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_font_get_supported_glyphs`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_texture_count`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Image` | :ref:`_font_get_texture_image`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_font_get_texture_offsets`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform2D` | :ref:`_font_get_transform`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_underline_position`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_font_get_underline_thickness`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_get_variation_coordinates`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_font_get_weight`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_has_char`\ (\ font_rid\: :ref:`RID`, char\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_allow_system_fallback`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_force_autohinter`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_language_supported`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_multichannel_signed_distance_field`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_font_is_script_supported`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_remove_glyph`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_remove_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_remove_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_remove_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_remove_size_cache`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_remove_texture`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_render_glyph`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, index\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_render_range`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, start\: :ref:`int`, end\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_allow_system_fallback`\ (\ font_rid\: :ref:`RID`, allow_system_fallback\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_antialiasing`\ (\ font_rid\: :ref:`RID`, antialiasing\: :ref:`FontAntialiasing`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_ascent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, ascent\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_baseline_offset`\ (\ font_rid\: :ref:`RID`, baseline_offset\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_data`\ (\ font_rid\: :ref:`RID`, data\: :ref:`PackedByteArray`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_data_ptr`\ (\ font_rid\: :ref:`RID`, data_ptr\: ``const uint8_t*``, data_size\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_descent`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, descent\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_disable_embedded_bitmaps`\ (\ font_rid\: :ref:`RID`, disable_embedded_bitmaps\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_embolden`\ (\ font_rid\: :ref:`RID`, strength\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_face_index`\ (\ font_rid\: :ref:`RID`, face_index\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_fixed_size`\ (\ font_rid\: :ref:`RID`, fixed_size\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_fixed_size_scale_mode`\ (\ font_rid\: :ref:`RID`, fixed_size_scale_mode\: :ref:`FixedSizeScaleMode`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_force_autohinter`\ (\ font_rid\: :ref:`RID`, force_autohinter\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_generate_mipmaps`\ (\ font_rid\: :ref:`RID`, generate_mipmaps\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_global_oversampling`\ (\ oversampling\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_glyph_advance`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph\: :ref:`int`, advance\: :ref:`Vector2`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_glyph_offset`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, offset\: :ref:`Vector2`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_glyph_size`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, gl_size\: :ref:`Vector2`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_glyph_texture_idx`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, texture_idx\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_glyph_uv_rect`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, uv_rect\: :ref:`Rect2`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_hinting`\ (\ font_rid\: :ref:`RID`, hinting\: :ref:`Hinting`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_keep_rounding_remainders`\ (\ font_rid\: :ref:`RID`, keep_rounding_remainders\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_kerning`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`, kerning\: :ref:`Vector2`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_language_support_override`\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`, supported\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_modulate_color_glyphs`\ (\ font_rid\: :ref:`RID`, modulate\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_msdf_pixel_range`\ (\ font_rid\: :ref:`RID`, msdf_pixel_range\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_msdf_size`\ (\ font_rid\: :ref:`RID`, msdf_size\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_multichannel_signed_distance_field`\ (\ font_rid\: :ref:`RID`, msdf\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_name`\ (\ font_rid\: :ref:`RID`, name\: :ref:`String`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_opentype_feature_overrides`\ (\ font_rid\: :ref:`RID`, overrides\: :ref:`Dictionary`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_oversampling`\ (\ font_rid\: :ref:`RID`, oversampling\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_scale`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, scale\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_script_support_override`\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`, supported\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_spacing`\ (\ font_rid\: :ref:`RID`, spacing\: :ref:`SpacingType`, value\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_stretch`\ (\ font_rid\: :ref:`RID`, stretch\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_style`\ (\ font_rid\: :ref:`RID`, style\: |bitfield|\[:ref:`FontStyle`\]\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_style_name`\ (\ font_rid\: :ref:`RID`, name_style\: :ref:`String`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_subpixel_positioning`\ (\ font_rid\: :ref:`RID`, subpixel_positioning\: :ref:`SubpixelPositioning`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_texture_image`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`, image\: :ref:`Image`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_texture_offsets`\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`, offset\: :ref:`PackedInt32Array`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_transform`\ (\ font_rid\: :ref:`RID`, transform\: :ref:`Transform2D`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_underline_position`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, underline_position\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_underline_thickness`\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, underline_thickness\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_variation_coordinates`\ (\ font_rid\: :ref:`RID`, variation_coordinates\: :ref:`Dictionary`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_font_set_weight`\ (\ font_rid\: :ref:`RID`, weight\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_supported_feature_list`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_font_supported_variation_list`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_format_number`\ (\ number\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_free_rid`\ (\ rid\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_get_features`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_get_hex_code_box_size`\ (\ size\: :ref:`int`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_get_name`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedByteArray` | :ref:`_get_support_data`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_get_support_data_filename`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_get_support_data_info`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_has`\ (\ rid\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_has_feature`\ (\ feature\: :ref:`Feature`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_is_confusable`\ (\ string\: :ref:`String`, dict\: :ref:`PackedStringArray`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_is_locale_right_to_left`\ (\ locale\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_is_valid_identifier`\ (\ string\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_is_valid_letter`\ (\ unicode\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_load_support_data`\ (\ filename\: :ref:`String`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_name_to_tag`\ (\ name\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_parse_number`\ (\ number\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Vector3i`\] | :ref:`_parse_structured_text`\ (\ parser_type\: :ref:`StructuredTextParser`, args\: :ref:`Array`, text\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_percent_sign`\ (\ language\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_reference_oversampling_level`\ (\ oversampling\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_save_support_data`\ (\ filename\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_get_run_count`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`_shaped_get_run_direction`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_shaped_get_run_font_rid`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_get_run_font_size`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_shaped_get_run_language`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`_shaped_get_run_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`_shaped_get_run_range`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_shaped_get_run_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_get_span_count`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`_shaped_get_span_embedded_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`_shaped_get_span_meta`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`_shaped_get_span_object`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_shaped_get_span_text`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_shaped_get_text`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_set_span_update_font`\ (\ shaped\: :ref:`RID`, index\: :ref:`int`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_add_object`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment`, length\: :ref:`int`, baseline\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_add_string`\ (\ shaped\: :ref:`RID`, text\: :ref:`String`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary`, language\: :ref:`String`, meta\: :ref:`Variant`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_clear`\ (\ shaped\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_closest_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_draw`\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float`, clip_r\: :ref:`float`, color\: :ref:`Color`, oversampling\: :ref:`float`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_draw_outline`\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float`, clip_r\: :ref:`float`, outline_size\: :ref:`int`, color\: :ref:`Color`, oversampling\: :ref:`float`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_fit_to_width`\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\]\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_get_ascent`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_get_carets`\ (\ shaped\: :ref:`RID`, position\: :ref:`int`, caret\: ``CaretInfo*``\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_character_breaks`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_custom_ellipsis`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_shaped_text_get_custom_punctuation`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_get_descent`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`_shaped_text_get_direction`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_dominant_direction_in_range`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, end\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_ellipsis_glyph_count`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ``const Glyph*`` | :ref:`_shaped_text_get_ellipsis_glyphs`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_ellipsis_pos`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_glyph_count`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ``const Glyph*`` | :ref:`_shaped_text_get_glyphs`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_shaped_text_get_grapheme_bounds`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Direction` | :ref:`_shaped_text_get_inferred_direction`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_line_breaks`\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, start\: :ref:`int`, break_flags\: |bitfield|\[:ref:`LineBreakFlag`\]\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_line_breaks_adv`\ (\ shaped\: :ref:`RID`, width\: :ref:`PackedFloat32Array`, start\: :ref:`int`, once\: :ref:`bool`, break_flags\: |bitfield|\[:ref:`LineBreakFlag`\]\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_object_glyph`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`_shaped_text_get_object_range`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Rect2` | :ref:`_shaped_text_get_object_rect`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array` | :ref:`_shaped_text_get_objects`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Orientation` | :ref:`_shaped_text_get_orientation`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_shaped_text_get_parent`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_get_preserve_control`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_get_preserve_invalid`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2i` | :ref:`_shaped_text_get_range`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedVector2Array` | :ref:`_shaped_text_get_selection`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, end\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_shaped_text_get_size`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_spacing`\ (\ shaped\: :ref:`RID`, spacing\: :ref:`SpacingType`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_get_trim_pos`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_get_underline_position`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_get_underline_thickness`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_get_width`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_shaped_text_get_word_breaks`\ (\ shaped\: :ref:`RID`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag`\], skip_grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag`\]\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_hit_test_grapheme`\ (\ shaped\: :ref:`RID`, coord\: :ref:`float`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_hit_test_position`\ (\ shaped\: :ref:`RID`, coord\: :ref:`float`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_is_ready`\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_next_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_next_grapheme_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_overrun_trim_to_width`\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, trim_flags\: |bitfield|\[:ref:`TextOverrunFlag`\]\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_prev_character_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_shaped_text_prev_grapheme_pos`\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_resize_object`\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment`, baseline\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_set_bidi_override`\ (\ shaped\: :ref:`RID`, override\: :ref:`Array`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_set_custom_ellipsis`\ (\ shaped\: :ref:`RID`, char\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_set_custom_punctuation`\ (\ shaped\: :ref:`RID`, punct\: :ref:`String`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_set_direction`\ (\ shaped\: :ref:`RID`, direction\: :ref:`Direction`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_set_orientation`\ (\ shaped\: :ref:`RID`, orientation\: :ref:`Orientation`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_set_preserve_control`\ (\ shaped\: :ref:`RID`, enabled\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_set_preserve_invalid`\ (\ shaped\: :ref:`RID`, enabled\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_shaped_text_set_spacing`\ (\ shaped\: :ref:`RID`, spacing\: :ref:`SpacingType`, value\: :ref:`int`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_shape`\ (\ shaped\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ``const Glyph*`` | :ref:`_shaped_text_sort_logical`\ (\ shaped\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_shaped_text_substr`\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, length\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`_shaped_text_tab_align`\ (\ shaped\: :ref:`RID`, tab_stops\: :ref:`PackedFloat32Array`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_update_breaks`\ (\ shaped\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_shaped_text_update_justification_ops`\ (\ shaped\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_spoof_check`\ (\ string\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_string_get_character_breaks`\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`_string_get_word_breaks`\ (\ string\: :ref:`String`, language\: :ref:`String`, chars_per_line\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_string_to_lower`\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_string_to_title`\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_string_to_upper`\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_strip_diacritics`\ (\ string\: :ref:`String`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_tag_to_name`\ (\ tag\: :ref:`int`\ ) |virtual| |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_unreference_oversampling_level`\ (\ oversampling\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -622,6 +630,20 @@ Removes all font sizes from the cache entry. ---- +.. _class_TextServerExtension_private_method__font_clear_system_fallback_cache: + +.. rst-class:: classref-method + +|void| **_font_clear_system_fallback_cache**\ (\ ) |virtual| :ref:`🔗` + +**Optional.**\ + +Frees all automatically loaded system fonts. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServerExtension_private_method__font_clear_textures: .. rst-class:: classref-method @@ -640,11 +662,11 @@ Removes all textures from font cache entry. .. rst-class:: classref-method -|void| **_font_draw_glyph**\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`\ ) |virtual| |const| :ref:`🔗` +|void| **_font_draw_glyph**\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`, oversampling\: :ref:`float`\ ) |virtual| |const| :ref:`🔗` **Required.**\ -Draws single glyph into a canvas item at the position, using ``font_rid`` at the size ``size``. +Draws single glyph into a canvas item at the position, using ``font_rid`` at the size ``size``. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -654,11 +676,11 @@ Draws single glyph into a canvas item at the position, using ``font_rid`` at the .. rst-class:: classref-method -|void| **_font_draw_glyph_outline**\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, outline_size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`\ ) |virtual| |const| :ref:`🔗` +|void| **_font_draw_glyph_outline**\ (\ font_rid\: :ref:`RID`, canvas\: :ref:`RID`, size\: :ref:`int`, outline_size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`, oversampling\: :ref:`float`\ ) |virtual| |const| :ref:`🔗` **Required.**\ -Draws single glyph outline of size ``outline_size`` into a canvas item at the position, using ``font_rid`` at the size ``size``. +Draws single glyph outline of size ``outline_size`` into a canvas item at the position, using ``font_rid`` at the size ``size``. If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -1196,6 +1218,20 @@ Returns list of script support overrides. ---- +.. _class_TextServerExtension_private_method__font_get_size_cache_info: + +.. rst-class:: classref-method + +:ref:`Array`\[:ref:`Dictionary`\] **_font_get_size_cache_info**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| :ref:`🔗` + +**Optional.**\ + +Returns font cache information, each entry contains the following fields: ``Vector2i size_px`` - font size in pixels, ``float viewport_oversampling`` - viewport oversampling factor, ``int glyphs`` - number of rendered glyphs, ``int textures`` - number of used textures, ``int textures_size`` - size of texture data in bytes. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServerExtension_private_method__font_get_size_cache_list: .. rst-class:: classref-method @@ -2552,6 +2588,20 @@ Returns percent sign used in the ``language``. ---- +.. _class_TextServerExtension_private_method__reference_oversampling_level: + +.. rst-class:: classref-method + +|void| **_reference_oversampling_level**\ (\ oversampling\: :ref:`float`\ ) |virtual| :ref:`🔗` + +**Required.**\ + +Increases the reference count of the specified oversampling level. This method is called by :ref:`Viewport`, and should not be used directly. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServerExtension_private_method__save_support_data: .. rst-class:: classref-method @@ -2836,11 +2886,11 @@ Returns composite character position closest to the ``pos``. .. rst-class:: classref-method -|void| **_shaped_text_draw**\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float`, clip_r\: :ref:`float`, color\: :ref:`Color`\ ) |virtual| |const| :ref:`🔗` +|void| **_shaped_text_draw**\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float`, clip_r\: :ref:`float`, color\: :ref:`Color`, oversampling\: :ref:`float`\ ) |virtual| |const| :ref:`🔗` **Optional.**\ -Draw shaped text into a canvas item at a given position, with ``color``. ``pos`` specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). +Draw shaped text into a canvas item at a given position, with ``color``. ``pos`` specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -2850,11 +2900,11 @@ Draw shaped text into a canvas item at a given position, with ``color``. ``pos`` .. rst-class:: classref-method -|void| **_shaped_text_draw_outline**\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float`, clip_r\: :ref:`float`, outline_size\: :ref:`int`, color\: :ref:`Color`\ ) |virtual| |const| :ref:`🔗` +|void| **_shaped_text_draw_outline**\ (\ shaped\: :ref:`RID`, canvas\: :ref:`RID`, pos\: :ref:`Vector2`, clip_l\: :ref:`float`, clip_r\: :ref:`float`, outline_size\: :ref:`int`, color\: :ref:`Color`, oversampling\: :ref:`float`\ ) |virtual| |const| :ref:`🔗` **Optional.**\ -Draw the outline of the shaped text into a canvas item at a given position, with ``color``. ``pos`` specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). +Draw the outline of the shaped text into a canvas item at a given position, with ``color``. ``pos`` specifies the leftmost point of the baseline (for horizontal layout) or topmost point of the baseline (for vertical layout). If ``oversampling`` is greater than zero, it is used as font oversampling factor, otherwise viewport oversampling settings are used. .. rst-class:: classref-item-separator @@ -3780,6 +3830,20 @@ Strips diacritics from the string. Converts OpenType tag to readable feature, variation, script, or language name. +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__unreference_oversampling_level: + +.. rst-class:: classref-method + +|void| **_unreference_oversampling_level**\ (\ oversampling\: :ref:`float`\ ) |virtual| :ref:`🔗` + +**Required.**\ + +Decreases the reference count of the specified oversampling level, and frees the font cache for oversampling level when the reference count reaches zero. This method is called by :ref:`Viewport`, and should not be used directly. + .. |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.)` diff --git a/classes/class_viewport.rst b/classes/class_viewport.rst index 1949e010b..b50fe759e 100644 --- a/classes/class_viewport.rst +++ b/classes/class_viewport.rst @@ -97,6 +97,10 @@ Properties +-----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`MSAA` | :ref:`msaa_3d` | ``0`` | +-----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`oversampling` | ``true`` | + +-----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`oversampling_override` | ``0.0`` | + +-----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`own_world_3d` | ``false`` | +-----------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-------------------------------------------------------------------------------+ | :ref:`PhysicsInterpolationMode` | physics_interpolation_mode | ``1`` (overrides :ref:`Node`) | @@ -187,6 +191,8 @@ Methods +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Vector2` | :ref:`get_mouse_position`\ (\ ) |const| | +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_oversampling`\ (\ ) |const| | + +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`PositionalShadowAtlasQuadrantSubdiv` | :ref:`get_positional_shadow_atlas_quadrant_subdiv`\ (\ quadrant\: :ref:`int`\ ) |const| | +-----------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_render_info`\ (\ type\: :ref:`RenderInfoType`, info\: :ref:`RenderInfo`\ ) | @@ -1535,6 +1541,40 @@ See also :ref:`ProjectSettings.rendering/anti_aliasing/quality/msaa_3d` **oversampling** = ``true`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_use_oversampling**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **is_using_oversampling**\ (\ ) + +If ``true`` and one of the following conditions is true: :ref:`SubViewport.size_2d_override_stretch` and :ref:`SubViewport.size_2d_override` are set, :ref:`Window.content_scale_factor` is set and scaling is enabled, :ref:`oversampling_override` is set, font oversampling is enabled. + +.. rst-class:: classref-item-separator + +---- + +.. _class_Viewport_property_oversampling_override: + +.. rst-class:: classref-property + +:ref:`float` **oversampling_override** = ``0.0`` :ref:`🔗` + +.. rst-class:: classref-property-setget + +- |void| **set_oversampling_override**\ (\ value\: :ref:`float`\ ) +- :ref:`float` **get_oversampling_override**\ (\ ) + +If greater than zero, this value is used as the font oversampling factor, otherwise oversampling is equal to viewport scale. + +.. rst-class:: classref-item-separator + +---- + .. _class_Viewport_property_own_world_3d: .. rst-class:: classref-property @@ -2212,6 +2252,18 @@ Returns the mouse's position in this **Viewport** using the coordinate system of ---- +.. _class_Viewport_method_get_oversampling: + +.. rst-class:: classref-method + +:ref:`float` **get_oversampling**\ (\ ) |const| :ref:`🔗` + +Returns viewport oversampling factor. + +.. rst-class:: classref-item-separator + +---- + .. _class_Viewport_method_get_positional_shadow_atlas_quadrant_subdiv: .. rst-class:: classref-method diff --git a/classes/class_xrinterface.rst b/classes/class_xrinterface.rst index 4a2d1ca4c..4006a79f4 100644 --- a/classes/class_xrinterface.rst +++ b/classes/class_xrinterface.rst @@ -334,6 +334,40 @@ Additive blend mode. This is typically used for AR devices or VR devices with pa Alpha blend mode. This is typically used for AR or VR devices with passthrough capabilities. The alpha channel controls how much of the passthrough is visible. Alpha of 0.0 means the passthrough is visible and this pixel works in ADDITIVE mode. Alpha of 1.0 means that the passthrough is not visible and this pixel works in OPAQUE mode. +.. rst-class:: classref-item-separator + +---- + +.. _enum_XRInterface_VRSTextureFormat: + +.. rst-class:: classref-enumeration + +enum **VRSTextureFormat**: :ref:`🔗` + +.. _class_XRInterface_constant_XR_VRS_TEXTURE_FORMAT_UNIFIED: + +.. rst-class:: classref-enumeration-constant + +:ref:`VRSTextureFormat` **XR_VRS_TEXTURE_FORMAT_UNIFIED** = ``0`` + +The texture format is the same as returned by :ref:`XRVRS.make_vrs_texture()`. + +.. _class_XRInterface_constant_XR_VRS_TEXTURE_FORMAT_FRAGMENT_SHADING_RATE: + +.. rst-class:: classref-enumeration-constant + +:ref:`VRSTextureFormat` **XR_VRS_TEXTURE_FORMAT_FRAGMENT_SHADING_RATE** = ``1`` + +The texture format is the same as expected by the Vulkan ``VK_KHR_fragment_shading_rate`` extension. + +.. _class_XRInterface_constant_XR_VRS_TEXTURE_FORMAT_FRAGMENT_DENSITY_MAP: + +.. rst-class:: classref-enumeration-constant + +:ref:`VRSTextureFormat` **XR_VRS_TEXTURE_FORMAT_FRAGMENT_DENSITY_MAP** = ``2`` + +The texture format is the same as expected by the Vulkan ``VK_EXT_fragment_density_map`` extension. + .. rst-class:: classref-section-separator ---- diff --git a/classes/class_xrinterfaceextension.rst b/classes/class_xrinterfaceextension.rst index c3fd406e0..d142d8c0d 100644 --- a/classes/class_xrinterfaceextension.rst +++ b/classes/class_xrinterfaceextension.rst @@ -36,79 +36,81 @@ Methods .. table:: :widths: auto - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_end_frame`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_get_anchor_detection_is_enabled`\ (\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_get_camera_feed_id`\ (\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform3D` | :ref:`_get_camera_transform`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_get_capabilities`\ (\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_get_color_texture`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_get_depth_texture`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`StringName` | :ref:`_get_name`\ (\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedVector3Array` | :ref:`_get_play_area`\ (\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PlayAreaMode` | :ref:`_get_play_area_mode`\ (\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedFloat64Array` | :ref:`_get_projection_for_view`\ (\ view\: :ref:`int`, aspect\: :ref:`float`, z_near\: :ref:`float`, z_far\: :ref:`float`\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`_get_render_target_size`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`_get_suggested_pose_names`\ (\ tracker_name\: :ref:`StringName`\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`_get_suggested_tracker_names`\ (\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_get_system_info`\ (\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`TrackingStatus` | :ref:`_get_tracking_status`\ (\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Transform3D` | :ref:`_get_transform_for_view`\ (\ view\: :ref:`int`, cam_transform\: :ref:`Transform3D`\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_get_velocity_texture`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_get_view_count`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`_get_vrs_texture`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_initialize`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_is_initialized`\ (\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_post_draw_viewport`\ (\ render_target\: :ref:`RID`, screen_rect\: :ref:`Rect2`\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_pre_draw_viewport`\ (\ render_target\: :ref:`RID`\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_pre_render`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_process`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_set_anchor_detection_is_enabled`\ (\ enabled\: :ref:`bool`\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_set_play_area_mode`\ (\ mode\: :ref:`PlayAreaMode`\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_supports_play_area_mode`\ (\ mode\: :ref:`PlayAreaMode`\ ) |virtual| |const| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_trigger_haptic_pulse`\ (\ action_name\: :ref:`String`, tracker_name\: :ref:`StringName`, frequency\: :ref:`float`, amplitude\: :ref:`float`, duration_sec\: :ref:`float`, delay_sec\: :ref:`float`\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_uninitialize`\ (\ ) |virtual| | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_blit`\ (\ render_target\: :ref:`RID`, src_rect\: :ref:`Rect2`, dst_rect\: :ref:`Rect2i`, use_layer\: :ref:`bool`, layer\: :ref:`int`, apply_lens_distortion\: :ref:`bool`, eye_center\: :ref:`Vector2`, k1\: :ref:`float`, k2\: :ref:`float`, upscale\: :ref:`float`, aspect_ratio\: :ref:`float`\ ) | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_color_texture`\ (\ ) | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_depth_texture`\ (\ ) | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_render_target_texture`\ (\ render_target\: :ref:`RID`\ ) | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`RID` | :ref:`get_velocity_texture`\ (\ ) | - +--------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_end_frame`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_get_anchor_detection_is_enabled`\ (\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_get_camera_feed_id`\ (\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform3D` | :ref:`_get_camera_transform`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_get_capabilities`\ (\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_get_color_texture`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_get_depth_texture`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`StringName` | :ref:`_get_name`\ (\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedVector3Array` | :ref:`_get_play_area`\ (\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PlayAreaMode` | :ref:`_get_play_area_mode`\ (\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedFloat64Array` | :ref:`_get_projection_for_view`\ (\ view\: :ref:`int`, aspect\: :ref:`float`, z_near\: :ref:`float`, z_far\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`_get_render_target_size`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`_get_suggested_pose_names`\ (\ tracker_name\: :ref:`StringName`\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`_get_suggested_tracker_names`\ (\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_get_system_info`\ (\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TrackingStatus` | :ref:`_get_tracking_status`\ (\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Transform3D` | :ref:`_get_transform_for_view`\ (\ view\: :ref:`int`, cam_transform\: :ref:`Transform3D`\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_get_velocity_texture`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_get_view_count`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`_get_vrs_texture`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`VRSTextureFormat` | :ref:`_get_vrs_texture_format`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_initialize`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_is_initialized`\ (\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_post_draw_viewport`\ (\ render_target\: :ref:`RID`, screen_rect\: :ref:`Rect2`\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_pre_draw_viewport`\ (\ render_target\: :ref:`RID`\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_pre_render`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_process`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_set_anchor_detection_is_enabled`\ (\ enabled\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_set_play_area_mode`\ (\ mode\: :ref:`PlayAreaMode`\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_supports_play_area_mode`\ (\ mode\: :ref:`PlayAreaMode`\ ) |virtual| |const| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_trigger_haptic_pulse`\ (\ action_name\: :ref:`String`, tracker_name\: :ref:`StringName`, frequency\: :ref:`float`, amplitude\: :ref:`float`, duration_sec\: :ref:`float`, delay_sec\: :ref:`float`\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_uninitialize`\ (\ ) |virtual| | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_blit`\ (\ render_target\: :ref:`RID`, src_rect\: :ref:`Rect2`, dst_rect\: :ref:`Rect2i`, use_layer\: :ref:`bool`, layer\: :ref:`int`, apply_lens_distortion\: :ref:`bool`, eye_center\: :ref:`Vector2`, k1\: :ref:`float`, k2\: :ref:`float`, upscale\: :ref:`float`, aspect_ratio\: :ref:`float`\ ) | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_color_texture`\ (\ ) | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_depth_texture`\ (\ ) | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_render_target_texture`\ (\ render_target\: :ref:`RID`\ ) | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`RID` | :ref:`get_velocity_texture`\ (\ ) | + +------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -361,6 +363,18 @@ Returns the number of views this interface requires, 1 for mono, 2 for stereosco ---- +.. _class_XRInterfaceExtension_private_method__get_vrs_texture_format: + +.. rst-class:: classref-method + +:ref:`VRSTextureFormat` **_get_vrs_texture_format**\ (\ ) |virtual| :ref:`🔗` + +Returns the format of the texture returned by :ref:`_get_vrs_texture()`. + +.. rst-class:: classref-item-separator + +---- + .. _class_XRInterfaceExtension_private_method__initialize: .. rst-class:: classref-method From a962fb740d0f1a18e22df979ca5c87fdfd696510 Mon Sep 17 00:00:00 2001 From: Kaleb Reid <78945904+Kaleb-Reid@users.noreply.github.com> Date: Fri, 18 Apr 2025 23:31:09 -0700 Subject: [PATCH 036/263] Update #include path for Time usage --- .../core_and_modules/common_engine_methods_and_macros.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributing/development/core_and_modules/common_engine_methods_and_macros.rst b/contributing/development/core_and_modules/common_engine_methods_and_macros.rst index 8a47f21c5..cd30dc398 100644 --- a/contributing/development/core_and_modules/common_engine_methods_and_macros.rst +++ b/contributing/development/core_and_modules/common_engine_methods_and_macros.rst @@ -149,7 +149,7 @@ declaration. .. note:: - You may have to ``#include "core/os/os.h"`` if it's not present already. + You may have to ``#include "core/os/time.h"`` if it's not present already. When opening a pull request, make sure to remove this snippet as well as the include if it wasn't there previously. From 0030b27c2ff350c49ccc6e46837266877d30364b Mon Sep 17 00:00:00 2001 From: Egor Nikulin Date: Sun, 20 Apr 2025 23:05:14 +0400 Subject: [PATCH 037/263] Fix code block format --- contributing/development/compiling/compiling_with_dotnet.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/contributing/development/compiling/compiling_with_dotnet.rst b/contributing/development/compiling/compiling_with_dotnet.rst index d2e6c7ae8..d696519b2 100644 --- a/contributing/development/compiling/compiling_with_dotnet.rst +++ b/contributing/development/compiling/compiling_with_dotnet.rst @@ -137,6 +137,7 @@ argument for scons, the managed libraries must also be built without dependencie This is done by passing the ``--no-deprecated`` argument: :: + ./modules/mono/build_scripts/build_assemblies.py --godot-output-dir ./bin --push-nupkgs-local --no-deprecated Double Precision Support (REAL_T_IS_DOUBLE) From cf52e8d52a939991c796d1a8be9281adfdf732b0 Mon Sep 17 00:00:00 2001 From: Tyler Morgan Date: Sun, 20 Apr 2025 12:14:53 -0700 Subject: [PATCH 038/263] Update introduction_to_2d.rst small typo fix --- tutorials/2d/introduction_to_2d.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/2d/introduction_to_2d.rst b/tutorials/2d/introduction_to_2d.rst index 6b6733d20..18ac63e3c 100644 --- a/tutorials/2d/introduction_to_2d.rst +++ b/tutorials/2d/introduction_to_2d.rst @@ -84,7 +84,7 @@ from left to right: The node rotates considering this point. If you have multiple nodes selected, this icon will add a temporary pivot to be used commonly by all selected nodes. Pressing :kbd:`Shift` and clicking this button will create the pivot at the center of selected nodes. If any of - the snap options are enabled, the pivot will also snap to them it when dragged. + the snap options are enabled, the pivot will also snap to them when dragged. - **Pan Mode** (:kbd:`G`): Allows you to navigate in the viewport without accidentally selecting any nodes. In other modes, you can also hold :kbd:`Space` and drag with the left mouse button to do the same. - **Ruler Mode**: After enabling, click on the viewport to display the current global From 72834c31a365ce43b5076db002686fa9e1ec3c8c Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 22 Apr 2025 14:14:59 +0200 Subject: [PATCH 039/263] Fix typo in C# example in Running code in the editor --- tutorials/plugins/running_code_in_the_editor.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/plugins/running_code_in_the_editor.rst b/tutorials/plugins/running_code_in_the_editor.rst index e9b8825aa..056268c5a 100644 --- a/tutorials/plugins/running_code_in_the_editor.rst +++ b/tutorials/plugins/running_code_in_the_editor.rst @@ -237,7 +237,7 @@ angle add a setter ``set(new_speed)`` which is executed with the input from the public override void _Process(double delta) { - Rotation += Mathf.Pi * (float)delta * speed; + Rotation += Mathf.Pi * (float)delta * _speed; } } From c737b30d5d9710bf166eb2681ac6224a7347f85a Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 22 Apr 2025 14:35:58 +0200 Subject: [PATCH 040/263] Mention the lack of debugger support in Running code in the editor --- tutorials/plugins/running_code_in_the_editor.rst | 5 +++++ tutorials/scripting/debug/debugger_panel.rst | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/tutorials/plugins/running_code_in_the_editor.rst b/tutorials/plugins/running_code_in_the_editor.rst index e9b8825aa..350a9f2ca 100644 --- a/tutorials/plugins/running_code_in_the_editor.rst +++ b/tutorials/plugins/running_code_in_the_editor.rst @@ -120,6 +120,11 @@ Modifications in the editor are permanent. For example, in the next section when we remove the script, the node will keep its rotation. Be careful to avoid making unwanted modifications. +Using the debugger and breakpoints on tool scripts is not currently supported. +Breakpoints placed in the script editor or using the ``breakpoint`` keyword are +ignored. You can use print statements to display the contents of variables +instead. + Try ``@tool`` out ----------------- diff --git a/tutorials/scripting/debug/debugger_panel.rst b/tutorials/scripting/debug/debugger_panel.rst index ebb761dce..ec4b22a2b 100644 --- a/tutorials/scripting/debug/debugger_panel.rst +++ b/tutorials/scripting/debug/debugger_panel.rst @@ -48,6 +48,13 @@ 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. +.. note:: + + Using the debugger and breakpoints on :ref:`tool scripts ` + is not currently supported. Breakpoints placed in the script editor or using + the ``breakpoint`` keyword are ignored. You can use print statements to + display the contents of variables instead. + Errors ------ From ab7c43c899d26b18839a673461f015fb634b64af Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 22 Apr 2025 14:30:30 +0200 Subject: [PATCH 041/263] Clarify rules around which scripts require `@tool` in Running code in the editor - Mention that static methods work, but not static variables. - Emphasize the use of version control due to the lack of undo/redo. --- .../plugins/running_code_in_the_editor.rst | 25 ++++++++++++++----- .../scripting/gdscript/gdscript_basics.rst | 9 +++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/tutorials/plugins/running_code_in_the_editor.rst b/tutorials/plugins/running_code_in_the_editor.rst index e9b8825aa..d52da181b 100644 --- a/tutorials/plugins/running_code_in_the_editor.rst +++ b/tutorials/plugins/running_code_in_the_editor.rst @@ -105,20 +105,33 @@ Here is how a ``_process()`` function might look for you: // Code to execute both in editor and in game. } +.. _doc_running_code_in_the_editor_important_information: + Important information --------------------- -Any other GDScript that your tool script uses must *also* be a tool. Any -GDScript without ``@tool`` used by the editor will act like an empty file! +The general rule is that **any other GDScript that your tool script uses must +*also* be a tool**. The editor is not able to construct instances from GDScript +files without ``@tool``, which means you cannot call methods or reference member +variables from them otherwise. However, since static methods, constants and +enums can be used without creating an instance, it is possible to call them or +reference them from a ``@tool`` script onto other non-tool scripts. One exception to +this are :ref:`static variables `. +If you try to read a static variable's value in a script that does not have +``@tool``, it will always return ``null`` but won't print a warning or error +when doing so. This restriction does not apply to static methods, which can be +called regardless of whether the target script is in tool mode. Extending a ``@tool`` script does not automatically make the extending script a ``@tool``. Omitting ``@tool`` from the extending script will disable tool -behavior from the super class. Therefore the extending script should also +behavior from the super class. Therefore, the extending script should also specify the ``@tool`` annotation. -Modifications in the editor are permanent. For example, in the next -section when we remove the script, the node will keep its rotation. Be careful -to avoid making unwanted modifications. +Modifications in the editor are permanent, with no undo/redo possible. For +example, in the next section when we remove the script, the node will keep its +rotation. Be careful to avoid making unwanted modifications. Consider setting up +:ref:`version control ` to avoid losing work in +case you make a mistake. Try ``@tool`` out ----------------- diff --git a/tutorials/scripting/gdscript/gdscript_basics.rst b/tutorials/scripting/gdscript/gdscript_basics.rst index 72ffc6ce9..fcc9b85f9 100644 --- a/tutorials/scripting/gdscript/gdscript_basics.rst +++ b/tutorials/scripting/gdscript/gdscript_basics.rst @@ -1099,6 +1099,8 @@ Member variables are initialized in the following order: To fix this, move the ``_data`` variable definition above the ``a`` definition or remove the empty dictionary assignment (``= {}``). +.. _doc_gdscript_basics_static_variables: + Static variables ~~~~~~~~~~~~~~~~ @@ -1181,6 +1183,13 @@ A base class static variable can also be accessed via a child class:: B.x = 3 prints(A.x, B.x) # 3 3 +.. note:: + + When referencing a static variable from a tool script, the other script + containing the static variable **must** also be a tool script. + See :ref:`Running code in the editor ` + for details. + ``@static_unload`` annotation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From d73c629ed520f863d822738ad4932c75a3f85975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20=C5=A0achov?= Date: Tue, 22 Apr 2025 14:48:56 +0200 Subject: [PATCH 042/263] Update Rider instructions for doctest in Configuring an IDE (#10885) --- contributing/development/configuring_an_ide/rider.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contributing/development/configuring_an_ide/rider.rst b/contributing/development/configuring_an_ide/rider.rst index 7066bb4bd..e856dd0e6 100644 --- a/contributing/development/configuring_an_ide/rider.rst +++ b/contributing/development/configuring_an_ide/rider.rst @@ -91,7 +91,7 @@ Please follow `RIDER-123535 ` support. -Please follow `RIDER-122019 `_. +Please refer to `the instructions `_. Profiling --------- From 9401baf5bc773c8f570f59e1f29feb0cd9661d5c Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 22 Apr 2025 19:53:23 +0200 Subject: [PATCH 043/263] Document loading FBX scenes in Run-time file loading and saving --- tutorials/io/runtime_file_loading_and_saving.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tutorials/io/runtime_file_loading_and_saving.rst b/tutorials/io/runtime_file_loading_and_saving.rst index eaabd78f9..13f6343bb 100644 --- a/tutorials/io/runtime_file_loading_and_saving.rst +++ b/tutorials/io/runtime_file_loading_and_saving.rst @@ -17,7 +17,7 @@ Example use cases for runtime file loading and saving include: - Loading texture packs designed for the game. - Loading user-provided audio tracks and playing them back in an in-game radio station. - Loading custom levels or 3D models that can be designed with any 3D DCC that - can export to glTF (including glTF scenes saved by Godot at runtime). + can export to glTF or FBX (including glTF scenes saved by Godot at runtime). - Using user-provided fonts for menus and HUD. - Saving/loading a file format that can contain multiple files but can still easily be read by other applications (ZIP). @@ -222,6 +222,13 @@ Godot can load and save glTF files in exported projects, in both text (``.gltf``) and binary (``.glb``) formats. The binary format should be preferred as it's faster to write and smaller, but the text format is easier to debug. +Since Godot 4.3, FBX scenes can also be loaded (but not saved) at runtime using the +:ref:`class_fbxdocument` and :ref:`class_fbxstate` classes. The code to do so +is the same as glTF, but you will need to replace all instances of +``GLTFDocument`` and ``GLTFState`` with ``FBXDocument`` and ``FBXState`` in the +code samples below. There are `known issues `__ +with runtime FBX loading, so using glTF instead is preferred for now. + Example of loading a glTF scene and appending its root node to the scene: .. tabs:: From bd2aa87578f342bb5ea4bc8570c49b1d1e99aefa Mon Sep 17 00:00:00 2001 From: BluesM18A1 <36201999+BluesM18A1@users.noreply.github.com> Date: Wed, 23 Apr 2025 08:42:17 -0700 Subject: [PATCH 044/263] Update the 'Using Fonts' page to include information on spacing adjustments and kerning pairs for image fonts (#10880) * Update the 'Using Fonts' page to include information on spacing adjustments and kerning pairs for image fonts Closes https://github.com/godotengine/godot-docs/issues/10855 Non-monospaced image fonts have been supported for quite some time, but the documentation has not yet been updated to reflect this. There are now some additional screenshots and examples of how to use the extra parameters in the Character Ranges, and how to use the Kerning Pairs list. --- tutorials/ui/gui_using_fonts.rst | 38 +++++++++++++++--- ...s_bitmap_font_advance_offsets_diagram.webp | Bin 0 -> 28066 bytes ...font_from_image_example_configuration.webp | Bin 13406 -> 15836 bytes ...bitmap_font_from_image_import_options.webp | Bin 11646 -> 14918 bytes ...ng_fonts_bitmap_kerning_pairs_example.webp | Bin 0 -> 8088 bytes 5 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 tutorials/ui/img/using_fonts_bitmap_font_advance_offsets_diagram.webp create mode 100644 tutorials/ui/img/using_fonts_bitmap_kerning_pairs_example.webp diff --git a/tutorials/ui/gui_using_fonts.rst b/tutorials/ui/gui_using_fonts.rst index 82a63a5f2..70cdbcfc8 100644 --- a/tutorials/ui/gui_using_fonts.rst +++ b/tutorials/ui/gui_using_fonts.rst @@ -68,17 +68,16 @@ Godot supports the BMFont (``.fnt``) bitmap font format. This is a format create by the `BMFont `__ program. Many BMFont-compatible programs also exist, like `BMGlyph `__ or web-based `fontcutter `__. -Alternatively, you can import any image to be used as a bitmap font. This is -only supported for **monospaced** fonts (fonts where each character has the same -width). To do so, select the image in the FileSystem dock, go to the -Import dock, change its import type to **Font Data (Monospace Image Font)** then +Alternatively, you can import any image to be used as a bitmap font. +To do so, select the image in the FileSystem dock, go to the +Import dock, change its import type to **Font Data (Image Font)** then click **Reimport**: .. figure:: img/using_fonts_bitmap_font_from_image_import_options.webp :align: center - :alt: Changing import type to Font Data (Monospace Image Font) + :alt: Changing import type to Font Data (Image Font) - Changing import type to **Font Data (Monospace Image Font)** + Changing import type to **Font Data (Image Font)** The font's character set layout can be in any order, but orders that match standard Unicode are recommended as they'll require far less configuration to @@ -122,6 +121,33 @@ If your font image contains guides (in the form of lines between glyphs) or if spacing between characters appears incorrect, try adjusting **Character Margin**. This margin is applied for every imported glyph. +If you need finer control over character spacing than +what the **Character Margin** options provide, you have more options. + +For one, **Character Ranges** supports 3 additional arguments after the +specified range of characters. +These additional arguments control their positioning and spacing. +They represent space advance, X axis offset, and Y axis offset in that order. +They will change the space advance and offset of each character +by the amount of pixels written. Space advance is most useful if, for example, +your lowercase letters are thinner than your uppercase letters. + +.. figure:: img/using_fonts_bitmap_font_advance_offsets_diagram.webp + :align: center + :alt: Diagram showing the advance and offset values being used in character ranges. + + Do note that the offsets can cause your text to be cropped off the edge of your label boundaries. + +Secondly, you can also set up **Kerning Pairs** for individual characters. +Specify your kerning pair by typing two sets of characters separated by a space, +then followed by another space, a number to specify how many extra/less pixels to +space those two sets of characters when placed next to each other. + +.. figure:: img/using_fonts_bitmap_kerning_pairs_example.webp + +If needed, your kerning pair characters can be specified by Unicode character code +by entering ``\uXXXX`` where XXXX is the hexadecimal value of the Unicode character. + Loading a font file ------------------- diff --git a/tutorials/ui/img/using_fonts_bitmap_font_advance_offsets_diagram.webp b/tutorials/ui/img/using_fonts_bitmap_font_advance_offsets_diagram.webp new file mode 100644 index 0000000000000000000000000000000000000000..80dfd8a0ba81d289e4c4ad5196ba8cffb1e702a4 GIT binary patch literal 28066 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 literal 0 HcmV?d00001 diff --git a/tutorials/ui/img/using_fonts_bitmap_font_from_image_example_configuration.webp b/tutorials/ui/img/using_fonts_bitmap_font_from_image_example_configuration.webp index f79cebc2ab0cad8a04628574b8d470f5d6e98c7f..c797acb5359d2f22b5dce051a9c600253185a934 100644 GIT binary patch literal 15836 zcmaL6b95#__b&Rzwr$(a8{4*RPHawWOl(^db7FgviEUdq-*@i1zw^gAx7Mnzr=Pu_ z>e{<&^;)%CMOs2)Q2+qY6c2mQVUfacqo+Pi`a z0RZ+6ZZ0a4BE(wSI>b;X0B`^r00n>qfHXFBbrM!mlKYSM|G7Ob13>;`Sz!3jT>odE z|0|1NX6|YV0DusGdkC32xww5}qi@XV;pX%oobip(O|6X0zH#+8rg!;X;5T0V4{!3n z@cDnR<$v*igF<&vQxW}+4gH%Zw*23)$^V8;tz7KCeb~Q!$j$5>zUK$k`d`@WKiKy_ z*xt_ldu{)1|A`RZ+(BLSdnEtv_y9?OG(aAp^qp1{fIGk%U+7xH>+7Qs008?30Q5QhkKQpK0N{T3<`e#hBhLc>kU{}~)}jC5Ows{> zwg>&I+i}8P-1NMCdwXgsHZp#1w1Z@BSZ59B4)%{<2`?meZ4k%gy0Mx#7B{u~C zWd8czUzXo<>-}HihW-}(e|h`=_4$AE_q}t85%~ZBr2{|?2rU%|5LA!_J4%d{qyPn5 z-;Njzyt&O6F?#JE02Rt4A&GFdVRvIC_@u0WDV&JpfbiwBpm*>J@ebs0@3`$Py#%U+ zscNerBKxT7=%p*u5jQ~kJ@Ag^W#xYBlBhmlE#T36;(27WSNT2m^XjYagKMblGM9(hnd6VpGU;NDt)V1V0)=VR|S)wyAcA)q(@3+J=pBl!vGP4iOo zH`3Ww0wIOIuE?4j;FuNAo7`}JP+!gbes`IQ1Z z0)Bl00&qXoKc3!*o&uhUwgbMt=3Y(TG+*Pfw(`E3KK!0RK4m|^-bbE*_gnV?f4=Qw z&&jV}uZov>#{rjLF<)O_$vaO6hU>js0hwRQZ+wq%?|Co1FJBj1M*-Jg!Qb}I%aN~@ z*1WaekDjC68pD?W;0Q&Sr2}K#)dZqh@P%C3On5o#(keYZ^Og=iz=w8`q} zIu2|?3vU0?#oxoiCGkOX5xq|JFqbG1WCJwE**%G@N2oshfrI9 zBIHCz=wJ~1cqX%ompgMN_c_nbKU+X^V8`au7vUddnis#sG43Ab?#pn)SXdx>$4i9x ze4~jdM7FHCMZ4%LO%qf}A06)<*iINUW-!tt(Gz9A0V+) zU%K)xUnjX_v#NqFW=?q~f5T9kyb*_!^$I@FSKT>Rt%%Vsso%mVdsOGs5!UWY9Kz{f zB8OEYf8~u&;ExRgc>1#|2SMA&RK{O7+1e4e&lQJ(et(mu2V%y(6hr;DCOI!iJl&kz zp}Ezhq+W+FiY6bu99w#?EyHdasr++HKu`zBT9{}c&8KlciE*LD{A!-l$h=TpjetgR zPV<`a(2_+f6+sHBm#GBrSkM6>u|NDCQlju&y?9b^14z{XmOAxl2k$UD{l5+QWT#Xe z_bweNC+thT6Y9ciXJIA;6VgD$Pg7hS$k3(V)ZOU@IU5rX%q=Bn3fQka1~QUrn3cWB%S%XAUAvTf>A=^ z+nvG5Ih!%JE<|d)~3JvdqeU!9=%sOr{}boFa1m zj?Z@>QtMpe6&_k9YU^@Wo4OyO>B9%7T5gxic|N}KfGQ|?Mm>~7hVqgq>~G9$6kDhg zls)J5V$)5n$u-FtgET8z2HZGMae0o2VwsBX)kigK5IZz3UPQPXQYq`D?8WxU|0h$?q{x|%|mehXdmSo`UJXParQVSmrOX#1uPg8L~ ztpwxMVk>2ZurjyElN^QxYsM~sln?)}v@AoqU4$;89}LK%!pz4mi==ELe1H*w$!3!; zO|3o;zzaDx!OH5IRRA{|GuPY`zox0;O`m}$zSgE<$iQWUh2Q(LS7Y7pwD4e3>k)%k*7t~l?>d# zvMrEwP}Nd_Y$5IIdYMc0)rbV}4u05B0aj5`?7QXM?uEX*#@5Z znLOcIDSTm8Zt#A0QeO>!3?lN>!eaPxD?U_7f%W(}j3BSHAE7Ja#O0ObYh!n-H9pg9 z|8!OfGY#`nx45=doKGu>a)Rc3e)J>i*pW<0oZz$+#@d_E)%(uj8xO z_dWrKY_`gpnYr}=>Ch6mEcVd+(yZl`S}n%{G7jGE6c<%+_7p(aFVQrqV0Q^iRE_Q%edJe1eUF*Jz)%F z>E2Sc7BrhLs;eje1g}k$LYAvX{AD;8;HpU;^N`rnB7RP0f;Q3Fcjw}AkyYya(mAkn zgIql7$RW&$55eO6jIpPXXp=C7b+6*Kvj;X^y!=n)%OcKD8(zN~*dba+!4_mJseg$@ z-6hCSS|BRcqTUly@^(rMs1v~QxUG&EBjL7i4GnAC*=2PEXe#nL7jvS!A#x@`Q?ge8 z0|B4s|2S;7485++{mJbe3k>Qyc0>8anB(V_@*0)swz_;2hCWsGq?|O4V3x4qK_tdP z@lqk9Qnd4eEhS4G(jH?A2T`7*TE3tByT z=0irjF+#*rDOy4xt_kIhiM@k509i*)_8d2G@s9g%VkTJ2EZ5*I4bhGWh8i|EakO;u zvNcJk+L!e&QXro5tJ8`x?&NoD+1Tn4OfT`_uVm>j0W8x6ZS7bfJX+jf&W5#Lva1P# zw*(4;z@JT@!}D&ADW+F)C7N_dxnE}fEq?fInH$C?m+bMLSus$#__lEWl7#Ydk|JuC zEg_6v^`D@3#wCd4BJ*_Wp|k4IW=;b`RsmBe(OkegzNbUa(X?FON~+WvqfBFXqQ-xk z@6+2AvrhJ?M@eti*VS!w70TOYnlKeXR$LUmb_NnDJ&V-DB=juJB_!h zWpKo1d*iXz|GZ1`SguNgs*oiIwR^97J!7-}Mi|5%?I~q6kfy?2ZuCeQ|Dgi|HOdKR zG>|wH0F;MtWoj_I}h+5Q+%=>B(KbjIq_z=X3~{2UY=F7$kT+W z4Z%hd&cIP+R{!Lj$$_>ZM1(11LMvEdusbSKEuqFa@H;`Lb5`vHu; zQXeW~16}xUANq6No?8GAHN~Uy@pG@pqiCf*|B}zRSc*Mawy8hsZ*=A6^7_ZeR~y%- zya@8Cfhhtxca66z1>>>=jkEUcU^$hR#^O}De!Ri9klhd-=V_I(*V_Q;sg!x zYC`Mo5q*Tbj{!0z141-MsB|kbgbI~V-Xn=G*)g4;Y8|gCG39?o4@7fx`;wLh0-jdQ zbmA%Y3;C3h=WHnFHA;w)cQvMt*q`#s*w_h7KvM6si`;iMQi{?nQb@FJqT-j$u{nBp z-?Oo!3O;N5N ziJL*Y6fx67`B{*=W#to~IK-S~gmfORhY89qkp;SQ1ux|cr;6+0BC8pkuNk}GemzAd%* z?)yk#~PPB~^L?Z}=y23=27%aIuZa zU;@f(WkJ#|3oy!ZjsJb@+!mtH{#?r+kK07l#$B#iyTzY`%y-bh&b2tb;X;i+x2TTWZrJS|x9m_TX#&w3O@P-Qmr~ONUrtcwD*3{#VL;K{4SPm@mEusz@$!;1f>-}&+ z39G8qhM7Jx;v@{nXrU~bmmA2fu!9Dn9l^1l*1@C&Zk5wuiQBN6Q5^Jf>JH9fm_}sRMeTbevRSE#-?0FDy7(Yk-lbova)3gpv{Z!ASet^DTqHNOxWx*!>K>?#3Neswdg)dKnO*4)cWkG;K9{@!npQ0M8oarm!wAAZ=Z3CXj*bY4cc`xjSn!=#(kEcEm0^+#g$>b z)SxK1{eATw*RM#5eL20j40{(2qz8pHbDG75P1%^y6!c}&dn!NnmcL65pmcu&1%xHT z*6@le_@`**gt2WHbGy#F4CNhJf7+b?gfx4T5lt&L$O5N3dp`UimY*4-tIcAotHcC2 zrTaG2K0<~sUvb^9@M-9;m(fJ?EV5er#XK$66z4>CM?z;1)xf(MI9C6CU<>du=|uuD zS`s03gjZ+08dgp5U!kVQDXJps?S!DxdX%6vQ6U|+xlVsV9<;K!-rGJISGKQdZ07H#78;S;zUg_CxIRjm zMciw{2^<#uftfPCpMgPEr+M8f9heRciZd2uk>mcc*D(`ljUUg4iPKB=Ei--jj0dn= zh=rhb*q+EFk(sT+8+l_$E^F=VF!Qiz|NO`5e^8rs_U(JHzC zeZF!MzEg+^Zvhqm#;XzG^BXAuJ*3g#(ZiQc-ea=kXGecz+Xqe{RN zli@(0HoNz76}9UK#ooy~A3ZEB z`XC!ShwjklgeZUQYEb-K3tkMVC<;}9&F=I@GZ!>CkapgcF>t88D%@|mrkR)!yUsqb zn%B~$O(q|qlB z^m_!)R@R_Ps!E4;0DJ>ec3zbc231tqTqRzU0&wD%1YcHWtK=1G3a|witAH}zD6bsgc8$f)%@HF%*`6oi+@3H3u8zSu*Rdm&Y0oR%&R~JrM6o>UC3ReK zP)gkLo_pHNp(rF6EqgFg?q zA61-6biMG=MuzBpuw9*vyOpNn(~ZSyKefC$Mgu(MAaUYm3n)gUqw$?H)tV9Q<%p}w z1EaX}(bWivpMB`I^wT!1!)0-dYes1q3UQ6}{Kke;B3J7j2eecdY2SuIL;L+ot@CmH85JFvevfT4R z)~D*z8INoph|9h+lCb(S4=K4t2V{49kP9vTX|FXUEP3**_&`cYDm!10&UFYx34Hry zk)<<*5w&|D|DwWV2XlpuKHV*sF~XdmXJGhR>| zzG3F)6UH_z*=g-T=2f~b7mY^-v(unAbT55|2+%0(%$SkboL&rdnne!`8XbQ#JEBzy zB<>v;gqETU>eX!}ydG_KWR*|_HZS}n8Hhp`2^PARoaHK{*FXw5%@A-h)p?*KtKoIj zU}wB3EY(&5evPPYUCV**HN~JJnwDM$ky>0aj+#o`BX>Z0kvgBFWTzUncJy}4io_ ztL*1c2;?c!xfquEAyHP71Jy;)lrzOlv!!k%6}F}Fl-#kqch6;rq_!R+l`Ljb^f0KX z&C=c37JarZda>}4l8wq3tNhkDT#L%{@$}reL=z>5Azu!0=z?<1IN`ts+RfXHZ1ZTP zMU@YbgX3?|R9yJE!aUk&wfF;XDOn%(n6j@A%$QP{8g0;|{!m`5=8>_FQ(68*UY!Nn1i!pMVklfkaTIPInuFOvnL)5}V2jU$CJF ztNeGl*KFzrkBr2$oPK#?IG%RgFzPf0=EI;=Z!iG1K`KD}|fk+XPwtFw$AP8{tKF)1nxxVlB(hRLG^df+6yD6iTQA68A8Rb z%7UPysBZW&E_6{W%%7jhHijg>C95i0Z|~dv+MS#cVSKT_4yAf`Kk2(-OIoxR_V6&# zAIHjiqV9wj^%^ooonIme@=Y#ybFTe<=j48=*Jm(DNYMMaw1rKCWY4P;cWAV$K2KfR zh=med8M|zgB_}!%cFywI{f#p+Pejp`Np*^t*J#!sbwWzfAuDS9@nKCaW%f2QobElbK7$4)wiuFBq=8B2V zU~x14Ggl6Q(*rIpi+^GkT1#%4gUDB+Rg*+)A8K}{wuE`s%DE7Ksh9#sWa$Kkazhd4iIS!sYslql00~z*4#doaL?&53@0%HN(2I;mtIYf$6prl>mA3xF> zHbodwpn%Kf5p<^pF2*k+ht{8x{c=j5E>A*LF3BsJfj9)f$E~C?g=zi040wFQ)*`sz zw1Xc1htIWyl~`tkZX7gq$91Gc#F3(F-m$sJ+6sB>{=iBlifkS1L+FF$=~H2xd8Q(6 z<$%B;!C|A7=QA!VMp;T6uK*Lbd)=${^**@Dyt7~kyf=Hyoqa%AR@&i9h^ln|nNg?h zp1r2b{W?uIcl{}cH&0Hu>x=%%!xRu2kLis&0`&q9Mk#Xy~hw+PuT7w;PKgj^O@(s+~Nq0+hl`88t z7SXjf0t0wIifB~lq1cvqg|vo;m$vz%69UVrw)1MGAK5ilW%M;*woFY>cc8%UbN7zZ zuT8hu%9}KDwr90Q+r4TGR3bL?*U|2ph@)MdpF>s(tKzwdf?KiNr4;=ff2ZK4`bU*y zlzsLE6h>%9v`f49&}$APS$IKz_QAY%D&04x!u)rxI$Zl(6 zeLDS;zIDCYKMGpAL}nOFMedg}zQo*xwjF$W@9^j2jD2JAkWstu^N6M`#+X)LR}INY zb&5aA8UiT+6MChK3t@5KtCM(>hVa$i$%^D)^qrtlIr?-C>J^k~7=j&hon!G2J?(-l07>A6G(ZjXd zbnd9aR^aMY*26s!dwWzvs~TpYpcZ@?r*J|wPkX~*n{Yw18plDP_bzzret}OyT(Q!HqbRuu>NLk7>{?a>OHbPxg;K$RicHJqGIyP?|SX#Fxo_vZH| zo|&i-n;|n#Rz|91cFil<6Y+)kIv&IDU`U#h20io_!Le#$ti0pG{OAb_dF6b?V9T7v z#f)3H7i((6qTkddRYoL9*HH{->nv(4Wf)cpwfJvX_#Z;9Gptr{{VjV{q%yH=gTI=w zG{s-fYksa6vy1F;+GfEitpfhwm#s+5zpapW&5Pks@?MP9RyftYMj!iD@?V{;-S(dt zIk}6_>{cv{cICgY*2n`)kt4B`>f`vsZT=@7|z;# z=oPptB`y&D(7gL|cJhhgtDFEh>(jQbd>8rP|CLw3k$ZmjJDKLsq}7m>-o$awQX zGpoK{I{;PO@t-o)_tMREcNRs$4Nu34kAVBX0ak09`&fRik}yPO!w^Ce#j1owIOHw_ zyLg%DNV#V={XB+1(@B}#5E(&+?)^nu4nyw1ne9im*WNP7;2v>1)A^umw6Qd;*!!YK zU1&o5i~K!}x}zmN@jQq&`6^}&`7{4j|lU4&q~U1@J>f52|#_BBVU zMn+*Z0GTZb%yLK)JsM`$gsPS3!U+I^WMrDbFB{NhJ`5^3bZEuftbdUAbxMIUO)spi z;3XfoyCx)7DYVvsm&PQkWneMPcFxg)>^uG?Cm|dMa8tC2QiaxBbPG!~yZr=dm#^oc z+wzh*3cp8Y#%eCwc6%BG9&y^ zpD63=i%}c3lyvGWY|!kGP}3)iQSQV)fU9}F<*+AboB=Ir1v>|{SG)cIM>WyT+b*}K z26S9QzUG&bu@_V)=3cPYjG%GdS+3zr%rjBK%_T)FW=5VV?V(b(4wNWJN!Zrl(V2#; zQMmA70f80j(OuxNF-wQ8iXHClYlNb$|8hc34=#TTBh%XtMA7H5xriVgF{Swb;Un#o z5GPV${gW|615i^Zbnt!<@%{0JTeGiJd{(D~VlX$2^Y4DMB>4dkG4ChXbb0@u6y--O zjvB5s;0*)6Wy!xQ%QA8z(fd;bu|XQ(jsvdy5F!nZxtv*cD{5SBetAys^}Ue$g0;@1v>V!H zT^e@4)%5U>YM%ih7H@fv4P(IpS&n3c^oM&a9Hj<K zdeJg@<-)M6{h+NOtEgv-XU9rX{Oa=UC^WVtW-3OaUQd=j~?JBSiw&z+Ryb^Y$mFR zL>me|80f~))|H8Mj#G8x?T@7B`vt6opYiiTSAEs|cEWIeON_%h4dfMn{@F9T4DR&q zsY)38LN7$GJ=~U7jLB?lF#f9;36ZXt7F?4@5dgi?xXdYNsl}*s7}6OHsb2heAlwi& z=%b6sKsKZxtd$YVghpa%6kAlAd-beD) zTk$^mi}@hD3J&zr1ofZ3=wT#lAImD4r$;wCoe1pU=cLa{Qm*w<*M%#=RuSutH z_G^f(ix*YV0z`D#zMGx!-y-g`~+jlO4yW(xV=sG4GMhPFI-V?UVa zBDoRL?t=?of2C()7E8ev9vMg}H5+{iC8|ZYO@ld|7k9e*hkE2<~cQgOwZ~gU_6e!}c@{7`?q}w9a4c1$;}O!m!Mqt5o1i^z+*? z;TW6of+${#}iHON%8DbM%3EeHf`~DTP^( z19Jzj{5PIzMY^~fkWzmGtL>A3smUOID73XHBIg?-!Vn<_YzREYI~On9*W3e|27s}xpbTWKk`3`Y^N3FQ|;-ElY~R zVp_5df`tNnNmh@wl2r&BiWm@IJ|12bQ6b?Agfnu3N3}mvU7#J&9<{IMD^SlLI&DT& zhSG*&J3P%8C2wm&LsamTnK{D{vJC<_n?K<6CP~m)!1qal25xEFtLE0vusK4*iEtTUAdgA znQ!wV*XW_>4jGeZ`~71ra82Nmt>C<4i+gG6CHr*faMr`L{0s29DwLQ|Tqqed zO=9{%%P)V0I&XW312gmb&3Dc^Z*%PCPqQa2k``EaRf$frJ!g`I_|lHyTSw-PI=oU7 zi=Z4Zd&y>0qMyupZSV!J%P#lmAEEX)R}0vNsq5})B7nvP6A1DpbuJEkEXA?)mDw}NxwY3iR#kHnbgErwTanHDivO$qA;fRJx z4!o^a)LkIY{v9%whF_1?%>-Olk^|vT2zz=uryJ!@!OrM&OnVnnIth}{kyI6~o(Kz7 zI(sk5Q|!7wIq6l7ot0x&(Ioo28|`(;gkX2C<7?Yrj3h{8syxf#VHA>-srZTs{k!aq zX91lmtQ6rWR+AtDVo)-Sx1DD89w=`)=V3-rL}ZCINR}iVQ6ZslxZOu;dvAvCF(ksv zLpxlY+nCPqq@LeLvd1jXo8gXG{vf_q*zASpYYE~a> zEu+fZ6K>o~PUQYUDU0=y(oqM!ZAFYH>C61~$f+Tml^`P>`*3Z1fEB2S@Abjp(>){| zkHlbY{;QS%DX5HJXm{s>APrHdEU2Ek@3$g35u8$X*mlQ`>x;l{poiOs@0U#MgW1~Z zst9|V_^+ptRG4FZcF^@X=`N#1<;f7bnY_AxHR2t?B6A&B2uHm4lfgeUNbqVglD>;5 zE%r->8W78o1hxgyAXhEBJI(iB@ZP#MLe{+>Bc+kQ4+hiyWMQVuJwsE2=d6JPpG@ej zL+#ns#1&+{W_4X=Jnr?HytXIqHR zZ@}dL)YB~ZlWmdQA_{Sayc7dj4cEq6D)piM%3Dy17*ed-D=fpC*!0IgjftN()H{MC z8-q-^3Nv&58+m9NdS`x++4|%qV$KMF9K?Ac@X8_; zIO)jsCr_u4O77X$W1)hxr4lhEPBT-MzrM*OV7ox z1iCwzVNXKeDhi*(^*FB+0xf{Tp6#-?b>xfT8@yFT&Pb*D8Ki_x_1&HE_Hx|{GK zkcf6s7==pYJcx{!RFI7BkKZ*6b*zO+b+6kDkxnoYGoXOfWH;hsA780|XTb5Ch=)du8cuwg_tL;Z zZSR3x2;j6~QlrG8GEICtBx|d>o))ymI4fsU+*srZ2CJ057g5ep^BJuXx-YxF@lhr5 zs{$hTh9CEIEN54wD*+|@CSE<1Ww~Iy2|>3DC!3Dp=cklHHU7V}6BSe#SN0QE>X?Mz zp$lx5h(jj@Q}ZMJQ`HRG)N#9GbKXnpA_67T7S!ji6VypFYiH4V43`=h+)%<}HCyN*`%&8{hF5>>0+EF&Dp*>@kh$TuQJECvkf}ZEiUIIgHuShd5ZkXn8ab2~f zmnG$CxV|}I6fq|rhd-E6JLf=g%hZas?FtMJ!#AsOUPK$H`O9Rayg&pH8L2nqp!Z<& zf(%Ibx|dKrtns#g9?3Bwz(l^v*&>lpRN!!L?pPwAVd05Q9Hq^b#`=<IODBTyML#|=LVCcH>2MTZ~CC6~wtP0uK^O$ozjCno$D?)|bxUj6gU z_m5ADqUm5d(F`2OdEVbseEK;FhFeu={{r7grQPCGc|%Il13h=4lqsaBAV>iU@~KI+ zTgx140P{OR;-#meyG3>rx=Yj+V4YWchXr{GlE%#@3GRC}MI z_OL~Q2?9y7XHhFE0r(aV83lu?BJy&616ZE2uV9g&<9^}g`X*x!%pW5u(ry~2nFhBbXmn-ezVAT zqFmoa+lfHrO<5#$4`Abo8GCikk_Zv_;Bdbri2?y*N5^^!M1>u77ogV*|D>E}R53M*@6Do}M>si586UVyZ(G-w?j;bx2Ts3|mRt^{*s|djhp{qN%<;$3;e+2Je$X$n@$@3rHT{3yjlGGqE}Fs_HU{m^1U?o9yRZD#%5a)UUE>7VGFxxVf*~r$ zll0P64(F&35D!=gXy3#M?{1BOI^s*^@kyf%3RA@R;ce^G)AE|JO(i)Jn-74xb!U`iK!oEmeJq2cQlT)!^oBvkn zH@?10m0-nP8sm#BFWC8s@*}$+-IDD#B^4a00^<--8thL3Fjj^BU>A*^WS1l~37yfx z%1nOw2`J0kxlX^Dm0oOE&%3~OSM@21w4^_?4as5l*ZP&aT9Ktk4^Hsn=scsHH{b0q z*Lwp7hxv?`t+u?z&W|w1Gl>%QrZB`{8rTaQ{8NXw*@0kj!vT!_I|<2z*o98Q?9sGP z=ltW>mhjvBj5oGR*(~td9b-~+3w?BlO_1ah1ZE4ycw#(cN$M#O{lU6k zey`$5kNW#%;kwn-nYUyr4?G*b$H`w{@=w_X+Z+_gc8xj^2K^Dz;#lVB|c+f=OF z(JG(5M?<3=IbLZ7x{0*QRFA&Lgu;1vnYXsD8C8AD;!o$2hec#D{yJEh#m_>Hp1jFh z4!*4`L^TlubK#glEMqCk=0Trk$7*&>$AuB&7ZNEvb?C-W?9KJ^dkk3|C`=sM>_swq zv{e}muvbW?sS?gQg*8sos@a0JOX8-I4oI`ar)DQJ1oad5jh_V0qR`qP-d+LcLf$AR8 zQI}m9xeiaGX0X&H`kTbxE_%>(R-yC9B#lbsg~l-2Z`Sw2E4L^`Q;YAH0N>$*b?Kr+ z{vO|gpKCh8&pfyU2wHW3OZ1m*4svU_~v^h00!(nwAos)g>!}az#%jA^ZTJ z+a+{)MrkA#d_)=|08A||((Dz;2gXoxD`86>Y2huYipO&)lY-@RR>I}HdJCF+!hTT7 zuq;}~%_sBh|AX^URl(HlC~m{WiLEoLxoNP4vDpg?3pl&GZP1Lc=bxZyh}sZ`Oj`&M z8OJj{G$&aXpYWc4XJUJ@E^h~0LB|bOMHV0^0j(Cok}eA^XAb9CwkPqxeR~KPQ><{n z{3F5a=X}%D#lubIP*@FIt1Jdyv_?rH{;!S|4Qvqt)Pz+L_3`NEUD;W^GJew4_3+DG0d9qk^yd@p% za^|B>hv($>X(nS_7kAsUz|opxO0{;Fv(I95m}uacP_Bp0HHMfH4!*rk_`&JPkgWW+ z#FD=`E6oGM=V0K4qz8=??qT6vZVVX)qlM80@?w^m?eGO6k)5)m%OF+-I3h}PvOv;Q{FXdsBML9DBIM$Flaj&* zgVSXGfCJfD-0Vu3z-m03N1bv<3Y%AQszrj6b`gdHH!fv=Wumf z1MqMDy_FVQ3e&u>ZTiQ2@gs!Mwy(p>72=gk>qqfwNcdN|(c2kwvGL`)KBx<&`3l8H zqRf?T2I05+oGg$mo={l{|sLzIH*k>fmDZhvQrc?Y)9QAXTG7FRZkrw)81q^R|*4 z43kj7@vzSAE$fF;mlsTahgdl@T|5;-6|oQiftmR{WZJX+Hy3hSpmE1cTup3?t&Y}C z&#!^cGJpC&f=h$iV74MDb#hr&;@EYf8m;iWig#E@w06D2z=chJs*_-@*nB;pnT=>8 zZ9B+8CB)?XCAX^(7|yhnhkcUZPTild(}YI-GqJ@6Q=ztNW~271!II@jrNnW^Z9OVA zV03Kgj0LDfF&Oq;RP+N0d_fv$X!CG8hRaWh$o|O_N-2r#i@5TNdunm)t+12c=~&hk zJgYu`H{Q7u`xY^qb=< zy8ixS3|7zqszB&oVaoccbUkRPo|t-GK`J51IHakoXrk6rh}sA^y+}`d+;FKIVLHR9 zs`-I1V%!8x>#J}bp=Y)dbCUtZLpLOI&ikDeN(^S*!th6QB;&Zt6JN+Si+Gh~-Fm=} zO8U|L9WN!?yyI(o-&|lUCI4@#Nz{ZNsV;6#95(nKf&b@E zEutc@%OZ-NiF0mze>d)s&My_`72>j-(c|R!C3TzbK9hPxxs*@FoWOh8B#x>=`_25% z8vB@M=8*VK1aT3GUOv>C*MObS&WlMtE*x}jI5Zzsd%hJFmg%IS6W32e5dbFj?)xPn&ww}euf|Sp~D}r zkBx@R=!$^{gl-G=TbZQ>XK}$9b!JJwsdCBefP=x z$8_mVn*kympBPxq9h-YOJ*>-^)>A!H(xk}yF05iT?kaczTHgDg6l-B9r@E^%*&HCt z-SGVEx!tuzL!HcVFW&3Kaya&d6vj%Gni@QRx1;x=tnPn_EP`e*)ry&w>Jrr(sd#+m zjn}g$-xO--FpF=qKWy1`6L18tNHFC)LppBvDh9)#YNzRWBQ2}|p+k~0TZUt|BpE89 zQy0;V2@=%{#t)YxQp3?|KVB>@AXv<7nY#+;o++#oLU0IS!gXSiH_^zS8TKRSV+a!= zEI{dou!+=8^WI`0bwF3naklcc$BvMR&8O)#hzV>Hrk!X%IDEVuofF3s#2peGD;2Hp z&1_GHV#AM`9GEppgSw~}E^OZYDjP92lwD~0TBPQ>^Iq0Yxl6Fbt(?}h%A-YreD}W# zn9D3|Ru;tbkQ-Y163e-A<5e+P7A=6_ggVh=vd0B>_V4~ZKscDoA|!K(Vk~A$BYp2V zq^XKy3O!#gS!jsQT}<(tjx#im{q@nNL}MBz{ny?}2uAtFKu|lwf3UwAaEu>&e&`m0 Q<%9iv^nW0SvJwLPKd1NtxBvhE literal 13406 zcmYj$V{|1@lkJV2j&0jk$F|LmZL{N~)3MR9?cCV5ZL4G7*Wb*WS+jqgAGK=Nsk6^o zwQ8%%NJ?sQ003GNqRN`eJn}OC&dh-#i2w}*@>Y9t9Yql6jOx1TIWip}v)aP66_;h{ zs@wQXVdpaY*fO=$ydS-k$Q4o|bs(zKCd_6=)(-!Rf@sYnYe1$VU{#_D62nNMW-#&p@{edV&sh7W1EkQAmV3G|I8;@)s_r9p5mA`sdW(6|<_FTyfBWP;bNh7=(Wu0(YjH_-s>P`RX)2wzp<)Gt4X72I;h&*0dHyyTi-4X{{!5K8 z!`sj-tDcZGQq&^Sg1z3NVlji8EvARfacpwCg3G=o0Vr;9T<$Y9sdkmlcuv&VSgm5O z<Du{5S`Szyi14!nrj)S(u%u-I1MR?EmZ+rnjMlCb!P{EQ6UNjp1s_UH_q zwP;nFM#6Tk`NRwn7NP?-af_JdSzEMw`6yg?k&PDKz)^(;e!C5>_#_aqo=XoXewE9G zqMqvyGhyB~npzf1P`lG^$DxVt^9pSJB_B!KFx@Puac3dho?BRLFG!qN7r4qI}cj@8^LM@=l zKx)1_E)$f;8J9Mjt7_#pTn=c1po;kNnRb8}HdDJFge+~^hy)MNz^TV%J^7ePz660p zgH)qjH3}TtSlv1$-@ToBa&l5R^GeoI6?eT_JzTw#dpUo3a+N5oW02Ajn`OE;ib5uF zka%r;V*iWZy_Ss3Tq5yMI#ow9ny-52;P12VVpuqPgezGA+0Hz2|iGO z*qlI>j%CwEr`}s;4EBIj?rW+gVG4KZ2$fH?st8uuFM|-62cDj_3$E>qmjMs{$U$)j@rT#tN@}GMot#H8{i(N}f)rHpDKXNkqY0gH~AQbL4a&3cWkTKKy2{Gn~ud zQ+5AG8K9AIc#)Mo8*31L35@7Dm{6V$K84q^weM+)K=r{8-@<4pZfG`CWEO@#gb`r8 zHrg@;3N*9YfVc@hrjwi4Ee&x?*hT06HX z)X`h7?aPMeBXL2PuYYTa_}a)iY(Oz@Y2!kui{KxjxNe9j88kuklq5a63Kr9q9J{Bn zqo6(OSr{SQR#|Pa$A`+yxlU*TA#S$V4{qnmtOuCJ@|b{FYXk*T;V!J)bO}1JBPLCFJ;BElu&y5CMNzIaCJn(U6NR_=RSsoP#u(*}_=$uP8$M}A z`nf6s+K%(XB)jo)!E}tNE{EY$)z{8mo&af+^(13;lsmqXX8ScC?~1Dg7Y#R-hI(cY z7E_6}XwYT^HI=vBg52*NlkXWeK!%Zojg%F{48(1)wPnThvhs&Y6j~5H* zAWZ0bM>AMZcQxR!NGT3~!f2FC0O$@SFKFjBS_v({u#zCJ)F&#q&*N%^=8K(7!}BrDB7A;Fk_-L1P99%M3XtI#I9} z9|ep)4-z0WbqqR=5KH)+)UR%$?@0w*!-uz;R*Ms70DGP0W>rPw9&(<#YWj6)jwQ1Ew&PH^tfiK?xhiA*?hEpDa>?*b=2DH;= z`xlDYT(N;$XMF29);0XNc6Q2>LB^nWq0iqBGSU9>gDf9<bhMXz<<%eWwBb7(3&>4F#%nA9C+Bgjz4f;o z=SZXo+k<^Hm;2mb*3)HO)T_;bTG^qy3cl6+W=+de6o1cXjig1A)P2o=xFiTm-jhb^ z4g)i!OzIjRfM5=1(_q`C$;HzNSKr|jF`RG6G*F^{$O>Z>s|ki5f6=#koRfG56yo@O+?y5_s40@O77DR}Vk@w>0KmI)U3TuE zgN9n|u*ya=-JwEFxAS(h1E?J87P|F11HX?><0ukux(fZd)Kf|7=v-}c7c=k1$f|5@ zad|!MbTT0@X$|xCUD4R8%l&y+B`iW>(HE4hyvY?rdR`T$_?X%?FkMJ6fqQypOPkq@ z^(Xq{Q}G%K0zmTszYO;bCjX-ZZY?`FdMYMlZDbV$B9uS;{sfyB8JYac=avH7e79yd zdYxz_+%7TWtcGZOI7h5IrHs35k^Zh2mvwhLzos{mLq25IIQiAC0e2-jY8iT8%H@!0 zrnO}Te3&WW0Ml;@6x>5A?{ZL9Ol-)|q9lHU5JO}wgr|S27d$v%hUC)uREerQ_F-{6 zfUWB*THg_M+^H5~Qj!4HrNezlFEixHgvD(F%gTVTVQmSkjX7<6u zatOuSvwUVL5R<>~DN)q4&$3-MM=~@b=#-_Fr4xkswsm1R1^Mv&@bQM3(^iE2#u^IS(7>0r_E3_;w?S7ev|Hhcs*@_iuYJ z#=;=`;n<@u!vbQKZAf`_9V5!<0xSA7s)-3Tc)8YPS$iHy%+OYi48)ZVF~1ZZN;^)Mg$!3_5tV^cl0!RG4*4{=zZQ<_{vp0h~U;*o3H)0x-K)> z;{vM*+K}C>6E~h=3(lul(;^$+&)7htuwxR+D1=?1Bq?RWA}^EBRaKu2O%(|HUSzGk zw!d2=du|o~W>k?Kv5MS6oG{C?zXaP^ulkt;TQLe}Bype6+rHmRhf-)3@d&xD4RjdQ z8GFkU$ytTB1c3%S(Zyr-l#iVO`-QAp_U*pjU0R0fC^FhI$3mXGgUBJ4&0i6E7Ox5` ziAeJdodgmM@wCY23HzAQ-tIv?9ds_W?#c?H;zlu*YI)y~hp5VZND;}lEmIi`%jYyL zBV){ztS*PT$Pbbe1Fr><;RcD(b}>XoiMo~$BLcpSX&Z2jX1DS2g|0bNJv0AE-_+|| zqIX0*4<9Gzk=k~!!L%7PP!TrtN-b68TT<@Wr0`@|xb|On@VW{!klNQBS5UF8s4Q*k z9b$Cw7y|GofNttRoDd6YfVMQI==LrSyF z($Uqs*kthRqJAcoCKoOYFR#(j_T#>olU3T)HWNn-#SE5SyVtn+xnVn6)Tq;O|Ex|W z1&lYlt2cm6)u)dLuPq+ufCJtdDV?K9coubfS051w2chy>G#~dr#Mr50_=Wjci`inE?T>*gy!|0lH2-nVP3>Q`p9StrRqWtS1mAD(^(Xj{0 zKbcym3PH+eh=3$FG%Zm}%abva19lU?jbU0Os~^7J;VYZWS9*r3V*3~(Z3(^^N-Ig|1x*$0Wj$$U6brFOAND51A|0sfJy@KI~#e| z)~8CdTJync34JG;Aq`3$v)N{8e+Prgp*NLt>}MU4^5G$s$Zb z?BeQ=0S>Xq5z%7B)u?q4l_7x>b}SP%bi71-u9X3WCaE}5vE~x6+5*3q|OA1Yb}+{hpa+wC#hfC%XuNzdiuh6+C}W=Ia>nr zVwZgL#Abe=7L6(X4E?n3`L%nb9x}MGCk=!S>j=JseOhrY78BjF=kaif;>bGisK|F~ zZ%4lRq2wI7Gh$0zv@nRBrfHarcMp+-@NweX*a9e(J*P|FDr}!=pW%k8>v?&zAjuJ< zo|39?d#>CI(b;@BI!3qbZ%90Kepb><5tAFJG>c{*k20A1&FMT>01)oE z6w5q^$E&eyDV}T^{>RrB$IKk305wqa>flM7hP~-H?jZQ;a$e@|c?yz;m=tRtsVd7|E%BgN%KKd_F40IAX8sBs}^^vv=wmWbP_ z$O-IVJhjla|Ijw|eCAKFWJEM9jjMhts?4px5V@Qtv3ULw->FP`zUi8FeDWs?nOpUI zb?>tVdThwR{5zc|{Se3*<{%)w=O*Fvz2;Yp%zNBe41BEN0WZzr6>~K`W88Exs;`o< zXo6LQ^lQw|k9n|h_Dbm-Eppfq9fu)0H3AY*AU)x`Z?O*A^D!mK)bd=ADvn=2h zT_5wwJfb#xrJ0b?1ZktJ@KG@yFS5&%bs7blSt1$|7KF`&w4*sS7|E6jyA7=Rn#RkH zVDm@50hT4n2y(G{j-wjkdRVC^(UEh}2y*P@2x5o^8PKq+c4zrub$1GZ=c91b5UiI9=tHsw@g*+iLBlfIXU$p^oZ|=I_nPU_+sn6q+nlY zJ9;Dt)m1WNi0P9)`-255JvIWwHA#Ra3hPU;kK7eI zdG9dY7ck|X9cZU4yLQ6`XqJl@=+VXy z`a?9W&J0?P4m42o)RoISLMUEgx38F!xz}g$@{g7(ZlEE5*Q+AZ^pjvSDhu{B2J(3Y zFoOTSqH^LD?nTiWcAyApdpwQ{Qqvnv%H|Lsmy~`~_|^d*VU7Y!C@XRgYO6I(;NLr$ z!GIHTIcZk`8$a7V0m#`=o*bPP^R#HtQz$#vskla2$S=lFVk9i;2tM8ajJo%66XmJ) ztb$u49ZJehzThF&vL8s_UX7|vNn>?4YrFD&bb&>~(FIy>IJc8TmL8gUsE#HE0Rvd$ zYEKbg>Ui!r70{yFle-kTQ6`j=2ND7e4S=7PQg_Jg%9y_OLXS^V; zYkwX{UnoFQUt7VQw5(neGk@cA$rR~*SBl#&QAF0b;)`9X; zudAvpX&qsxxqcvCm6)=zVWg5YingeGN?lMfyP;oRk1xj8$kAg5XHx(QatOi#qt-kP z)`}SoP*gYO3Omf03ENwar@S{f^>s-1-CT~)Z;SpS4N~dSP!87{vZE4ydbs^iaPW_g znt=ysdwm#yiXSvK{TSR6o?8IDC!$)tIMWhab`t>aXrs_r5-jJRDoXjLLs((O9QsRL zy3|wvsz9Iw2^0zu=V&>K(=Z?ly688romQeK7FZby7-q#G@iw5M9(%VSw+MO$EU$3{ zO%n7w25=h*2ElbW+X&D4Aim*bCa3JXs9we0^CCXzu=*s+PomPSqnr!QL+)N5QFQba z49Kma<{nT#T3ynsDb$7t8kLCvv%jZTd&$b+@(9Yy$Va1J6uZZVfnB9?YDdrSLEe8I ztZu7o!?(Wg5)1+bqKgNTE)WDg2@9FKeEkAYxD-iFD8E&Jjk{Fd(Df$k4M~3A7>B%5 zWZtKb<}q8m_$E8_PL{Celza^x;#3w6A7=XK2&)@x?@q7C07-iYTb3N9617M2eHtU^ z1zdKfNYp-M71hFY?oF~Y-yEFdXAqxKtOer7hoyPDI}#heOcyw?33VcgpmG^7UAJ=a z*dbUa-{F^cT7Z4*BMoO#AK*(nW2<084`9u5))Kdt(gJUjck06q&f-UTU8E(+aSSuv z-!DqKTnTzEcId$;@@w5qI_C?rRjV1bQ{)Taj{5n)T>7Aqgp4ekjpG}9OIjja8vPBt ziNy+o+g?V0xq9$(&x)EHF5*e$yHG`Skg$l~;0fNbBuV&WauU9nw=>w4xLa9CP=hkZ zG04bEG=iLvzmqWtqgavB#}xsY9FNo-yI$h?;s@NvgI{T!bS9yLwB9MI$Vkl(k+F#! zEjircRMhv6?Lmi7Il1-cORPW3IbHJ;65puDJao9jD)`@`Xg0f{m4C^Lee=^Qace=B zLTOvTTqKL*`O@bOt@pcAgfKAU2IMfO#BbObog%1N3#t zoZaqJr7js$mA=Tl*=NsK<}4`aJv}J)Iq=Yesaifw>N4eW9iD(-gi*HiY_^4Sr-oWW zo&sARNf2I~f9sIv^!`Haw@y|d$e~sDK84syl)TdlpH))%7SVa67$>Zf(8Z8g%GJ77 z^ihwtXsw+-%csr*mFWF%x-EGQ=Wol5?0rlSPs){YaOn7Hb$`{d-p^Vx{vT}vh#+?resQDV9 zJUbe4Y&z??a(kdiYDqN8khZpBGT*AMIOtI~h=E&r;tcL;0F(Fbljb+GgJ*2?mpomh zSyOb;bu9&CeX)cYf2@tk2#z>uSyPLQQQ`CYnMwvcQn5nw*jg`oV!@pLq-I$glyhE| zm2nT~&;*^~b=_kQ6!1$bRaP;o`M7qi#JL-rW$YkUOEiAj!G+l|zsGPhS;PJHWKVt2 z`+Joql#?eXn>}>!`Jso&+)13*59x-JG2(19as_-1hu`EN^I&7H;jFEa=mFBCz?+pAh3p7+7 z9LbB+D=nCM?#gSi!`_nW&tP1|PjNZ#A}9^^Oos<;%e}k>e0F_3dYn6Z^`-G?8gp?A z^QU^)E4}ejT)l*0xTNO`&F}i27k4}*;rrWb6)Mk67*@Z(yCGQ7j;_A${Cp;O2LWeZ zI#>dC$lsq0@Ri7D7xOV>`r@YO3LULf+w1QU!=jS89Q18jlyS_T1E-`Kc{7ScWv7Zq zTCVZB56y~M&19C;R32t(xOpE>s1s#qs`c(YHPS{=WbT@D5PGNso*XK-5M~Jc&3F2c z&VEb{qR8s^dMP79q5W0!4+EnW8EZ}fGM5#+fLk9iy07WwCU@7%Rcj2ek5t`|X8G<$ zxJ9HgQEJ0eMROtNWxTgpeAXsNU z8bvoIVqgs}U+Z@Ht}HX{``*)U6PKwk=u6Rca_J67C%Q$OLjL_NPoZ39PJ88HCaURl z^>>0o1~09}^LcSl7(O#SuAVRnb*2g`;aZY7Y;Y*g@wlnAB6{%Us)LzQvmp6d_kuh# zS1f=ODyVc~na*^dk1ZhC?%->hGJ`

  • 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%0DHIRJmxa)L-ZRqhwf%6)zrA+p8tSVm^2!+;J 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⁡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