From f1f6cf4fa0fb291042ae5324741eb97fedaeca2e Mon Sep 17 00:00:00 2001 From: Walerian Sobczak Date: Sun, 25 Feb 2024 17:45:06 +0900 Subject: [PATCH 01/58] Add missing Ctrl-click equivalents for MacOS. --- getting_started/introduction/learning_new_features.rst | 2 +- getting_started/step_by_step/scripting_first_script.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/getting_started/introduction/learning_new_features.rst b/getting_started/introduction/learning_new_features.rst index cd458f2a680d..b6802b6b186f 100644 --- a/getting_started/introduction/learning_new_features.rst +++ b/getting_started/introduction/learning_new_features.rst @@ -56,7 +56,7 @@ A class reference's page tells you: `_ GitHub repository to report it. -You can Ctrl-click any underlined text like the name of a class, property, +You can Ctrl-click (Cmd-click on MacOS) any underlined text like the name of a class, property, method, signal, or constant to jump to it. Learning to think like a programmer diff --git a/getting_started/step_by_step/scripting_first_script.rst b/getting_started/step_by_step/scripting_first_script.rst index fb9b2f0fee07..66e2129990ca 100644 --- a/getting_started/step_by_step/scripting_first_script.rst +++ b/getting_started/step_by_step/scripting_first_script.rst @@ -245,7 +245,7 @@ our sprite's rotation every frame. Here, ``rotation`` is a property inherited from the class ``Node2D``, which ``Sprite2D`` extends. It controls the rotation of our node and works with radians. -.. tip:: In the code editor, you can ctrl-click on any built-in property or +.. tip:: In the code editor, you can Ctrl-click (Cmd-click on MacOS) on any built-in property or function like ``position``, ``rotation``, or ``_process`` to open the corresponding documentation in a new tab. From 3a94ad16910f65c903c51a4de100493d1b55f916 Mon Sep 17 00:00:00 2001 From: mrSparksle Date: Mon, 26 Feb 2024 23:06:32 +0200 Subject: [PATCH 02/58] Update TileMapEditor keymaps in documentation Docs tutorial default_key_mapping used outdated keymaps and editor settings from 3.x. Updated keymaps and editor settings according to bindings in tile_map_layer_editor.cpp Fixes #88781 --- tutorials/editor/default_key_mapping.rst | 66 +++++++++++++----------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/tutorials/editor/default_key_mapping.rst b/tutorials/editor/default_key_mapping.rst index 18f00acb507a..91fdb50f5b57 100644 --- a/tutorials/editor/default_key_mapping.rst +++ b/tutorials/editor/default_key_mapping.rst @@ -454,37 +454,41 @@ Animation Track Editor Tile Map Editor --------------- -+-------------------+-----------------+-------------------+-------------------------------------+ -| Action name | Windows, Linux | macOS | Editor setting | -+===================+=================+===================+=====================================+ -| Find Tile | :kbd:`Ctrl + F` | :kbd:`Cmd + F` | ``tile_map_editor/find_tile`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Pick Tile | :kbd:`I` | :kbd:`I` | ``tile_map_editor/pick_tile`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Paint Tile | :kbd:`P` | :kbd:`P` | ``tile_map_editor/paint_tile`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Bucket Fill | :kbd:`G` | :kbd:`G` | ``tile_map_editor/bucket_fill`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Transpose | :kbd:`T` | :kbd:`T` | ``tile_map_editor/transpose`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Flip Horizontally | :kbd:`X` | :kbd:`X` | ``tile_map_editor/flip_horizontal`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Flip Vertically | :kbd:`Z` | :kbd:`Z` | ``tile_map_editor/flip_vertical`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Rotate Left | :kbd:`A` | :kbd:`A` | ``tile_map_editor/rotate_left`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Rotate Right | :kbd:`S` | :kbd:`S` | ``tile_map_editor/rotate_right`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Clear Transform | :kbd:`W` | :kbd:`W` | ``tile_map_editor/clear_transform`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Select | :kbd:`M` | :kbd:`M` | ``tile_map_editor/select`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Cut Selection | :kbd:`Ctrl + X` | :kbd:`Cmd + X` | ``tile_map_editor/cut_selection`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Copy Selection | :kbd:`Ctrl + C` | :kbd:`Cmd + C` | ``tile_map_editor/copy_selection`` | -+-------------------+-----------------+-------------------+-------------------------------------+ -| Erase Selection | :kbd:`Del` | :kbd:`Cmd + BkSp` | ``tile_map_editor/erase_selection`` | -+-------------------+-----------------+-------------------+-------------------------------------+ ++-------------------+-----------------+-------------------+---------------------------------------+ +| Action name | Windows, Linux | macOS | Editor setting | ++===================+=================+===================+=======================================+ +| Select | :kbd:`S` | :kbd:`S` | ``tiles_editor/selection_tool`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Cut Selection | :kbd:`Ctrl + X` | :kbd:`Cmd + X` | ``tiles_editor/cut`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Copy Selection | :kbd:`Ctrl + C` | :kbd:`Cmd + C` | ``tiles_editor/copy`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Paste Selection | :kbd:`Ctrl + V` | :kbd:`Cmd + V` | ``tiles_editor/paste`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Delete Selection | :kbd:`Del` | :kbd:`Cmd + BkSp` | ``tiles_editor/delete`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Cancel | :kbd:`Esc` | :kbd:`Esc` | ``tiles_editor/cancel`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Paint | :kbd:`D` | :kbd:`D` | ``tiles_editor/paint_tool`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Line | :kbd:`L` | :kbd:`L` | ``tiles_editor/line_tool`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Rect | :kbd:`R` | :kbd:`R` | ``tiles_editor/rect_tool`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Bucket | :kbd:`B` | :kbd:`B` | ``tiles_editor/bucket_tool`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Picker | :kbd:`P` | :kbd:`P` | ``tiles_editor/picker`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Eraser | :kbd:`E` | :kbd:`E` | ``tiles_editor/eraser`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Flip Horizontally | :kbd:`C` | :kbd:`C` | ``tiles_editor/flip_tile_horizontal`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Flip Vertically | :kbd:`V` | :kbd:`V` | ``tiles_editor/flip_tile_vertical`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Rotate Left | :kbd:`Z` | :kbd:`Z` | ``tiles_editor/rotate_tile_left`` | ++-------------------+-----------------+-------------------+---------------------------------------+ +| Rotate Right | :kbd:`X` | :kbd:`X` | ``tiles_editor/rotate_tile_right`` | ++-------------------+-----------------+-------------------+---------------------------------------+ Tileset Editor -------------- From 89f51e3eec22935b24de130e31b3a0a65d9b823d Mon Sep 17 00:00:00 2001 From: skyace65 Date: Sun, 3 Mar 2024 12:22:24 -0500 Subject: [PATCH 03/58] Update multiple resolutions page --- tutorials/rendering/img/screenres.png | Bin 6201 -> 0 bytes tutorials/rendering/img/screenres.webp | Bin 0 -> 5014 bytes tutorials/rendering/img/stretch.png | Bin 6378 -> 0 bytes tutorials/rendering/img/stretch.svg | 1 - tutorials/rendering/img/stretchsettings.png | Bin 3111 -> 0 bytes tutorials/rendering/img/stretchsettings.webp | Bin 0 -> 3334 bytes tutorials/rendering/multiple_resolutions.rst | 18 +++++++----------- 7 files changed, 7 insertions(+), 12 deletions(-) delete mode 100644 tutorials/rendering/img/screenres.png create mode 100644 tutorials/rendering/img/screenres.webp delete mode 100644 tutorials/rendering/img/stretch.png delete mode 100644 tutorials/rendering/img/stretch.svg delete mode 100644 tutorials/rendering/img/stretchsettings.png create mode 100644 tutorials/rendering/img/stretchsettings.webp diff --git a/tutorials/rendering/img/screenres.png b/tutorials/rendering/img/screenres.png deleted file mode 100644 index f053dafa9d4c2f7c91b00406087826f8ad2a4d4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6201 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 EKZfZ|4FCWD diff --git a/tutorials/rendering/img/screenres.webp b/tutorials/rendering/img/screenres.webp new file mode 100644 index 0000000000000000000000000000000000000000..a1f799f57e077b1c641a3305ae5b822010c97fd0 GIT binary patch literal 5014 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 T{W^X8^Hf7sSEc0oy{G>LHOYOA diff --git a/tutorials/rendering/img/stretch.svg b/tutorials/rendering/img/stretch.svg deleted file mode 100644 index 4822f72c73cb..000000000000 --- a/tutorials/rendering/img/stretch.svg +++ /dev/null @@ -1 +0,0 @@ -Disabled2DViewport diff --git a/tutorials/rendering/img/stretchsettings.png b/tutorials/rendering/img/stretchsettings.png deleted file mode 100644 index 8e90154a59831b18418e838bd4b124900ebed909..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3111 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 is added on top of it: +the resolution of the window or screen. The animations below use a "base +size" of just 16×9 pixels to demonstrate the effect of different stretch +modes. A single sprite, also 16×9 pixels in size, covers the entire viewport, +and a diagonal :ref:`Line2D ` is added on top of it: .. image:: img/stretch_demo_scene.png @@ -467,7 +463,7 @@ Non-game application - Keep the stretch mode to its default value, ``disabled``. - Keep the stretch aspect to its default value, ``ignore`` (its value won't be used since the stretch mode is ``disabled``). -- You can define a minimum window size by setting ``OS.min_window_size`` in a +- You can define a minimum window size by calling ``get_window().set_min_size()`` in a script's ``_ready()`` function. This prevents the user from resizing the application below a certain size, which could break the UI layout. From a5649f0a4b6a5debf7d8bcd95523a57370130938 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Fri, 16 Feb 2024 21:45:19 +0100 Subject: [PATCH 04/58] Clarify `production=yes` SCons option in Compiling for Linux/*BSD --- .../compiling/compiling_for_linuxbsd.rst | 17 +++++++++-------- .../compiling/compiling_for_windows.rst | 17 +++++++++-------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/contributing/development/compiling/compiling_for_linuxbsd.rst b/contributing/development/compiling/compiling_for_linuxbsd.rst index c87c29849797..f5f5b50a242c 100644 --- a/contributing/development/compiling/compiling_for_linuxbsd.rst +++ b/contributing/development/compiling/compiling_for_linuxbsd.rst @@ -266,14 +266,15 @@ Manager. would not build. For RISC-V architecture devices, use the Clang compiler instead of the GCC compiler. -.. note:: If you are compiling Godot for production use, then you can - make the final executable smaller and faster by adding the - SCons options ``target=template_release production=yes``. - - If you are compiling Godot with GCC, you can make the binary - even smaller and faster by adding the SCons option ``lto=full``. - As link-time optimization is a memory-intensive process, - this will require about 7 GB of available RAM while compiling. +.. tip:: If you are compiling Godot for production use, you can + make the final executable smaller and faster by adding the + SCons option ``production=yes``. This enables additional compiler + optimizations and link-time optimization. + + LTO takes some time to run and requires about 7 GB of available RAM + while compiling. If you're running out of memory with the above option, + use ``production=yes lto=none`` or ``production=yes lto=thin`` for a + lightweight but less effective form of LTO. .. note:: If you want to use separate editor settings for your own Godot builds and official releases, you can enable diff --git a/contributing/development/compiling/compiling_for_windows.rst b/contributing/development/compiling/compiling_for_windows.rst index de487eee53f8..c4c3242d1063 100644 --- a/contributing/development/compiling/compiling_for_windows.rst +++ b/contributing/development/compiling/compiling_for_windows.rst @@ -159,14 +159,15 @@ your CPU architecture, but this can be overridden using ``arch=x86_64`` or This executable file contains the whole engine and runs without any dependencies. Running it will bring up the Project Manager. -.. note:: If you are compiling Godot for production use, then you can - make the final executable smaller and faster by adding the - SCons option ``target=template_release``. +.. tip:: If you are compiling Godot for production use, you can + make the final executable smaller and faster by adding the + SCons option ``production=yes``. This enables additional compiler + optimizations and link-time optimization. - If you are compiling Godot with MinGW, you can make the binary - even smaller and faster by adding the SCons option ``lto=full``. - As link-time optimization is a memory-intensive process, - this will require about 7 GB of available RAM while compiling. + LTO takes some time to run and requires about 7 GB of available RAM + while compiling. If you're running out of memory with the above option, + use ``production=yes lto=none`` or ``production=yes lto=thin`` for a + lightweight but less effective form of LTO. .. note:: If you want to use separate editor settings for your own Godot builds and official releases, you can enable @@ -203,7 +204,7 @@ To compile Godot with Direct3D 12 support you need at least the following: ./update_mesa.sh scons - If you are buildng with MinGW, add ``use_mingw=yes`` to the ``scons`` + If you are building with MinGW, add ``use_mingw=yes`` to the ``scons`` command, you can also specify build architecture using ``arch={architecture}``. Mesa static library should be built using the same compiler you are From 327c92d3dce94e97da2ff0f6489c979037c5a8ee Mon Sep 17 00:00:00 2001 From: skyace65 Date: Mon, 11 Mar 2024 20:11:09 -0400 Subject: [PATCH 05/58] Update XR Index page --- tutorials/xr/index.rst | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tutorials/xr/index.rst b/tutorials/xr/index.rst index 44c884d378a2..1888f5d0bd80 100644 --- a/tutorials/xr/index.rst +++ b/tutorials/xr/index.rst @@ -3,6 +3,9 @@ XR == +This section of the manual covers everything related to XR ( +Virtual Reality and Augmented Reality). + Basic Tutorial -------------- @@ -27,8 +30,3 @@ Advanced topics xr_room_scale openxr_hand_tracking openxr_passthrough - -.. note:: - - Documentation for XR in Godot 4.0 XR is still a work in progress. - Please check back in the future. From de1eeb6054343235a5a8fcc28fdd547d3827fac2 Mon Sep 17 00:00:00 2001 From: bruvzg <7645683+bruvzg@users.noreply.github.com> Date: Wed, 13 Mar 2024 09:07:12 +0200 Subject: [PATCH 06/58] Add notes about "skip file" and "keep file" import types. --- tutorials/assets_pipeline/import_process.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tutorials/assets_pipeline/import_process.rst b/tutorials/assets_pipeline/import_process.rst index 5965f2493d22..21c492cac7af 100644 --- a/tutorials/assets_pipeline/import_process.rst +++ b/tutorials/assets_pipeline/import_process.rst @@ -115,6 +115,12 @@ select the relevant type of resource desired then click **Reimport**: .. image:: img/import_process_changing_import_type.webp +Select ``Keep File (exported as is)`` as resource type to skip file import, files +with this resource type will be preserved as is during project export. + +Select ``Skip File (not exported)`` as resource type to skip file import and ignore +file during project export. + Changing default import parameters ---------------------------------- From e6f442c39cae7b85b676afc6a6831117bb59a80f Mon Sep 17 00:00:00 2001 From: Mikhail Gribanov Date: Thu, 14 Mar 2024 20:05:52 +0200 Subject: [PATCH 07/58] Add clarification to distance fade modes in Standard Material 3D Source: https://forum.godotengine.org/t/modify-transparency-of-mesh-with-next-pass-shader/22988/2 --- ...rial_distance_fade_object_dither_mode.webp | Bin 0 -> 97950 bytes ...terial_distance_fade_pixel_alpha_mode.webp | Bin 0 -> 87812 bytes ...erial_distance_fade_pixel_dither_mode.webp | Bin 0 -> 76582 bytes tutorials/3d/standard_material_3d.rst | 25 +++++++++++++++--- 4 files changed, 22 insertions(+), 3 deletions(-) create mode 100644 tutorials/3d/img/standart_material_distance_fade_object_dither_mode.webp create mode 100644 tutorials/3d/img/standart_material_distance_fade_pixel_alpha_mode.webp create mode 100644 tutorials/3d/img/standart_material_distance_fade_pixel_dither_mode.webp diff --git a/tutorials/3d/img/standart_material_distance_fade_object_dither_mode.webp b/tutorials/3d/img/standart_material_distance_fade_object_dither_mode.webp new file mode 100644 index 0000000000000000000000000000000000000000..814b3725cf8ac3e44f9c92f1ddaf7def614a7c23 GIT binary patch literal 97950 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

~h@*1w3(50h7t^T9 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 MuQe8C=KnnXKRD;Q{{R30 literal 0 HcmV?d00001 diff --git a/tutorials/3d/img/standart_material_distance_fade_pixel_alpha_mode.webp b/tutorials/3d/img/standart_material_distance_fade_pixel_alpha_mode.webp new file mode 100644 index 0000000000000000000000000000000000000000..04b0939386a7143bcc4c4186e0f4686ea2a607f4 GIT binary patch literal 87812 zcmV)EK)}CJNk&HeRsjH4MM6+kP&il$000080000x0{|fc09H^qO#M{>053a3hyaa9 zh$P98B#X|vdy&nbu*}*e5Yhh$Fzq%rUWHe@Z?N$mfz4`~Z)DDWthTxSgj#rXm!ZCb zGGD-V1l=lf7T!i>JWLt5cSc#L*w2AxT_5`Aw@O zu3s205-fbQw!HYQDnQ?(kYJ;TBa*~MBIAsGASsBP#k~)PabZJUDK&s`+E$$;`n-eM zNIYMNt<7x}DDt!X{xTNxTBU>s1+drz6&Y3RO;n;PFxVDD2??lr^Qgo0w*ZY1eY zB;s;;2#xo%|0T=tHb!z)289LP9cO@?|mM&=a4wJ{B|*34Xs@ z#=CW!MgXwI1{pO!ueLeG-y!8y?~F$}ewbBu6DcUjfy|dc+#_rAI7& z99RFgRigS9?M;i9BqVp(KlGc+*@x2^)7hy;fFoX5Kl)^yr*(ZoVsDGY-?)dnJsXTz z;|>KRt^YTU_s2!|UWUUijM;j75jiqDhc(=zgWfe=ua=6@SxgY;^EFJ4)ckOo9 zj-{*8`xoswyA81=wv_z^(NXq@LrT|OOPA8MNl8i5*j$=R^VnS5d_&Z4%3`h|UD{b` zO1oF>f~8}bu)9m|wuvTRwp{oqA|9kL;cu{@NIC8aDWPbJlmCe513nu($} zO$=ht;L964|D>olx5tkU7p48)XGtg@>I@p##vTU zQWo`+NLke_nl%V5n%>N!h$ceA+;dk%Qc|VTF*>@dp_Zo1Q_ZF3k~yMlBoay7#hHuy z_!I#=dwAmEv4=Pk#~OZ$deloj5+NZaC6NNa$_hnm&gN{SdXu3}SE55yq7p^OkWq#j zWi+KyjYO=Ti(kCDw>VC@xVMBEW@4`GhsX2) zc$_%neNrVa15MEsMOJUJPrFjLSS$fRtZsFqMJX(?#KJ>8dssYscxGh)0Mw%%i*00y z<-)x;2u!eNdaRK*ep-iz6LJlaQ6Im|3XU>6q+d7bhnwjkg{HfV$N! zR=1o2fCWwgFk6P##&X>HO8|i5&PnIVj0z$|ux*fd=SVv$j;=97LPFvsX2)z7$7C0i zkjN-jH)wfW_NVlxgpB9@jTw3@+A}&&I>#OLp@KpMdHPCnPd%_H@HocN{p{g8$1x<; z@B{TJPRDE?48XXtPkq$GsPkyP9Qw;~HoTtg%)r5YW`KdBbouT{t|#=1LixK;FI1uC zs}RRT9V5p`lO)>505EQ|8S3u-arckK(0D#tzw5_y|6#l5`Jg|gKlxzP6SNm)?&0{4 z|G=gmE3{}%bvO==>PVB+Wb8I~tH+043}5QU4@b8TN6iPp)Suipn-dT;&_I9$BB}1# zC~xQ|^pg(FW_ndje@2m*wPOxC5&CGM_fK8z64Rs0Qa49o=&Wf*|!#eS}UK?jRv)9x!b{ z@LB!xPR%==&b~oykXazMZ6ipEVtaS8*MG$`d-vZ#L`*=DXo+QT3?aPw9lruNu07zL z@9mpYwittnfq*f9ZEZPV$F$X4r zJpDW--3LQeQaN{iJluWX&-1xmZexL*N>x>=YOP*-9oK%XtDoz6p8GD>k-Mlb*RfvL zTGzg=?RmQXw72^8x~{&i>v~h^tJGRmRoY9^XpWz~yX$LJsY+G)@z%`TbAMi{OH!$% zD!op=nOmAkWJdZ zw$4G406bzQ(uhQ=nIySKO1G^e5bZ_~m>CI@%#3tM(k;mnpd)}FBWdC!k(5f3nXTJp zA>Jhkm=OVzmQ;ouPKA*s_K?rrkg|xy8&}a z0>aGHP%415q@;&E36gmCpptZ8IHo2eUTxHXzG}cVj%)+r7y$ud%pRRyW5|RbYuGP_ zcL~S<0TUpnoLG_sb36c2_&PAd_Y!|8oiYmh`hofz2;v{B=J&8m!_03<05be_k~@F6 z>ZqUQ#M1u!|GK+zbdG)C#>3}6V8_Qv?7(zF1L2gJ`)GL|GXD+xKj0%~W-7PIWGIuF zOzLDDupRrHA)Q2yXnVF|B%HC>!+Ot-Qx5}-DRBkPo+>P9O z;mEsQE;G34QsGD=%M00&)-#b8vlU|$Wy&38nRmL8m$yt)#;iu}Ec!{oDs%d%TjoYl z`L4^2)?FT0P8nxiZsdxFqAW9yvXE}M=fTKUmZ98wvy2&4j8StE*BG@%f@{+q7-l+EOaDb&S#H7)uk| zwyk5^w*BVwwwr$(C&s?@`ui@TXt2t;vwjH)@0Li975V$09_#Pf9Cz?F+1!P;8tzet8ZDwX>5-l^cC^OToD^}z>SCE+<%hAoujN8o2 z7_l>kTieV&p(3*_mX_I~HoLE@6i;T(TwTr_DpF)->~hM?95FLf6{Tz2*0$06elD0T zOI9SA&WWLoVNS~2u7;M(ykw?7!925MW` zZ)Rp@X5PVFb_`Rold{vWLp!uHz|3r{%qmM3%+W1LvaL#zWaqvQ&dJrx%*?Qh9=7x_ z7t_*X#ud;Sn374r{Wky6XLo>6@E;G!4Cc!+7w%Tl~*lvqF=3?gHkRtvYv>@A!+e(z3#}JF4J-C+d*SZx?y_*#2yTe`$%vTAEW=WFcXxM-Mnc>j3U}AYiFDzbxw~7V z86Q%2cPA>`os7(#!rcSf5&$-BB(Z%BLKr0mJeFq=TZ}UkdwY7G_WgeGzN44zo$Q^# zSEQS`ffG|C;pA;84FIe*TK2=q1nVJT{+duHOxLeySPS-bY z2ItM*wjm3))v$4-xRV+SJybn|kdxj1;<2@D*=;H7xck|s@Qm73G13I<1Z`u`32%X> zb#RxXi{`j zVCDFOwn2OFj~f3NM7ogdq&ShLJ128!0C7nJaM@{fftZW|N8A5I%70{W^2{VzE$5Gv zb_3@K^mH7B8&GLSNx3JWvwHVGxJK4p0=c&K#>xLH&N#=JGj71gT~Gz=DTg9xfI|!H zp#ytOl$?XYFKmS@+E(M%ahlcpFv3?@SQ1u-4quq9|37VO&N+Kc?Xyv~npGE3*IXCl z*gDqMnpkIyHUD#+aJN4}FWstE?BqW(e!bYXZU2LBuzIo4GmHf>w2^|^6vL@#?8Gk=4A_C>aBThTT5UVHX{1<7vPhAN~05_~Do zAR)T_+U@^awKip5!(GN_3c$Vp+}#P?9bQA;yVlxwH2&4If`9U6SOcWGk#vNWJTYC^ zNmc{ThbD+dBHSV4^R)8x@s>j5aw~XSKpL2o5-7rBck(HNjL)sWZ6ryGRMmU>Gn?@K z+wl^az@*~1j%_!Mo)m*jX=D5U-U_x6W(I>o5+q5I)QrtAwRLp@N~*hh7D->c*Z-}O zBS%uht$VAvrQsPfvz__>@n6i$B&oUU-U79%kE`DIR&}fAZ2B=XGc98W_n5KG%%n5f z^6qPR&Dds;Ig-cRPL^v@Gc(hGnTLL6X6tC3F@wzbnmNKb%9dBB%)D&2m(AH~GtC&6 zb7M9Twb_oCnR$69S{-E_QP;LTZRC8Og~TGui7`&*YG#(P%-oae(Q*5Wmze{SopB_C z>@10rBuS1W$ILUUyBD0}0l-u6{|DfT6X&F-t1>-YL9*I5iezDmOv(#tDc_i{|5xV7 z&CGOb(AZU~l3Qwrla{6p-DB8>|JVEtxHk;AL9=$NdsL;WaJO?>_UN3dd++SUaj5o|oX1jM;PS~I@GxjdbXsl#6D@~Z0 zV_Yh5!;v@Pq{AyTuENZ$kZ~1eX69Xcl^xTOW82!YHRs%4OM=4ylHgEh6kcU`>2wz9 zU3=V0=Teev+qI*tz0ZB7tXw&43rzv~H4TlG8VI80J;+P<{r~R{S&*&9tz<>>$OTDA z2|?CkXSN?a^8YEeET`ahkJwUZ|Jxhprh89iL{-*#11*6+rTk~+MAc2SlWTi2ge!mUerbg#4u0`5KG-lkb4%O z8}h~$Gq`jG&wTCmtU!KSia5>{IFckuQY6VE1B#aMzW@KzK4G||GbriEwyipn_P$b) zpqQDl$z_^C&$5Tr9(!%I^magkBsXqDT_CUmU^`o&7@uD}(zY#=?5Iy=b=7IAN@x&c zlNdeRu9l%Cu+$)?#>%1tU8TxDL*MuQwT3suEKl;7U*i>gmcV0X%8*x~_ypD`E>FHf z`_KwX?4!>tJsS|y3h)>FVtjWX7t0j>;+ZjXn3ka!_gJ%q*#cTJC!($KXMFS~c*dh6 zNw#Xcs$TnCCcyy6(@e-?mVAv%vY2@qXffl5d(Wl4cT2LZy=|NS2Z=7yMP0|E^xig* z4P<56M%I&2AGsIx1`;GdT7STTB&lxW;^4U5Tk@jhAfzb2r?_y>=AXL^Ij{Z9CmJ`4 zQ(U{#CIB`ua47*C0vb$wb_%0v5Ei{F*Z9>K1v+8}Bm+x&AG7p7<9vERor#;6RCQ?# zcW1z`GL60qMCe5yuhz3;K=e?m8Cm-E-CEfV%t=7oq|Nc+C;;HV^q14Vef|vJJplj{ zcLa6Ew%5>BfaZVbLJoj48uH-T9IxdGVmyg4a~R+a!Lbv#TFhR?vL z!2uZexdPoufA(B>N*{d5?^6TW^E}9D^o0b*K7DHR21=mbUM))f+NvN z;FC1aON3a2i}A>AYqBlSRdij<5J$X92)r@s{MB4(mtJbSu$2wKW`t(_!$ZmU45JK` z0^Wl)Vr>B~fFZZ7sBiIoiQM7dl~PLH;^YLMIt>5Xq0!cB3rJxa|k$_iI_y6RcoMx|imK6of8LgayAGw08&u@_W^?A@^fTk@C z(2!x7LAkWEU`chi#a5^)U@Vs|;+v821@<(YovR9eKu&uM03xo$T&j!SO-Xd>A98mW zDSRlsICFi2Vw)DMj)WAv5XWXTn9QL`pJ!qaC+;xD9mbaAuY8bV|+ zM1aL}b?wOngl$n;_^G5JW)Z5LLwoI0hqr*#XM=z*BVO1CeBH9>{wKBfEOZXPUR8V1 z>t6T86jxIs(My1$3HPcbb;so>6vr*@`as&%LfCDpl}(A!)Y)$dnK3R?3LU`4$9y`xu^J`nztZ zs7T^gWBh!lUdb4tDO#1Lt`xnH@T6C&&G4Hv;$+;ip<67MLjCZ7Ec!|xMq4sPQV7`2 zywr376TRk3DRQ?>CLk}^Qzn}XDRks<$V50+h2dEUBolq%esW-S4FK-o>bn=!HHr zX4APttTi2&pmpumK)$KCIz#Y6V8w6HrLf!elcTG*$uNx03{dY|MAF=*c){0RU_?lx zxk7CI@eoRCfEhRTfFG&o?py@G8vxKRp_5ae#5m%x>4X0m`1;#_A6I{2;rX)M-=NLi z*p^p+2=r=6=MBUWjhFom2PPSHTMgrFD%h_ch`k8ID@t$#5LTWijBc3-q`T+3BH&{J z*)LjX7sX<*iBRzH090m)R)N}Hdcma?YxIn0fHKBfJ=Y>!8VvZ-YPYrmd#>ZI{y=5T zXwwDJn3Xt6gPZ-slfYO^**b-zUs1h4LJ7oF_0;qsej1T+h6yUUj6{>8WXi(?mM#BX zBYfl!36zBwfJ(%!R!kpg7m%&}$92;cG3I5ySMe(<$!|`07)tgJw!d@Nd1A2XqK~2v z9!HrvCbY-AAUF4iC#m%I)Dvhb-Wt;Z?ilDkAoXala2i=O>{~x)+G~ZMqU1mzHrOspV4W7AJ)E%KJPbKq1G%pq^dV zKbW}zT?SsQ#iURnHrCwR`^n1Vw&r^*jF8Vl zm9j@IeD2*=mH;DzH-s;|Z6hq5nE623C`1?6xd{9VXU*ZCk^`192Yx`}|RHPHqJV2W@6Ved?Nj)juyO3^I$7F7@%F64Hoh-okP9d zw3#Pa$hkd`Y)yCd4*;}RJ7%?yRkKk%$ukj~%G?nzYQx}-o|g_sjM^2onby?SB?65_ zp39evfshyuTgX;Hn`zd_Ndi{}-%~XTvCCiooyA0rO)r|&p0nun;n2hHYHsTj1)U#9 zT|w>-5~B3FcByxJAX3n8cUbehuFci-^eZ(t=FPIy@Vl4Y z)41@m^L-%sdG-S{6AQ$ZL}8f?Iw!@W7>+PAVd{fs?C> zU?Vs&IhHD04wEPFjJBe;_hZXl#&|zuGu5H=f;F7w<^2Zb$()PxB^<7fYLQnUzO~gA zcpoZHjC&fFXEO zM?eJ`Mt<)ao_zUz<-~R54Zi=^=M1el;T!y>hO2mNeBM$E54PDz=* zWb6$P*+LM!$*I=WKDDGt28lM~J;B3!(KGbql^ynBO+E#=zCX;yJIrmB$cTy=s`rCn7=YH$m`>I$oo17Tc)JwRWC#;hI zknTbXf>vHth4`Z7#2waJ<#^6@IdUTDstkFhk1v31XGaeK&}?pUxP~2v-@_I0)yell z5=Su^8xn>!h#U_kMef8m5o25i1}~jjP3o1jYy$Z2()E-$nfP z%km78CzG%8dbA*pm|~!eJj1HIZ@5AOH1;J z0Q68;FQ%4&l5CsdH+kQw<<`E2$^^DfjAxS@{M7@o_L=8hj>)vFKzUh(<-tTIVxxK+ z%j0S1URJ|P21i+|u|k989IsO;=EwDYXZ-zl`%KSlZ|IfX+XWy*TCD&Aa*S)o;igjM zl9Qt^x8%kZ_JeZE^$x1jHCDbVg9n^MYIo0EVjEQ0%<~zPpM~Jk(BxTf zE3}%M9IW93QFZu*9gz?#TVEu#+YC5$p|T)1p`)ip7yjtZ!*fhguzZb$K&2a6_v}gI zh`#hs<9u6)>1`1jqKGr%g^la5Eva$yG;`I4dtjPU*cjN#IF>viHkrR{@(_f*!3AY< zBpzC#3KN)kgC~-ixC)$ta9>-KKlEdK9*1zrQ$NCB`M}3l1>79tXW!uqR=_Z;Hw2ha zDIdKNo++y8x1Io-tej-u536l~4VoJO0D2rzBMM17K*jY!Z@kSEk@Y2aY9$m zOvahmHRFVrQheGFDG}gf+jsgMoFWPYX@MqUTxAOKeeCvau8eKT{&h8EK+n@`N8ivk zp32|p4aWl$L2B-HFSG`(hgovTON;Uz;hFPgI@XJ8wgR?MT_$9yPP>&z11_|Nv%dE; zF8K`DT&#&No&^E8X4#A7)WNqD z95FFg^$j<7fF5e)w~#={ylNEy9C5)n1K_^y763-8PAmb~%KY{!;DtDXPkbS!!F_FJ zrMEi#1xm=m25P%@6N()KQ)h%Lz6LQ@7}`9 zI2uMO-<&`;7K4OuwEl4~EdmdXyJ#$$3M5vl?7$a>O=Nsrh~ zXCiRXuX&F|@Do<|5grjB+zUNE^lG0oM3z;$yLWip6W>O~B#6~@U>m?b!^Ncx+xd=> zpNI2#ZNZwY$rB-R^s$;uLiOX$72>`^-KKTV-3hl<_>7c7CAmVDW|49rUq(?H?YV$Bn^F4 zH_u*@kf$>0&Ey)hHIUqtW4CE-t6u{k--b-OilG}&JqXS`1;!6%PA^#8AkP?xy)?UWO#to!M7yx z=Nru1bn6_+Iry1q4!w^!xR3s z)lbukzg+j;$64pDHK5pcbH;~A%^@&{JldQsC^1AB2 z{lbN@(HPp@ix^3?g#t)7wbtgNU&KSE+f^c*6xzip0mR6(NV#Z@e*c5BUn@5ZEkqwc z26RIl4d7EQyaoUr*VVZEEW@$S&`;Yq%r}k=qUzMoGBI55ig46#*=tCQSO*Dwu1{-z zc4c`$8G(JDE!=j4yGTmu1@o>42J4=iNg}dA3?jm-hNF*vANavLAx4MmtgZR+bfb=S zIKJv+Bvy^=08>>DqsBqD4%Ag8&g<0Hh+PvM6=w||0zePNv6mzm!Ti5ZDfGNV`b366 z{XUoZRL!7PQgY3|>lm(Nd+K+@o)$2OzcT>C!Y)x&SXNQR;A7ujWwd)hU}y!Ce_5q2 zy$-4F<8rypPl&CtL`z6)@?TW2;wAsknM@q3J`YEbDzq(2T zLyb#vs9HSNS2~J{Hs@BAtxoSOlXUH}Yc^LAw<^R@NqVcnn}>i4ubvv2pI)^}JksZ! zoG)z5=8OL6Xk>jV>{0%#29t29XKtnRv@(vvl#O56`V6D)wGNDSVLA#^WI@0hVMKj) z>h5P^mxffg{fUQvZ0A!xQy!}7yU>69%#m^Hgg?9oMKor~a@BD~0_63$rM7?TkFi9A z3EHr;Emp~NFtT1nG9dO*bowu@qJWDpRIAz2n39QAA3i~F}w+(1>$6#4ZrU8j4lv1BgJLb}_vUD-Wd zzW2+y?ax#;*8@g^UmU&cIyeNIkRWM zdwj%wREbpE+*%-fB769f6iF-y_CG3%w3^wO5B_18U_s3Nw2&_H4gk57cIf$^wlZR) zWB&HLy81FEofzsH0337{90qVpq3wE&$&_0iWNDEO1lta{D+h7h1py~CF!6x{(78&bnA%~DUo zPbMmjz^=Gq-5MV~wJq6JqCVT>LM1{@0C2dHGh#l~vjOWP$B$sHIkE7keHQctM7MCY zG{5_?>MkGO2OS9j5K;tN8A2ADkR{o$yY(ESIb8L4 z8R*oQT9z*}T}S#nD3Zg|T3GA_rE+xR-&{{%&C#L)FWIVL&pt=f%YQk{wO2GGU4G>* zJ%T07 zB2u*bBOx`0RDu@+pe&Qh4_YMMz9-jGgw}k=OObw8$4KVQxmNt4Z|`PL^mA1`J_l5q zs<0pyMU>q20s#D=``PX=BwOeDa_82o4}AVX4_9;Di6EH)q-! zHH5>=GC>u?0&p+k&{5Z;hhw^V=KN-kOaa6Jd(Bxmiypl6QuKDdD?9!Gtr^2BZ~3Rt z_dhEh8z&g?;*&8aS9y}vLAH8RnMD$YMrw-IYa62(*7MAF!IWNfk=rl7FQYAoa;a&j z$p>@O)1I9lmu5=|2vOks=rWfAW6g<#Khd+u!7Fxsj;8)=LT5F{@K&K>$#hoJi|=&t z^e9^_kB+^*-D%`QLU$y(Kd!RFM%Iy%~PV`%1jYV2gBBROgN0h)qvXL zPuXE(U&reB9oA`UmkgMvQYj}fQq@JbAd}~%3FjL!9iVdY)>sW$WoW? zlGjvIAAmLk-{$1QpY5}dkfe9MT6SKQg$ppFa~Lz|>r? zZcb*|8Dt|O)fS@}uOe6ZO3iEVDa53oK~Nt>XDTIP-xeh0cvW40LhQweO-L9De==v0 zhF6kaS}zs>;DVyui)keXYJ5Ykn?(%I9)J{`_Ob}ilc%3w;LdG10C^Q$TxZc99Ase7cmU)!X4AdHfSz>swaw8CJIf*< z#?-J}*vq+KQ`}a&lkewd?o{sE&}b$71pht58Xo${%9AH>^i|XfeS!%C# z)=0o+%p^hu^HhI09~aLquoCkIx*2hg)B~Id%$dTN^L3aq7<&w!MJE9I!mC4+Fctux zpUZ_)rEW&@RTg_5Y4OE%whX0E^AIYp-3H-wN^ZVA~`Bn?dkI0M)t5Qr|<*6==Y1GY^Z8*69LqgRcg&ZVE{=eX%9 znHh*hos%Z5T|aU8{aHbuHvZz-6TQPWWFf!X!?BM=(}<1%`GiVm30{(K#}Wt=d_m63PQmm511%O+ zKjY!DYCnLdw@jrBp#q);@HCnK<~lz7{e-wkw!Ow%N@dCj=llK*OYAUMNx5n!!0icf z!1LG2QOBtE2^;EXu?sIfLipt8}F{pFK0s@E_1#xa&*-YMXrbF}r z{bqjJ`w_kd#$Qzf4_|O`SLvi;@?2CA$C2@QiEvnDO`vp)i_Has|5U!(nLUeF0Mv(9 zYnYaV@(wTSW_sCa#eoWU809~xv>i~>GN1dT-!B|J3~0W5W!4r!_=g`%cc#ZCX+bG) zK#>^Y=QBHOe2*$=u94`$BAI8_2ZeIzQ(|)gGl$w+9%G7Uky<$+Yg?bRhbBa2y3oX8g7Sx-&I^1dc8__u zRK#a-sfa~NgN9YS|8%F{Dzl|54+5;V1+U7qhOvoSvDc-tdVm4b!~XIlZ5JV%sxZa+ zjIt?HCv8y_93IMdopG9yGX$fBM-t{uw7hNiPS&yEcUntEE#-Ey&`AqHZalS)f zOH4(7NNF4cZZEqutwk0@@|}8-G>FO{3eDE&ffF5&eIiuF)Ns&|c;hVhCg;74vl=O7 zrmC0RwiM6tR>5oUEc6=bgM^yGiq59|Q`6BL^n%@^9x37Tvle3YH&Q4b z@6@Sz`oT1lev6S8v8~mL>2mFeMp|cGf0+ABkcS6VIzo%(G^z^SN5B3VVO8QDIg^o! z+iIrXkGHfK8bq4NWhdnEWoJjMKzv@ox1Ub%zXxih-*lvmY-D@ijuwY7`Hvo@^!|#3 z8s)@vb5W0CyikL^{fawOEZY%CoWU9q1b?lGDf3^-f~cyIuTy1Jfi28&S+;W)3-J2V ztAVeCPgTYEyu5e+Q&UPV^@80aa=mExlkM&j%FtdO^qYF6*3{gM7q)7OHG%qtL#L7_ zxR%L#p>vQ{cBFc(4>$LvHr}Rh5$??Zt6eS#?V9U%2GBMex>@kH1PCvwqHn_ZN-f>& zOpRvqa+3@E@+H-7&!}7<`W_%5Obgf7Y<=)KDFE7QtZnDx{jwY!NNY6hO7%&IMCH<= zQ<0ac#u$N$ZKuNid|YOEKxCTP@FveHhY9Ik3V40J9l!u8!)s?%H6h6_B-ycH5;YCF zvS&<=mQZdc2bKHNAfyV`>G1bf8nieCfTfl`uZO2nMgTAL&VV9Tr# zv=-jEsJnYYRfKo5b#OOjkumB3dRV3LX$4IY^}zQ@OI^@P^XsvGSYuAK%j@ILI3LBo-{C)P*q`7_tu{1 zN|h!7kU}r@!NE(9G`_-n9$J;odY9RpCrwL+?3u*0spyO#Q^wi?5CH|Ih6^1DxwpG^ z?b6&S1pb#uqBJumf2IcSbtL%?D`rm!C^kogdo@9W`X)4iOlc@m+95W@09XmHI=!;- zM{3X~gRqHh-^`|E`=OYMxMa!~dfB5*thZ4R#q&OYzTVDBkP?AcDOXILiz2{$MExL= zxx9PE&vz8^T^E2V9pml!Ocm(Kpn)Xb>8JDJR?2Ir1dtV7- ze)DkiQ6=fzhzLcZo6v|*cW&Ee070XCQI%Uv8kIe|!$=i+Me)@K7)Y{>wql*UJM+VC zi@=iU-bwHeHC8>&(D*)v4i2!4?#u&@wYib>?goH5eciNnN{^~Yx$9&i*Z@>)9wW_s zR8lR^R#1g(168iG6uS*5%#=oALJVFT<46nilH_MWNpV-5@Rx11sdMHQjEr>fB|F~7 zgtQ>u7pJ?Aam`0(vN0N^Di(JnGV+J+F&Pf;>cxFfbDEkDdzX_AT*0 z@!K-B1^`e7)QYWD!epl<;&c;}mrqllYct|#Ol=RACrMTqQKqg#s&<@>knUEIxo{L;DBAdnRZ*1wS!Df zi6JMvyo%;!0ryCtG)@Z1{}QP@Q<1_j8&ao$lsqIokg!B=>J8y5-PZ(C6k9{uHIovn zHqjZ9-U5N%4&xyTHk~53zt_L_Ciob>FEz_j$5Dz~>lDO#u3_W@+ff8osaWk~&~LD+ zQySxZOvfIn6v*0VilphEL`mmYD zjt*J{os8%TNt+>5;$tRefau>Cp**nv^X$Gg(WU+@38l&1D+~%CvG^I9tb8N3YcoQs zg}y~lsw=&vFNT>w8<=G<1V@s#f*`yV-u&uBB>he&D}k?A;4`wdp*AcD*X%qd`%>hr zpV;BxWhw5V6(C(@ir#nc2=aay`_UQcPE+rZ>i3kFC;@WZ{7Xl&JPWpFfmLjG>hrlbK-tUX0P^ z9UD;r7;?%V4rbmnME>3U7t)zvW1TS`UBDk1167Yy!B^gW09O0frrZ}5y_GYPknyEA z@oPm}1Q@m*)_O71!nvh>Ri26o3(F zFp6XjUiCjW#wGg}Q9>tGuxK@~!aFQ|ZjJm{^t*^I^wOJ}{`Ww#8)Kr6W9t)WgD>gC z|Hfy@R?zdfp>!hNBf9`xU;496U%d|(8>a!k!9iWIWwJNyzH+Op|NrNY9OWwm=0BhK z>I$;Ydd@L-5;_9t%o|j@q-L3EYX-ciEO`L{%*5yl)gUMt22Bsvl6NoL>d+N5$>#~i z23}quTO$wk&=c*t7n22KD5F&7gt62B^pmFi$Ez*>pNvL1J!)?jDgT#i^IE9nZKVpb z6Tz^_icADyo|d1ex}=hJzmhAKu7}}ylB#gH7QOT~f*=Vy{MzCwiFCAeyw*T?PA7c( zW26{!j78)zo^&6`-2*U=aX_XFgI+|bb#nXtSBp+f5dW;73X~r2gSxGxmCVf#zUK0NkZt7?uQt-9b-OX!aBb6$OEi`aL|9Wi5AV01Tn$LHK~!gvZnVo z(ZUJvXDY@42Lzt<8N|LEkTTiR)Cv^Ud=IL0MGC-70VA+^jEwQAOX=wAvFX05kAn+7mA0Tma_L z^#6|L1pYz8Y0mjS>PU2lAaEoGH^!9=O`&+-iH4veo4VsU@|ktS*KvTMvK|Xz&|#%i z6kv<75T73QM63i;{g_msKT5WQzT0G18F#;(-&3SgLM!9+GQ+69_s?+p`DZADfS(Jk)Oz=eHB~&kvep$<15OqEWm~t_U&XJ5mRbx z%J<*sy8|l}m5Or@K(TG6ISNUcDp}VWc4|tHrG=L)cHKZV=sWoNZc)vOi zg2vb5$!z-Plipm0aM|uQJD16$)1O&j|47ELK?RIxkTbu<^&ylGgPoa-TPwK})Z8wg zfrp8)E0a>0^HWTOa&;*DO-LJk~yrp0d+i3INV^DRIReL62+UP55SR*Ws)0 z@miy2e-L#nne41;wWmUcYVrd^nl^E!_aB9c`+^kq}@o^9Q#Yl@5zrxYS z62Y|kJ4sVe@kLD4uF@jnM#vDt@~JJ4+j;m3i+g4v42Ox~Is%4HHQS`kqEo&j7z<{% z&AIGnXAygYuvd!#r-2c;znfP`16pITU4^4_RS(2gjBp!I1_ZFVwba%MiU}a%IBTdp zV@mTjt6tW)>)a}|BeQ@QlcwqqL{If#>PQpt5Ls>I?~M(I^OgYvMlCj&!U#hUowDce zE@t9Qn3lF$ro^qpl2LWnNWaegf(!sRtI&0Bmoku;+NpilSTpx83FMu#B=Gol!ASz!LEqZ| zMFrDPIHlC1waSPd%w}4^OsvVLJHcRD%(r665C)Vq=s?F}Epxlvax$DZdq12L3-$n} zvo#q?n!vQ7hqVxc&Th%H65Gmx)lXN39E||0=$(N7>2$eK#DJfN*32fdhuzkz5}d#K z`cVXqmOLDy>!~48mWG09j9^-1$1QoZBa0nju}&hlLVzWV z5Zs%~D{6lW_$oPZEE94%=R5%D(|g$?{hsb`$XhL#K@)&^0@WiMq_{6Y8gZBW74In`kz~dbX z?d}Ur!aYrf#&f=Zv=Q5c%RHmL8wCCa5dzpetDbHxs#^m~e^bn_-3RR060q9m&65D9XsYP)h;heOMMo?COU-9s;= z;w&|YsptH%m>Ihc2mj%IZ_Jy27yu_#BjK7!3DZ%Smh4XP`$WJqaTweKV1ZzIOfwA0 zMt7tB1!HQbq>`d_2|o{t)eo%Jpk_~$=q@ZAiBQr+sJFB#(7_n9spZ_1 ziF;=vW6>!gfMVnxdApm&!+Fb~$-bG?Z489c;8TA>*IZjGZIdh#&!qsg&INu6+r)$^ zfsSP}U`dld01O&H6~P(^TN&{6K`$Q#uvw^Rcl$JOB;z{5-e|YJb^>)cOprdg^ZSNa zcT4tX;gtN7v`#Is)-XK6AuSk6p){C9;yLP?w(=T<2>wPerNER3@Xz@Q9cfu}6Yw#H z@byGkk71kX2%Vb{XSWoPZstrUf!)gvIKXs5H7o^&&X+4DmIANsgOxy8mFSf5twHP9 z6z{#Ey+d~m<|!@3gj_%LulI8UxA;gWu0#=@P770U;KRWmPb_P|7h$PQ%b-yJ;LUJv zox@~)&XkM|AhXJG)_exhs`qrWp@90}#*UyohHc$uRZ?(m`|WU{Av%y|#W=&-9*?`L z(-}L`R6?c{VNwK^H8%k)tFWXBX|Mo*5W|WLS|Y7ye3fw>#}`%AQ}vm3GgJ(RE|47T zZDjtu3!~E1i$eoN0n#u+8lZBsvT$AP;JG7TAN=p=k&m>YJ<3yqz*JQJIEhIfRxIgQ z*5OCNU?F{Ra>y)qngDi&1K3NiM^Qchg;ZqLwFcXn0Ld4`qD>1L92M8SARTU{V5 z#~tO%=G!tmx)uNu*d`6Tz|UX}MuQHc!9YrOdi64iDR}}y^*QdvdODR1_@FQu0k-jU zX~hayHe^|qZmESBMXkn$BFn`2b^E)++-SEckhD{{qRxXXGbtE4W_#ep=*Z9qe6wlm zq`x>RHSEnoVAKYrn$KTmMH{(r=*KKN`B9IDQ%Qjj$F>MC8HVnk!-_%o$$_O-O5d(l z3B!5TokJjt9?{uM8gV`ZfOMKB#Ii15y~t_+_`%gn+6~NL8^8IztIBN1Q#4RU<$A9& zGjX{)HW6OE<)=4RKhtIy?tDA@<>13HDaa{)S8P+qiYd!9;a}>|GYL$sNCYMTm$P*p zRyInn@JfImJ2R3_##d9P?=JGv96^ocjHRr+aL!2mr4z zFM5sixF564o$Smqz(&9=u3ngjESjKXD1^%>S>Ues0EVz*#Ts&ca6^UouL0XcdBcuL zE@8zE_{gxLn^^8*Ec$#Qz}Q@WcI}_?#bz|jjsdYzz0Ua%Xkz1QK4!Z!+L`4@^mg@v zM%&ymo@TV3oEc=)rJqq?|;*w?&1wERijz;g%on4;2-#1Sv!f48sJGj#odEj>Z^=xt@65VdK=jY<91MDy`ZnKK0{H|E3 zCz@BCfo;)+kMH?Rw%DVX4pojP72z+ZZ%W$A!DL=5lesOB+W=YF@faH&Ave6?&eqcD zNAB#Z3bP=2#wA`ZpPjJp_H#S)qc-2-rRnK}r&u)swKMSBF!>?|!)aKx1}DX3r&oA! zicMgw)9F+K_~YRDz@+C%UNbdn;h4iId{?#X#M9(g@9fSp^Rz-aN3l5`wbtp$C!Za^ zwK<+iZe3M@6-3a$2{rNp_OBf-qBk-x>5NR`JIQ{hVt`N2R!-90NXM2;-B;)DW60;O zFtmx+!hE^XT(Ufuf)T9w?|DM>v;$~JgsRkBy>{yG`@HJ4TYqt_(=%%VWA89wd8f~W zC~W27WfC3_?1w8TKbCw6CSM5feXzn+fUNwV*BB00bBBk93Y&GxY_CD?b};hj-)Of5 zcXHLT*$dP1n2|9GsOCNgxsS1^ATc8JUOq%3@tv z2k?cfKk=`)3E;D2ne^FI&_Iprb!p(36?!^tk1xqb02IU5YCu`|86cpF9gpGTaN~gQ zn3X_Gc9uI^^DCzf4vk;~u)x8HjMc2u>a$h6l?`O_R!zjG9kZ7k+R;men|1tRGXm!d zpzl=__fdM?eCCNLQ`~SMhmo zDE_o4al?AMH4ROc9gZ4-Q+51lE1W7vQV|la>O=D`+fN<@9e4p z#po5sa^(*qIoa^%&@Uk6v*U)Wh>C*|@+d#i7Gt)u#0N1(Z@CTTTt2 za(?Y!)n1oQ>h}ADuKy3m^jE$A=GEnT+^F9wr6@nXjea;JTX?T+#xR~n!y=b*`cxMb zb^JTL_n0Qxa)jOZ+|p!4rVx{FS(T|y4+mRU;G{&O0%%_qDh`zHRo98QgJ>Vu|5|x8 za&`QKcjNwrk?3QEPMdg^gb~LqWxL&Lr4P)6w&=Cf=(v$aC}Lu%K?&6rtodHZEripc z11T-18wlo)2F4APN^euw$+-T?KMyjFMbPWbSH@%aa$R1HT8~^{pFtZQ_-|?FGof zbE6*lcyN>hdI8x3keegV_hx^8Lcl9Ns=yo`&m+b<7d;Um%Xk&-s1lL(WL*PdQI|`{KL%B?0vm@QqiIZirvJ> zSul%c0P7AyFi(WpJDxh=wFE%3%$2?DM>9IEkLap-mny|UOYc=7Z8Kvuj;R5ZbhF2R zz6&B`udRG;EoLiVR;vtyyF~Tzq<8HfP2%F%8P6H}%W@jyhPzwK=N>xax6EnyAvY^m zW*1F6-{I^3#kw4M33Z(90sXPwd7#iHk}p#TmD5nFs~jjq0K|?EI%J^$N(nMxs+BY7 z0Lo1#3%O>7QOGqkPAOItZX1)?%k0}OjJ;hLJL5Uya9Pb-oGZ2;?P3@G#^!WQ?q-To zV?uJ3riqbULK$d!g`~w$I=Qj?XPVoB23@Czs5RMDCEaR>z(R@z?*bZ>zZ?`l=Ae(R zbP|TV=_Zk)q|&uvHk#J@WG}zONBfxzytg0M@mak4!1`Oxkm7VS))D~bP;kSAk|FVQ z(?^4TP?S@;9_FUTVdp}0wyo8olWRefD}5FAEOM~)QaQ>y-?TRi!?{Dd zHeg#0D+Au@?RD*W^4M#mHOra)%F$N7^3m6|Qm;*-Uf$B>c-(NeIc1G6D~G#>D*gD_ zNMmC^1{YIUin_4(bMX;&eXmr`Erj%g*u`B7?rMmoRWCA|r-^Z6>LK>g3AqKn5nZqR zIRvF76abdUfr1J6Sd^54VW#h*3vR$TH0R2wZ3P3S7>4O6hFSVr_U?b>_1*lHe>^9L z;kmri@#(UA{z0eI!jErbHl7#{x;eb@ZyG*UDdzLp$=n}(_33TKaDP%6%siW=z5Lb!ZsilM{Mj_0~od<7N^H9v^~bJdU17ph8MF|%mX z%i~44{_<}-$47gP>`ktUt45Dxf!8$q^kx7e%p`hmqbia6(Rt6yd89%Rs9^=`YrtRa zBFz)iz;#Z>^)837oIxTtVNI`$fJ96!2$ZQ9MtVWi#8o&j!(zNVtuiVMEy9l)bW{&J zigx8LRZ)h(I(YT(Qkfmes%MKD~1A^=ee%AkA^ z)DdkQsFy)QQ9Oj;nNXG^@H7`@t5K~*Uh~S3&dIrp}ma4h6VDI$81mV4SKPWcXJ?F ziJX*-Z_1dopq0=TN9mMc=8mUC6*UWUjN(Jpj?9Np=AW77NNKly;Jc^we`fK>W%l>- zn=ij$_pE@=wVUy2vj3U!iMoA02`H`>SH;m8qYa}qV8r!a3_k!m# zENZSUdsc9G7%bd_D4$6hUH9p9{o13V`?1-J$EvwDk+fDGaqcvQz9~XE4($+x77zqU z5H76>Szp8rz7CobWy?PhQDU*nFgJbF!LNUVsr9uaGp?qA{vS)T_q)SZ88-MD={@}q zbLf5i-yHM)^`E2B5Afe|>Y_c-l6;Qcj$cut@rio(g*^>cK;4YBVQir>({9FiVlgN? z2JM{gS#@X(?9ZXm0?bBDM|(=fuu$P1Mtn3MHZgaaDjnxqvAa@p`6OMQ0i@5X)zme@ z_vbk{@ske|AL~jS81}6(ZS>uXwoINFVG(MqU`k=3vXyV}%Ae;Bn%Z){lumwV14=|1 z_p~WC^J}?fl*6n#)q;fZ$d@_&NF zwfwrbn>&{F=oD+)JMC(`9hX{5LF4j(>+TZ+&XFQ6@4doHw4tzQvUHk_##T268cM(| z{k1u3vtv~(&ZA=!8_Ot0}NXB$&PyByyU?EK5WA8O^oaU@EToTszujJ~4A+%$!|D zE5mvBPyIgy#rxNH<|c1Fmc6m~8XU@Aw@QO|Zn^^>`t47X-N`QRsL8fJO*QElab0$Y z&GDd#B)b~0*%(~K73R`qd9NvHEo`;cnmMG|G4TPhrGW-_C!0uYqQ0pyPLt+hvXPER z$LZDyt>_+(lTPajqXGhVVofRJ)?k7g3>dc}`+|gN@GicjIp|vZx{vM;cF(-YIf`SF|FwatZ8CQ>EjBqctmw~pcee6wu@( zjFWrJ&Z63pMvJkq^DY*8j-`s$rW@@9nob`$s*Z=#e(%#b$>aOqrhB_T>Z;#m|2_q> zzmLPSe_!5zyZGGyhbMmG1sGBuz`f8sC9hr}GS6+U!bE37!5 zc5K%rn!X-Wj;Zx%50KW5h^CFCaoAbh*(w;Ku)!F2IzKRXDI;ig9(TYoo$nVr-POIH zQQhhc+41wtx$E`#l=HznKJmJF+0AO?^TJ-^AP~TW$ug_h5`3u+wKsTEN6dcHI=g-$qxgLy9{B*M{E@%|+E3V#v%&24E&2OnI|720aUY0J>UzvY|pcsm>dilAU#7Gp9p4jbk{@^UGS$u|FtjYg#Nv@#MhdP$k$7}d6; zj?8cjGq67FLK?Llvsh`1V%w1N_72Jog5>B8fdg>RG_g}xw!@kSIw6hDT}luY^p zV>793TXVW$>;!xzrnOB6Z6Y-$C7V{swt;SD`rE>qO1P>w-=wj@nPKzTbAm@+d=-$H zXXx?mvld~u$nRQ8R#!OOf5_NrMgHd}mKhTU=T?L|^sAxJ5HDmZ5|`=d>JtLn!PNbmocevs$oQSecDp zlvec&!#eV$TY~Z3ubpJwco<6>$B#Bx9DL`z_n-*cyxyH62Y1hncLOYFESVnO{da!zzEXGjv#?DW>LG3gx;5!E zkW3qmnrIZYotVzHZN!AlKmg)wXZ zH<5kQkLdPWHsc(4?Ws>*ZO&Cs5;fVi4NxlOUE<~dn5=1cjd`WEs!tqtHSVa^#GM{_ z%6mlj=;uT@cSm43`S@P>Y=t9P?73$8Kp83X_o8J}d`vseG>>KYyz{H3shU1*yDC}m zOHF-i-n(bDk-P6@J2mAjV1i*on{i1KE;B@#jAT@SF+nhFRwRm6T!QEU2U!Tya9GkR zj5jGcQntuzc61_TE2T<{VB0dP?ULrz*sXeWO#VZyusLCK(yMeMZpApRGVU|_+`p?? zg?4Y@01Ueuc3t&rH_va9OHP6NN|(_^EbU6&9%31oWOx7e=-XP>y6%_y>*`d>@}T^4 zF76Kjn%I2J%HEB-aa_8$60bSgb0#Y^c8kwt?U-;SW)~NX<5lHM@vQ~B5^(zt5l+To8GPT@kgIY=K(|vtf)D->R=9D+tY;1O1 z*T^7_v8j-;S;gC+2F;r1HM^H&a9_yQUjG{5-7L!hz2%V11=iS@hPwTnAJt}brN759 zD%G=&F8WSx1!*%eT2ojkn^($*J zqEXt|Yoy_+)Q4o6B^E~qPupTY_x=&E)GM`o{90qO3O}oinBCPAwj~N3fCGgBYJ(O3 zp+=_`Wyti_OLvl7GtvJwUuf&bTl*=}m_HQ|5--UFApXH`DX{nM<{UlL1~Q8&1%Cjk z(W?MRVaC-l;YxZ$YsrHwVL&)>3=5x&Gogi$g)DT9BdghvC^00x#_-hmMscPv0rSeP zu6k>g?69R*-gcs!yIRF?d0;c+iluF#0{#fQkXMg;-V>j7T>l;j*4r-KYBk;1285g? zY~3htJoek~Au*sdT4`YHx9c8YyoOcnCF>a72afKcLuC)aWapB}jtN&nNTT)S*lCTC z3=}uYVifLVTDU_u`=&Pu3L*1QS8_qdAbnvKX9kImZp~JTZ5_O9i+$0*)_Pvs$KKc5 zYkT4(vsTao#=vm}a97OI)_A!;sSbM;tM>WJ-HTS?-g0HQNcy~1CcWc9=;rOLArFpDDSecdbquS;u=tRdIpE4@jbM~ZfP_wq@|=PAXiG} zLPms2iSftD(GBUyp+W-dUn|EoB5dnzb&U41?F))&1&9H>l{;m08wH>afK~s&R;Lik z{tnM$sZ|dO@)!$CSYB4^)x0Io+hGSs)6#Zk&6m@0KZh~vUAmvsi+KaAu^N(9sK7Wj zGs390K1s}(1Ij3kRt7-dZX#8)gKl3)Wv%JjHk}iKVB@ZIo3qjz6*!Be?3RT53Q4cx zgJed5A89oksXW+!+7$bW$C9?|nawCA2|D@VI*K3BM6k zbND8^8E0>e*&(Y*>6kM`lNm%^;}a0`IuywFH(DpP=J@qy;lbdAfHwX@9) zOnuVx#}68%wb4zDq0SxKt5TCePR*rQznH7`+2yCDn`cdTE4qF{FafrHzI^D=>vhX3 zc1IOWAW?bQYr>6MD&h`zrpgA+Ht z{Yv1f6`h6@o|xQyzwpb0!)LV8V=E)akA#a^fVgHfYotM5gid&U0qi8#Bg@GA)q<~Ji*vjf!xQIYxCcf<$sj_(dDrGAIr;H;y#^S^BVg@XUb;e{Qd)qyFs7?Rz%Kun?rE?rss++%3n|f((8v%v)1X<_%_Bs?t3?l7_?xKTBvrCjUF2;v@%9SPl000E>McC#T$3{OVu9vXBU7p#7SR_98$ z5<9+Bhsr6@4CZj1uvZG=+(cd!%c(YrL+5-P`oSR20|&`Ik9Ftv$9?O*Irisp zSK5ke%PwabgmP{K5yS#!>AZ9o0AJ`gxW;27&@BzJN@~HS^Z_Z3twQW^s^Q`FTvMTp zFnn0|wAN^vHRnh}LaXT=O1ru^&M7Gp(~o)})qAmGzXmA>aspc)x$1N}WaaV=jta|P z4In5BR0c(?7e?P$g*zMqRZnA?1GETvBex-SImOD)(r!U*GMy})0BKzMcRYh7OKzfS zDXtG))}mJ!yymz?+STA@0HF57XKr!dH*2#1z+C!d4PBBHmIuOdgyvvX1Bma$iyv?Q zEIk9O{HC?qtm+Q!`{2ICCxuxP4H<+;0DquV zP8Z>Yc_{5ZOE^pcGoc-^@MNvKhHwg}w1ONtJq+c~l6D|=yk*9ga@E*L@upn|y67ba zzn&o8k^+To+qWf%NL%4SN7OFlzzzI7J)_Iw=^#@ESw)AZ^)>zl+LE>;Y)l(l+0#e? z220lL#uO(*d+0%JTJrbqvRuT|d{Q}2#C#&=9zzGcaK!#6o$S7E)HXThr$-&UCtYXoFL=c(9|o52;g$3q_lo~b7AY<3T5khqj4-8uF%6dGnJQutT>WHqCw`pjfs z^k#w<=tbZ*{uH~x6$oWim7(`T8Gv1zF>9t{b4%UT+E7)C3kR$TusVa)l80~wkpQB- z0thJ(ON&FYYi@Z>mXc@G0d9=&Z-Hwh0X(CT8>ZKCdU`A0#2EY%+sTLAJg0`+>2?!S zJflV2$Q1EB3klrF+Rtn{xPi6FEyr&}!R>qDb*~T9?Rr8bC$0qiaYn2zKgwo7{4rtE zA%#`Z2Hb4_R$$k&xu(Fkf5A z;CG9-&^zeLmf!ZV-(naTvU-3~Sf3I;7GS-4KIHX`5x|rmzIg{c^byz-L)j5ppI3@V zZB##xpLCaaXr2EVsxI2$G*x44&Vt6&TnDq-%cx+Qsy%L}VriLy6Mqmj4$$5gV4~s( zXzq!a7#D)Q)xP&u1osw2Nl+N^3QeR*;vp)SitjiGkbnV@>fR>|2~~!9fUNyTfzY_% zeQ{PN!L%TI_c0)t=N8VmA(&@C_UcK3rQr+{+!~H3uqnD>S^232M6p}kRG*v$l<)QvnvNWOt}!BrZ+7`B7lj-cP80hF$E>NO zDaMY7>1>`S4=17vCpxP8*f(_EMxviWBzpRsR+EFDg*N&8*0?qu+-nn3?$?H5S%(uFQt(-e?uZsJx)XXEGrJ^xNKnJK-cv4 z*#MocPixu=5$7e%_;L~*>O!o@RQgR{Fa0sv-UA;1!crg=zX%niIRK$LAQk=wWOSg# z+Ys==zIYlZ5EKN!C1O9pcmP3wdVCnV8SWww5E7wMbL*Hfri4fXJY zKL9cnKnvr%Rc_iCpPO8D#DaVQ~JI8RzMf_JwX zUM*B%m#8inEM;0rKE=n{Y}+{qh<}u80h|1h<%6@e_(W#0pJV~@4JqOzataXnnf6eH zX!>uc!Pf!OVW5q}{hOBJycVpt)XzCUiT>ve) z#`xHhM)?Qz+3{13gr2`Fo4~L9ny%8_jS91F^}cL!@I7VS4a;wSQ^(maZLZ=s1YM&E zY9ggswIwLCHcK~Z$}e(ro1Yo3>=Ap-p;-#hba7_I0kwAy-pl$Rf0L8&y&}nI&e!tu*B2Gdz{qPUnBGl20ueWIUshWvKHNE=4lNPFqPrjG) zz8{LM;=>rX^?Wayhu@19*d{~^$Ez^a`mUeJq|@@e;uj7Pz8|vh!Vnw+6Os_Cg$29s zo2j)V0JbEA%UYkbXHEIkenHues4kaHcv>v$FNOt}iK{Va-9Me5Sd8vQ1W{}RksSAv zxFb_A=3B5H28%Iecq{wnD`Tk(a3sxYHJ;AV}Ho|74IxfEE9(}`Q$(iVRL#LaO4+7wBebN+N7 z&%~;}4CDl#(Y-)SOT*Of6vI z=I$)0#BcDlV9{WSjUfzR6Jm+Pns@-?oZ_mp{ilc3x{hVOpHJI+avk7%JK5Vf)s%9} zcP9I7gO%i_CUP)&uTSb*FytVx*X*eg8s*WI5Q3OQtTBI3w`|4{M20FBF?jrq!PMHG zB5O|*qR(-|fH~!g>XfgpIUo|nHu2l&z1wQzjY<`N1bq4*c~JQK6*-EGVG1S$I{@Gr zuNRIzW4hz_3*e;k&o1IyRYFztUVoPyfYH@enan9ESilRtguBo{;F{T}n@>3k} zCUe9afF=%qM}2Azipr3F;vh`OtxmgvibaSi|0W8|U7j??0~W7a;sS@mk`>=8S_~We z2GsA3YZpKrTru9XB=8teVE-AwIpHB@K+p)Hbrd)qyh1D(uZL{S%vQEbER;y248D8} zWLxG)x)XufkFh@S-ho`p9P^>OgRx{Aw5%V*yJFAzabJqyxG7TbT!#xT!wf&Bor4T{ zL zxTsL!GC~{Dqz1i9R$~az0@OHPBBhBc0P6)>O~vI{2#vY+rH#@_3>wkwYES%L@E7+3 zEL=@NuRVHW_G5QNdjtp3&RGj#4x$e%)grr%0Sr}??OG|mrQK2lrX^|#D@E2{lqq>z zkg)D$;g|Bl)J$k3RshVHhfgwYV=84Tl3}8eVwHdyl7OU;K)uuKX~-@b6`WNP30A>0 z#ONiu2bw=Vt;PJ&fCRRk*Bi=E35J|uc7oT1$Q=)7?DE9~;Pb}gGV@6oEI)>w)C)Gc z1_md}F{jbU1w(5xEj1d`RvTb}`{q+Lfq&Z+j-zF0@z~44A0Mul3>LFIG zo>p~5##=YGh8Z%KGbBPmZ2~<8^I}GEq1cksg=>qZ{l%(^kiOoFJQ90j$%*P$JhA>b z>v_C{%^&lIyL0b+wd%T3tD`9B2u*Zj5@+BI0sCXdBlTQub6|KAL)$gmqO$F>xXr?5 z?t7D2FDvV=XL;wzm9kPLKITxRb;v01+|=y}j2H}iCjDwSZ3T|&OW?|UeIb^YD;3NGj-J zftY!7COI57Tx`9Cd#6uS^UGkVEH+7;56&JO2)Z|B21eJiaxa|7TWaG;S!OD2ce!yAlj4B-9?nU{EMQmzctG0EYZ|*8IzV_{&^sDpmnidlu zpk}mu%Ga^@pir$4tH1>j6Az<)PHi?@%YsQkh8Y6-?$cV_Xj9j;=enlEOec&TURiw;|8j$+x?DD^YQfWICX8eA-Tm`(@vUFZNOC_eGF!g*KFs*$XK2|eR4^{nkz?+7!%A}Fn00QON*)(9jl zU9;1nkTV6|R#}|o4^7;81@Rl|z9exW&S*|_nHna!KBd@%*IK<7b8(H6K$;BAf=Sjq zCL#s{5&roczQ!w5!eKE9?NhjNeS|$DhQGtK@>+&9?K1Z#12M#c5j8oq!#_acV<8F$ z0dM^4IsftL18wT$1~jiJF?~}e<8Sb&QvJpnR;S~p;aup;2is-l^$WlH+CvZ3u(-^p z2bizG@kkT+RtX!))~Y-=7CEzOr)zs;)G|H&cp{{b0+9hyh~69!1(li?CbF(J{u(`;&~y;S_tXcy`8i+F>P^3EZC68Cyr5oY11M8A}Jz?Sts28S%~=#rDtxgQX$ z(kG?V=m*)E_W?!~SD3rIrnUL>GQIDxc?8f-E4~Exb}SE6xL_#E>I{HW07t&V4C&Ds z7;Wgb^omX^*V2?KuX2I`FS zz$*YC+>Zr-mORUf8?D<<@wsA?8t~vZE~fj_ov;rpAu%5eY`agc112pwW3Cl8bj6%5 z0rcOK3Kk}~KJ7qK-a~l{xK3^1bt7)p9CeytWX-d#{qDfGoH2t|`u6Gf2SYc_+cvsJ z^dJiOp@7e%%YbSOdLPQrio?1E@{>#&yB&3n$~9~>_>=I4U_Zl6AvBl^sy@><1KAyx zQVNm+iEGKk9Awt}R8DSWb{w8K5vNVZ5{#)B^O>PYyGtz|Y3M4~P;s&8y;Z703leW# z7nVl#;d@oi)t;toA?MwCBBy}!P88h9Pa%e6^^>`YCxOq&>K(Y`ASVChuf zl80t=SF^diA&bS=HTRI4S~oSd-Ei&Za0%z$;jF>;9r4WPF(T*i(*ieW zKVirn^JOu}qHqo??-ea?(~JAv;A)5dS?t${VW za}?FE$5C2X1BCdfA$;UVaH=QOG1qxCHH{WHU^{@{`xe)e2en6~JDYYfl#ElUuAS0+ z-YEdid+k@bvd|+@_cmmzj*spHYUWq@oOl|Ygerfw-U z)5z8&znXnuUxhB<)83FO^1Y&EEQ!%&%eq0cyR;Y>ZwAY{$)9Qdnvs5xrfE+7cXe@S zZ7x{aBRtm`MqbW!LXGM|olswi2o42+CU5Y#dgR|0WQP%bx!GH`O|J#n>gp+&B`yJqh4&=!(9*!i@aFE3({q=G z)4Z8jz(W^6!3-?ip3W_F1F*NJD&MQ+_E3mY#x}VZSPYiQv2y=W&@^1A0K{0-LmoHv zTFuIlEUY=pcbig|X9qG_3)sEU%vC+LX5v7yIaFwTA=Wu{7$5PHdv@cjvLAZ2OD}v( zX?@a%dY5Jsa?Qazzo5|a=ULk^*4iTQ;FUg)zPhG`Gw!0&XtXkeqTj)>53rAQX3t=U z?2_Bnd-GqzzWm!!G1Cp}gZ9(U(eR(xC+|bJ{yD0Ylbe{_1u^*pcg0=+4u_Bd2=_(+ z7|{Yb8Ne4|Y{^~DF)eiwtvDPwV)zw4o%)~61R&q)kxuIIYpsW?w#2)$mV>J48n${F zuC_M_pV+dL#^}EI_4_Fs~jO+T9l&jpcCO)cqv{QqR{-RG^|d_EY| zD73pq-t5oHWMq;e0V5ZzU~H*Bwq|E*A1d=^)Kg5mG|phPubfz6RW_%C7cbc>`*&C& z`TW#Yj9}`@V$l9Kl3?m_xaCZ|OEcfGKok^2@v%!Xa3FRaJ~)BA1}IWWIR#Mici-oC zXPg;Xh@%h+05XGq?!el2r($>SVAUTEqJl?XTId~Co1IP%3Oj-JF~H*iaAW_U;4TF? zD0n7do&v@QMOkUi!jWMMgp8ndXhA1cPqG#8g>EAN5d`31&=e7oa4*1)2ZQ{+L&Ozl zi$coL(WL!U!`TFWp*?8K?02Hu77QG0AVoGF0>I3W@A6JMf(xB50XY?sQ6Y%31sPcs zB9#XarRAM|15CIDK^iM4B(+;`=s9$;ENsnr5Xs5q%-X{q*p(Vhp+IszcfHkwFa*nc zc?(!Duwh8vlsC+48;79%?a@z&2;`68vptBf5t;u^N0RQwQtSvQ2%STYsu1!D#0bTxEyg0>J4Wz%8med;#=v{Z&b?*!<{n2n(bqh6s1 zIb08`J{Pyi#UAQLVBfz>Dy=J!3S#w1o4pAlgMP<(7v9I6Ks5|pzGGx(S6RYcmi5*~ zI%^F>c?)Wo2%WpKjd2uTK&Y|RfTsv?hS~y2;MyF%(L=p3!_h|9cI+H2k(=)OzFplZ;u<(C5wJ@f}%=1i$*2|zfd zG&ZXc<5>z2T{WXmDF|DKg)~bp0^uC&Q471F22s*}FEAggpb9{?scf)2W>e=7&VWw~ zTT(6n*mDEik%hJBFg*hvDu(1GIW8W-Vz~cuMo^mk(AaKU_*VpsX&mCoSqe5AQmqmW zmSr)eh>1`)A?&$as%kbClnO*r#tRUukJuanL~8KM(pPbKIeu-cM%M+1LGQ7^Wv=FN zu~2hFPHVJmiysuM@be=Z1D*q#2- zHDYPFnuyrvxP)O-s=qISM9CS^LF6$}3E3*EvN5dCmEegeIp9DbEcv7*3or{VarDXC zF&DJQCQC#)VM-jm;s92*6vL3DA4FId5TR0-qadjWZs7$ zaQO94JjL3VSVS?_d<<**oKad*b#$9JKi`Rt)RHKZtTHpO-pI5D~xz$`$XMfUsjAWA`vYzB8x*u!1I4nU}gRb~Zc00cvT zfb~^}dDudX;Q9bClt6IM*#ZS2fDN?1bP_4d2T0m0m@Di>x3IS*j)8Nt8ge!G4B!kY zR49w=>?Z;DZw+^WRY80<$Rq7u8h|oZKpp^g#Z=ArC9HX2k^L?_OWvx5Ydl?0mOwlP zh%_RoOxeF74_aA_tUl}LV2zU$1kL^0>?;$(=>}@v8vu9Kk&YVF%2iXi8L|BdqHo~x zGCVF2jBFJ_BOgKJbfwVOLc|`u;$1npjNy}MGN=n5*rfMIYL^8k_E?tYoFD9C)pu=Z z$OpPsL8Z?L(MG%S#gqX^;gCFQ-`(9fH(eb`IT{#)fNU|+K&-2>eiFbE#!J+)1PMya zC&R9g*xLSlO+HnVXZDA?g4tq;ymV{WOtr(c6S4}uR!ZcOvx|1DQxe|^qu$)M`C*Gb zX3=|h!DbzZcnK|?iKFBN*h#i%%V0KPRg6dwuR81>t7l0EF)RQ($O;q)%5Wa6t{MUy zLKYVC6q+dW5<(7?JJ3lnwd3f+E;w>MMWA(@64i844`mABCU5*nnhkt9DD1-RKPr6^ znlbb&%P7bv;n)q}bP60}&0I^hMcd*GeKfab3Fa}M7) zQ3*^#En)gWL=0lRl^X?Th#fZmaz<;MYrJXmn?WD6O*|nZV%DZeukCk9-Jl2w0#XwT z5dAz0AeWv$JRjON_d03+uLSZO02&P-VEV0B6oUqrfEslKSSk&N397nFVx~{xID`%b zWu8ocPio|S(bjeaCTrq;ut0(L@Z2~~5lZB&}dNQpw%Y&t=)YWrV1 zXntZ}^HrP);HX$Zn`zfXm(pz`Q;($Ac7_}oh*cRVUAQ4 zb#w0`@EHLPpjnU&6nFrKvt14Dg42N(ggUF>*JU?Wo9FvJ1gUl7uX6?U;( zB;J<6X9I*vU{8B2@-1iq91&rMJq5S}qx5YHyNAMTmIDMMaG$GAvv3Ifa@ZMWRHs;h zzJw~pE0VSV9H?GlbG_sY_X{@MXbB=LzQ-q_Fv%OR+!2OC2XJJ#9ZOp{hKhZ@L(qSa z4lM>?$>oT%CzCUREGnRMo#CT9Y8>yC!@mjy8Hup_1S&(IN+A_qa_J=zKTt!dappge zei)@m(7%xiS~ClnK}L2@!}47*dqNH07)`Y)-EvTm@PSeu2MuTv`3(>~6#duBL=J9H zt3uOKts@zwqQ;dgjYIEQKi52-UNbeaG?&GitRUy|QC;V_sSM1zM&F3%RFvAbB9S&N zn0`PIwmokda5|<+H4z|)(5D2NqkL3$DUU<5fI<(TfVoiuu)Wz=Kr=-Rz*(a#qXF}- z`25pb!@CO0c>p~$E9{EE#V<$Gs*q5*pTPbC&e&vx0Ep8c6qfLrp_4W%K!q6JXoofb zmH|Ic?|&)6-t0C3*wqD454W4jYmBH+SO}>m#p-dGrm7GDhZL%c614DqQh+|C&&N(L za^VtFMg&*M;_~oeimO{)5P&8Fs5j>@31P21M~@ZS=W=M#S_EH7L^AqZm&m$gU^z%} zTvmt20GA@}7AJ-Q36#;vnxDf3931SfhrTUu?dd|3f0;>myQ z%$Fd-GYHaeTxeIXbCl1M`8Fd)Y$LJ;i6D9sZa_nPXw@D>VO%iO_(~&NJ-?WPca#1X zdYM`%4NR~rjgP7*IXJ>4E@Lva`#CgXE<`9stTpF?`OloYDaK8dAbNs&=LjT~1a9Gw zBnu#m1GUbj=RVrchf_&=2={aLm@^4>0}uxwyOHi)8n%5r^J8Y}p~LXwky%y_U7*g3 zY*FnW>#|n|${oGSKY-1kG7HQ>)3IbRb%p~F_G(g$X%181tT~l|!|jGbLIRe_IEy?# zGqZ*1-dsV8T?(MW=BM~qu75=|Zy_2S28W3CP}nmF%f&#Q1U{aS19Nyi`RLe%>T+V) z5yHxy0Ul@ufVfDkHB8^cE#+v}9`_EVSvk0D)INiS9Vc)MVqa^oYI_ z0S@rJ4^ZQ~<~m3YMjjo((nX;=rk_5QqVkbANgAGWXyR3W$l@ z0W4Nef({OQb`@xb$rM0X%KPqs*mj-piHv&Zb+s*MAIgZ=etID*1YQQdFD6oeHpzMYup_br70Ne(E zQ^>k94j(N!bKBn+t+|%+k}NbM`CvXct0O+A4(`O@KFPu9fKB@MeEK{m{v!pGo8ZLo zM=<~e4WsEK1U|bf{!Fcc6c)I$`rxx8L>Uz*y_d-P9eMnOzKH(?VZg_va|(CL~1_X3k8U7rnoywNcdXlDfmtIW`^wDc6P zFcmt+(#C;dMKZ7f=v#NN*p>^zA7Pai3kDdsFR0{E>;qfju)@zgg%vvmk7nc~f|H1{ zffFmQOsK3!PsHWOjMh*o9SONAKtYKZkEmm&4hQ{vKcTleRj z>9s6HjR#E$@dpPq)W)EKu!4+0R-{JQkVq}Up#%Yesl1dp!DnZ8iV4(6zjtt3;r9S; zQyhmXlxGX?*8_Ys$Wg#g5~{Hb9L8`ick6`77vH}D?;L1uWpqT>*HT)1qnexik);ubrM# z*G?+LUy)2kP$D1(9GMu9f{}5(n1<^Q47V|?iVWi}rnNG{{RKz9LM^B(BO!9lv^E?1 zINMV-V7}L@tTYL_K{sqPZL+{3l!iiDyM2$?{L{`r8v1fVn+yIKT6!!V^=X2Fs^tirFiA51 zh;z7{E01{2-VuUzBBR!Ul~N}vZtKMO(J4lJ&dJ={0XVIPxB(nlRhNWv6P6hrBLp~ z0@7GG0I{8rA==ECEps?>{a=n~_$~^|_-r6bsbEsOqv|FD2fDn-@PcYhtt_3R1TMgm z94P7E>YZA?84K9$E{z1b)7V85$(lmclmN%aVsd7~z=nM1^Q~TTYpVk(27`O7OU4_W0Z4JaW+XG5$%#mT2!j#gqI#eKf$DdFORu#>SDmNo8am6%Y z6cQ1N0csDTYY!$j5dgu}8CZERHi=CNNXu6D35a~^-i?dwDJN5&_9P@BNTk7-pl+HL z6;`GCH6TYx0~Tp;22lYr03_}TXb$Hy%GEjgGmzZ8ShETE{m zl)#5P@{@DR8`(Kwd2kFg70h?6w2#!8*&k&0-WrE~xa zy^ncr;Kbj@v45U|kKHI4vT*=ZSpi!^LBOKTD#v314izX5qi_iE6QI6K6odx2CBR+^ zLS>CNco5W26Hrh$`BXRom?S9+DgaI?nB^)j>Lv%q>9~BP`mE?N4zfm#{kM=28>b+&d!}ZOhEk^}{4MUm0H6mboy%k` z7cqpy(DV-hKr(Hd4Qtn1*0|#q62DApTV3XGR5tRWq`5+%BUAu!iN1@$IsnKokn2E` zNrM5E8sYJvq@C*pR*|g$ENja9uTzM!*(~G~v_-MdodWG+O*s;Bv<2+2yW%Vv^Bi7e zx$z>LFsIL-LC%YiDo>)E08U0HMDK9||gSSMsjqI;@Gsvj$Z@odS`!x%^ zvB33NM|$q(TSi)_F;YowOAf>>C6hw;X9=4SMh`79-;l^>5$s(U)da)56ibV*E<`J& z;1b1zCIW|R#SXm~Rv*Ch!5=)C^*Dfrd4p%&yjId{C2brimxy!i^c)p7V`)5+IGIEY zLXQG)fas?|Lg1KU*saO~b(2t713-=izzJH`tiC!=cD?}kQvj$Nq_9CmS!o+(YXZLu zz$c|&_BIW*$2kcl$^zl|1qmur_~jtN>M3KZ0ESI;QCj#8Jt8Gug^CDe*G8@q1J5^!WU z1)}Fby0X=!iO&a$qKfm?34m+;c;SV+UwTZKt(p~Pvs#fTzX>H%B#31cTm!BQ(z3V& zV^wYC2A14g0ClvG=HQ5xdWc6XrK|zwBDEP7ReVePf_rJWs2KAMA;^|Y@DRf$VNbLt zX8_nWwmtU={~bO=0C~?C!t63%i22NgFk!wzK@3p;2tc=lI!=S-R6GaVON**0#Ns({ z6dMhiRW(ZY4qey&aBE9M;KAd45m*uc?CM#v3T&8z1&bc#g0NihOr!ZwmRHfRc^1iR za7UNL(3Zf)5fcv9h<*PRgk$dWv3At>fu(_fTnc1Nn+MYaP-RR|%_ZA<7Yg6@Z>lV{ z7G8w#IYmY0$Y@IqmkKPO*UZ?(p)W>tMM;wFTjmX$ikjLcv^ z?bLYO7c~eI=>s*X0P3a*kVYfy#}hI|!SQa$-wpz(OC6xFYA`B%{#MnuIj5`EXucs0 zfmam@^|_kVdHP$!PX|amGvIXec$*?()eg`wjsDt0K4J2tSVF3*1MoED zR{%MT05~iVvxYF+_l}SHUZ?(X&AGD ztUB)i6j}i}L^NKAh*~PoaK9*&Q+7Y7Hb-XE3DT*UB0B(21a|>!c;i3cUgm5kvtGVL zYs4xxcwUjNQ|E3_Qs8trW*tOIAd_SC9o&n~O|^G;jJUaps1}IyhP#TrQfndvevZh! z$8$qeQCJm9bGJp#)1h#=@Es6YC+d7Xdp9e3JDL&D$GoRMsxu-00xgvvQMAKuR)usWtiz6X&_h`Akz zKm^3f5;U$gYF(xssqK7w-BL57mCOezv%k59(v6l%5^+03eh|B5M5CH(pnYAQw{eMi z4~)I7!Yq}$8V(*@!A% zcjV>&>E(a@F9E@9*7X2T*pdLqQ4+vWnu~7+i2PEQ0*S&3AR&iDChaD>X)4?3vw|4O z{MUpKOPe!kx9!`F2$S1%LEc9HryC zPXcugK%5(~1p0QI1V;-PhYb0k_#B9hcmRqjA;%DpiDb}#8WC&PN1!%G0Yp)Zc-lCp z`|$DNb9ZD^%Q0a#CJd4{b>d-Z#()e+xS2l=1mnQrcx8B2b*c3-`qdm83Ea%F=v3yy4Kq%{O*5=YT$j5fmTXY#&?3v|`tvw)CdWNn@hjID@ zERwJgB(T&lIBMu{nZUt6rqf+EsUJ@nQ5luWA5@p!;^RQ$S{YBEX_&3giGN_*VUqda z+tnsVTA}tz{M$CQ+0@dM*2f};^sVVZir|)!-JxtOvT&QyC>3t=z`+~b^RkP~hH=ZV zTr~|p1w+m#gKHYC3zgtj1hNK{&;f7qLT+ALAKz4gjR+VL@?0RY2W-YUaa0O5L8wg= z011GissxNZ-tk(UQ>!$f275M937{^GKtlKuslM+-%Wqrn=nFH-@9u~E-5~%%E&}qh zU96iru(sE>k-E|gLnVlrltgS%Z!ly9Ga6vLI0<+#5=s-LIq~^?(UMv96Q2(j4+glc z02QGjO0Yr4yY8O)r@v&)fA}B!AOB0nAO3@2gyH~&b&$Ans$n@O`Kq+L6uB!iI;T+O z2nZI|4RYziPAKhJKqVr|OkgSHgs8|$DMKo%o8J#G*A9TZ;`rQset!Jq^7Q4_1A4k% zQWW7|W!v+WYxwq!(`_iX?GaEeqc@w8;xI8Qv@L1ro`H`GPT##2LNQ3{?**`EGbK6h znPMDbp-n38k})@2pn3}$If;87a7KD?7_h8|h|BxK*<h+0+CXLQ$c7f0>=QZ z6@a4&_873+1alyg90p*0>Y!A<1ihV4%2b03ev&W(sfhP({#{0 zaZ}0c81N0Pi^yPXb*f9M<&&5{0me5PDgrX@I9N#7<&4l6^tCEu+-gf5_Bwd;odfD1f*R+u__Ln&t}G+R z6zrIRbARd2L5%1K<*t4Pm4_=wC8tqxQb>$CiCYjHB@V0p?i7+yi3~PRo;&J%%J}4U zc!X=(y z>Jug5g$*$3Yd+rj*cXuTnLC>n+Xa98cSnH^M5)aU01&2*xd2cM0NRXBM3K)YIRrAw zLcM_GASTx4uKa^gE)v6_VvH=;!_6`g5sxTSyD9C+tZ*`R<8-tCO-3f}19$0!@&vdu z+NdgLROcZ6+d6?*VYlOSEhDAT|jxIY6)ozd~Yom(La-)R-L11 zaLIIAK=tT8q1;~ndX&nP*}V)OY>%De)Jysc$^j~oA%s!ca9hciERkdvAJqlfF#^ENsk(SOh-{dk`m17_T!fsOMfr--fU+_-4nkavcEz&Ja%3Wn};7?DA-KE6h>?FHK+qlo!&6jH2ANkC%`1OZ1%;f813+|J@DP}%0`n6A-v~hMdP13t zng>_iy7Lu|DsGbAr-8!0C+SKobJSB;XE4uwWT72OsekFHl~5j< zwxagR_&%K}PPvv(#VIgl&OxMwVWAFVqdU-=LQ#eEkh^HoqFOGp(nDMp|mLv99|qBK}~0!pJ;h|PeALx|#F@OLPadnwKuqJ?$~ zguM|?jaVT#8gazH>sgUfaEAn^HXZ+_fa$naM8B`sEEo`ha-c*LX%4DC2_uddfhu4d z2ewFukpzEqI`#&5n%jcrT+NdZ85Ek3CtO|jrC@8t76Vpxh;z58A9`})ofOKJpJ%8J z=N`8^w8a^&)zHFNn5U8i$_DQ?Qk9XiOux08d(~q9TW8bT?tjdkWP2cMC|^adZ`yRG zQtJA}Gy(d!Bm#VY7?8x!ID&EG%SCkB#A%nz`SAv0UaMerF&P7YyGBFKAi*^n)V0F@ zqtnff&}p)ik=bhQXXzaUaOZVY_1|R$<-H>b-n$K6oR}XJfn^g+LmHARR>gU}a@#Qg zP+S3!69il_0FH=!&-D|<3CSq?f>GgJf$m#T=jS%=vhg)rD>@j9r837yVT5Bj7uL!k zZ$H6}Xd^mBt+jSiIb`#`@#Df@^-+}m#$PqAs_+k|HY;4HV)PSbeYL5nhqegmIXeYg zrVmopWz8bT3UCpX<@;cB?H(>aI)j)0>)%``-7QoBKJA0QR7)-Mks!VhpBLn#RGw3) zKXR<@T}VctTIqJJ3CcPwWevy~+DyU)!K}e9(RKyv*CU!ZaL*tH>Swb!hO>0D)z=q* z;3GN=un8i_`v)`N-%_#DC=LY$K&~Lo<$uU}a8aX<`dbR@1V=S~=jc4#XAG)FLcq)i{+VP=-|^ zUM7AK!|1g7u;sKLNyP)kZV`0JF9nhCv9<}1~mjAEI$Ydg=a?794 z7>%h@e|Za`!RT{>2Ga0nGM;mWs&I;-kvH)F(7)8zG81`@W6r4Y>n;QXMgVeFAv`F| zB>ESLgKja!w9UG!ia7M5kvqujAv~1|_1=vHcugS9ULpR zzZkG~4I!zPQJYngS6B~V-B+6x!agpPx(TRla`RFDTYAZF*!yq0icw3FSyTZzDhqH? zpnz0lv|PmOm>SgL5EPUu1Wu$$f>5m})=aaStQY&2cRm%U1+Yb9E!|;s z$-hzQIm#uD23W6JGSILn#}Xgg)BuQkX>dt~c={tlNPj37;8EndZK~+qYN~r4xN~~ zIbF?%{k#eVNx=63K1#u9)Y7ZcbVv4nFzTkeF|tSV~bLOJyKJG4nHHlY9n zFZf}om*91{5V#kDGwLv~2_kNi-JVwpcmRLeX#j`WOz{VT31mYGISati)L)KO340U# zLVl}zSvc#!dd+fR0LlRmlWfwo^DM6yQ~^Ug{pB5UeulvG3KeD2qsZqj&Ma8~7C_Px zgd|TUcW~G`9j#ogERyN4bw1`re-YXWSg!@-O8hAt7 z=KCD*^Y;4Ju7I?rG#zu1M-@z(2Bj0|3jxBJ*JT(k)o*Jn{533TuUh0y->`I_qc!bc# zC5O`YVp!?@)MgX6ilxTiEpb*7ENZYy09a*Cv6w2zAbEpOjc}DM!7jYqan=L9^~9Og zb>@li0$D^SN>gR!nL23lO(9FhloJDQcEWYx17Ep}$yYNUpuAJNd@I_NucB|zuB(y~ z3CUx|o2@g)iv-SI9Yl)Bot<37lM|j&v0!D@D0A!DN4n&(wIk=0k?~n*(#vr(q7Wb# zK)#Fg;3Vk>B~7kP$qn8%xjtnyGGEPBbkdOuSfV}9$IMBcF7+y2Sz+H|Ale8WfDFrc zXhMLR6iA?v<&~rD3pSnq_PX5{74SO>gLvyI*c*9;L~+On-I;ovp?HOQV7qCQDAr*W zcLP8G+iUHh+5}iSywd$7@D>6G#%!Mg(w6tm8or&zr>*lox5)ps%KFI(OVa^#Q5dml zH$xxNIc0=o0r03IrP>;6a#!y4PYEu!9=O&Aqsxs?X18}|@7--Cd@y|reU6Z#2&&Nr zAW}FoG6o#P>m_yIFZTBt%B;n0DGRi73QjfHOQK@2V$tv*ekrAvc zUFkLIsOyZvXD6d2VHIHjghv=603k|c<}_=s*Q{8{gxPpBDdmjR+@jJ7h%*}xT~+-j zaY+z}enb#9vE)81@Tx5CV;ECEHGXzK8f5^tK(a>M2gx$LbxNhjl?nliq@Xov0b$BM z5YIJX?5Z8O$Z{t-Pr@rbKfewd`)nTwXmWo46;g<#jb!%BxBd_-&M`k9521Gq@9=6E=ien-CJOQMQ zV`bvnnoSf=T#J3}kk!wXZGO?6zYcX=P&%s>&Pp2C0>d}6COzR?t$%~xte@gn;F3B` zA{12!6mK^LSfMVD_ia?s+otCeA$S--P6 zgb>Ae|6mqhUz(^QpgK8b+|&?8?fm(&W9y&nucVM?z=|7Xtq>j$Uc`vd|tnV0bFV z7e&6E@-DJUBTGe|4EkG!#(+kFrb1|MFCi1%N{KLF2E<*Cyd#54BZ%2P!T50tDKqsU zp?cZ(MAPEoi)8U2@$XFN1e0b;Hkzw+S~OFdD&jOj?@&gj67G=&nwLpQH9Y_N6LVeR z#J&OeVsS}VF0M=0+VS=JLRWZwpxoTse^)ezpvxpasz%tu1cOLI9hmocn4)jGR-2GC zu274MsLBE=br4S50v6Rmt`P?%r5oRRwEWGsF6aMlW_X@O1VVZ=ZM&3)Dw(W=(iYnC*Ti|S3*yWR1s8t-eArw(T)zs4zcjX z;Yw0{ofynzE9{0{aLoP;{fBLaG)MHO66Gp9>KdBji{gvoTFI*+y3Q(h-kaZbUPh`R zL?Yn2tZ9m~EqR5q7x}=ms>JkJM897Um}QaVKai|4#dW2KRSY0vIu&u%UdRst{QeVNB`7KA>00R~$ZGhCckX7&3X?@faizklX6hKp z#j67B)%g?pr>^SX-%r1TXb(f6r14`IGz9UQAv-BfLA+vB7d&208lr}nSI{c*IY3RR z6)Rq$5^hYp=w^_xQxpYI>R*CmEHSGrO9jp z!}fP!?}}aHI_q^@)$s;@XX>?-78+XXXP0-Jc%;|frcJM1O*!63Qbd=*UyHUOPhtVt z9T7f@krJ>`6*Nf#od*p9bV3)3qudx5-Jj-W%GuMmWlV*>q*@#_U-CfXz8KcZh6 zDl@|PHcW+ur5)cLY?T3YhSEL)2Dj3;5zfP~&BWtzwrH?oE|Wh5-=L1Adsf_CiV6dD znR}jCSZ^6&RqXE49rOU*0PdC;s_S35f&twY<=q0$FeoH;_t4$bEqI3jFj50mWC*=K z4Xz73>imx14e%Q&hx^gny7;pt!&?OmCG7QpuvZy)1QK!<>c6~b8zrrhVip#hex$nt z(ASzJGIMr-PkLk5Q(AD`qeE4PtHB6U@Yw#IJy7tRKgeKPr{3}Ei$43-$NuhzjvVjg zp{LtVK=X#bd%*W`A^De+=2Yy&i6(*gD~dhiqs&@)5lB+8o!x;DPGW-~b_MXK*hn?F z)TCc&;6;RvVk=`Z?x)kjr<l zS*60IYL9L=RKW$EkczwX5TM4?`^)<$`rx$Y-_C4*?4Pg6W$@VDm&yz(uojygA!>4T zDZS_AjgjT1LJu`7A0*!(01Q|2>a+x#1nGMb3B@4@NXeol1)t}LDa>kmUr@TF##NBI zC^H7A{Tsk7UBNA0D}Ye}D#!EY#+*lg2R#C+3wuQ41_4)hl#U*Fda=1{<3KvsI65{4wgT+z$KMv=&j&mqTeSv<2nU0#6>iaiVg*9=bTJ=vE|kztpva^uj7mA0H}JLt!r{ zci_CB`LiWAZZW%9fO2a9uY@Y0fHx_{&!$3+tR@y`sFvJtF(BA8h@RlgBZI( z7sXjI*qKl~(@U&^=PX0cgm|U_3sZzC{rn%^YHkFkNg#~awOn?wPcpyZEgbYrJqMKO z?xhy4_Ut;IVl2Zf_ws~pHxbaJ-NYo@uV&$v16L9$7eY$Y^;D(lCn{=M)J&&0PH)^e zUHi#dixwSf^li`nN3Ymhds+F6cYhFjY61Br&=3Ub)TxZ38(<)v4!}rV<=|?!zDC;^ zhCs~&CcTss%(ZccN~`w83WNuQywWDFmh?TLC?YCm^U{=Z288}fgH<&}F{ODPOjny1 zfSL((=a%=)8@`>Ur*3jTzc}V2PD$(ORFSRQYZQ&C2x`o4oT89=`O#yp_wZkbPo7;Y z-6Nw6SBMXMvZnu1qLU;sO1pr7Qnr70uxKiDgi%A=lGR@JYSZH75m(>TpN(mws?vj4 zAEKqPXMO}y?>QFCi*ElR!adm@0JOsup8@L)r}>FcmX`lqTave(sG6M&SswL2-u{0d zP}VQ;41>B_Pd6j$UPS<)OzjcViQbOV9IrK~k^uKZ{FTIYKS^x0oD@qT0qU()e?vM8 z9>WqfTcs4$N)jl=SmRSkg4m99gQ^poU_x(9!+yX%=|bfO7fh$GVXbk_VVnhp4{q%_ zu5Sg-%2O9NZuH6bUOss`w8}0+<3bFMbHU&+M^t^7dN%QGJHK%inPC15aZH0h*bbkx zx9r1o&*ino8dy{E0Wm2lZN51WjOB8u=%MyN`AxMe>1_uSk&Ygf)scw`LK4%rtltP&GN?Hf+Xxx%7_0_QkB&prHon? zU9;W0rF%Mnj%d*CiyKlT{ROzCOW;NmSl#HssLkrJ) zmZo0^s+;{ZVyq6Bwy?^_1)gbU>@Q54B;{>K{#cvUo z7lz-!_IG!qXGQmP?W~v&ZtM7uh1&}lBRD?7WAk{V#G{*Mz=ioZJH2`8H>c%rkmhv$ zlu*=XF+R;>`Y_|FNgnv=RUFwkBYD8MyVDKBHpA3!+9%nj-?YucYrP%vT{vKOnl*mk zeC2X#RA{PzIu996+GOu4SN`@7)4|6uy=a=IRDo%nZY+o!Vvntmxtrh{wFx`8h3dr{$5?nWSDhGkhE`IG0`}xxH%eMj;^DGs)4h2k| zQ#23;C%v?&*iIDuKM{av*%AXR-~xG%0s{73=!GUU?61Cvc%MwN%@T70r!DXM&W3OQ z8XTXyKKr9eJ!wzV-ilmGfZOQUJ{P{%CgusukIlMRvbX_P&A)BEE@F_6-R4rII~}-= zK-#!4s05`mIQ;X_MuA+ehW3-Z9KBn0{-+~4XJiOfncgM0B{z7v;)W+#2`~Z>xPOb z_-a!^z-jBUO3TnHlR?)()^tst4R*y}KTWjSY1q};H@{DF<@>%r{<1T-q1e%Z5+3Oa z<}R3Khaf@Yf=0bWe;zmfH$0eJz1U6v_ZL>eg6){K+Ae%^3rL)`lZVddIH_G*K4@o?w&Sw24u)SU|rOnXfeX&gwJrtbf!0hnO4bSNA* zfm7_bl)xb%kVN}1!r=%%;uTf)0`FY|Cgs%_fU;WQmS|1-urYe$D$P&RP>h*E!4htf zfdm*sc#{&5;5W_%TmoIj&{$qS=oP~KVLj$hdjeEk*FeinZ8Jr0R8EF_9s;LLK+P0A zCav|o-`4Q$U;9#@`0ANIIVla>9%3{@Vc4`d1vCnx%|>mx)n{CDcJDYtYch(~A|P$S zkTyOYgK9Cb0oSuG?$)kvhXco`6N4&BjI zlL6{QKeAL$tMH_^YHE{#SVpaQPyu#VN+`ucMDMY7~A!TTxUKGjB zb${nNZVIU<-I6P5>(gvHZyzT^d*7XAc@nkpo<}|4$a}`FWy_bFx%I`44j}5-WVyiF z$k|9SWRwL-qG{yJPpf{DY>1AHnOpfp2;qgGJZbW6DG`_iG*W;0jzx}-@Wwq4jX(~|i|xr98EVL(Zh(+5c$C*cK2fB3n`!(WYKq4+lp2pmb% z0N`C0CS<>Usk-{Aiu4Ux{&TFh2T+C-0q|}LpYp#0TL6&I<7#<}ycI8}!x-+XgzylZ z2tU|Ba=m)Z;Wi~Y%vm2x0JfQ;GHdKB+d`FDQy&dIx!@aG^Lvanb9T;(3RG_?%*eM% znF~b)Zt#mwiOlMM@a&x07TyN8E7u`6cjJ^>zvZYEk-Af$>Xf5#m5XHD>=myEbC?ZF zDO$+;M+($*MoVC-p_0R%IE@cI?1;w?GpZI?tWCR#u*w)#8aucg0=qpTyR8&Z-J2q= zU|W!|ke^bTrm$NL)fxVrKLvLCDSCaBa1<3qMV{~1HrN- za*b-*rWvdC{_Hm<+YB{U!`|__zgVVKY}354*3JNU9ymenKHzEuM}75HI3nbC^}|m`pue0%oFc~iNKkGsUkKvK{CPH z{qp`PgXP(OV#Xg#W`fGAi$R^*090AvhW`pf53>MlNohpn3`Jn5SYbW|kvh)dOcnLN zOmiIju)wj?u`PPc!Yzhq+X_Ob^0Lm_=-SU-{8xRO(zWz_hZ=XVI z)g3ga+j7>!vxC?uG!Q^>7${_RKT(87h`Y^K&>Tv)1KdlwF5TQ(#GA1o4jwbH@ztXC#IcA8J#Vd zTrLASoqF-EgF28ge>VjweX!J@))v~Uw7a-_9*l`IW|{|1)(EE=^K>K69|*JB>gX-K zzEbI57Om{r36R?wvjXD zNN(V%HEMmn-aYih$U(_YJ)WTdACJOM4SBzA)=!MaOW@^*nztSKH{Sa7x!mdn zt37MSgl5bK_b-)4phBHaAn;s(eWznv1j5^a@VXZ8pYWe4kXTi|AqnmkQNw39K09jo z{Ko?@i=5?zv+l4?Jq)leGUuKBS~FP|4u_z+9e}ox*a)Jj*CztzZeHmX^XA*Fl#ywl=$InHqqlDD_Y* zc_L~k=TSjf>5Jp`w+`p2VVZe&vTqMt^?!esHhPLrja-Z$DTc_Y?dG5Z3!i!psIBYc z|Jrv&oi6M2fMu?aqNWlAY6=JbT@2$T=!SKAcMDjf3|-I z-VT)641hUD4B$~paR!0lI(3w$&)>p^-XtGoYvpZP(^Tsxs|(@^~^4iHdn^{~blZ50`Xg^{^jI z-;&Zdh@>N3z;*ZpmqJ3$;KJ($p+gtk)dJES767{6vVi+@))v-4*atXvnDtXVBEPeSqW9?jfN1Zfc%K(n9$30gt zEqK=_xBhrXIpFSTMXD zZx0!011&At!B+WDi*U)%txeX;OqL7CazGA+PV0fJPfL?7kbjt)6@Q$9aq@?gGuA)y zN74wV{dc+f`RxVkc>XZG93WPJYLy{?b1PcH1^;wQMf2O>2tcSH@cUeVH)AkKQ52zfPuwkfQ$E&#lRFg6h1>V2*kJ;rbok6x=bu*!rHjyJ2~l+!6JqS%7=Q8KV_ z?4O({^H~hk{L+Ai(5Vd_s%+xR>3+!Gd)MpppaN_jkfaEg!8ll%Z7lCG%?KT+0;FVU z*;&il^%(|)Ehu9_v4qE9Q?&}@5pTheVJo_)MR+Q5vp}v#lkV4UI%BAKuu!2X`IE+p zzE%X`LSW$h)JXemw+s76s_iIKk*x|Yvz9-l-_%PfV%Qh+svHe=0U*0R+M52kA0GP^ zMQA6qtOVw8#JL7tWR)jsEiu}XYi*-Hfgz)zepEs4QVp+}R~&HU@%i#YTa`=NzLDSH z*y*YC(wNxuu9@?DwJfAb^RxY_&qu$ur83mgiGh4MQ zH5;BKmVv%r%3w=)TW4PFJK0L3{y-b9k!J&U;n0KEY=7O-smOAvQe{&su;MklPZgvZ zq)gK=2jwr+)`z#X9`RwlR=cf9xW?O_z&91tjm@kAuP)kkotv))0M8uYmkNPq`CjaE zfx#eH=f;jMQ&?6M0nX2XhA1jisLAiZ5C#|ZSi;ZOY1Uw1g-6UA4-+(M-w9^r)l?`* z{l0(s)N&tby}nHP|3;J4?rp2-dCjxkHeVyqy&t$<`ri0#3!64y^_Ov7Q(h!%q<3K` zQREI-pnL#9K)%0gR(CJK(FpH2z_y@NTX>j}(lTjBR;d^U>j*=WB zRn{WAtt{z@Q0h}nrc~c9iq%K5oRnqb<2~-`j>-z}rYr_Pyr`7`mDL`x#%F^pAQ>QAdL_H=VXi$@GC{>F z26JivRM5X*-icdb)b+@H6Wu_lDdUEwwG|GmL9Mm|wb>cOnJH7SKguN`ZF0^L5e8#B zlZQmT#AUJ@2{l>k6ErzcR!fGdRf1}=MVp-^OEx=AmWFro47S3D(Pc;5K&HJ4u$33( zz8vpGIkfV&IL5$@K8;HaTqz$oRsYkJ9?2r8x)11hrV-A8_0o6hm|eflw|*=Dc(1I1 zs*6XQ;@%_Dw{CpbqXh3D)`-Ekp6rPLxq=B`?J(iI|V+d6SsgBb-%ZK~fbqRP{;KKG)}ys~#88DVTK zw6_4n+e*$FIBs*6Po7E{i()OH3#NAIF>49nNRCf6F}&W>Xft+FP`KE^uuxJa0VpI) zkS6oP#}iUj!Guavo`uOPNtC{75@+Y@U;GqQ+xBvpV_9xeBz>_mb6 zY1%!YGTQWm>hJtw&sAGM7i#lT)1A1FXJk!n_;A3W<2_PW zec>TJ8@Gh78Cw5bY5HY1Uv0`D=5!j5G>9`Ald}$=GTT#ci3kbc1e%_pY}k~Z;0;gM z(FB+9=HML40G%Gw7AuIxD@;IjiV);@a-jdlEWGu}mRpKInGypM)5>YPr@Y8YciiVv ze|Oyvocmd@W;mM}Sut!unJ>7w%%7b8oYd{dcK?ST zyb;&Ww1%VS>gUa&s`7?X8loGXSML@6_$um-h>HpMm@~3IbtMJVS4h7(oM$)WS;~C7 zWxpQLt+-yzt@x5~qnwp!?OFEG3FdSUXxOS(w6)J>QxG-#h<2eVXfLA1v+OrU_9{)d zZBe#Gc~=m1vvO?{b*u)BL4})ARu@NHAgb_A@VWz0*V6VqxO8?1qmt{yaTTJR3E);G zma3%;=JZj#2?Zvao`H+#rUQ?IsTk*l==0>AA6Ft^D_<9(b(?Ren^AVnVa8MYrg(736= z3EiYVA`}6v(qjrarv#e=E07b9v(ASh&5_~T{?TbXV*4{ag<`C`T zxGz{PSn<(Pc0Vb;8XW-#Q+g?oJ)l{d$nM*+{aEgcT`w>AF&(anAdZavR1xyCVe!+5 zPD>167_pVHthy|g`Qj|PZVk$XvgUS;3Xsx@B5@w;80txDvVdN-$E$pey_&-k-6wy) z$hrO>;QDAVz_b|;oAmL}OjpNW#YS=nHJK?6FGt#|P??X^=s8;D#1uIRo5rqyC3(aY zQO61R0|vWSBP2#81R)Y+u-P1NIk`TRg24}bRxqLXpN6RmBiqXf6yj{rKlZNH8}=L7)KcLNHP&@0HZ%f#O7j)6 zY0Xnut;Tm5uWr>m`4m`9cLf~-Em#~7=z#XZZkHKkLGX6haks-V`@?qGZ6Ez-wmSuo zHu@gAWv>NKwege*tmx>(1w{_2>E!~wAWET{1DIK6nB{V!bCr$Nk_2I>4x?_oD;H+`nK}!GaxrMh){FTxE+#2rhefJ;X`=9=6MdMue^HwRL zz`5xUpjLGadvD`14zB}%YTt(8Wn$a1X>sAI$3vbAyctZ(or8t9ptgf5epPnM;ETZp zOv_@ezL{F%f?v4~6HRCVhar7uWB+tTB+0wyQ z$07V40N#3k7uLPC;Wo6Y=;Rb8Rb?lrZV|Pg&S!QuOJj|2tAnUscpDTsQ9Gyrt8%oO zR|HqradnOk!%OhOmfUQ?ZEX~fHhUW#QV*np3PiZhjKcp`~h}#vBk{m+}ic8c&(iKaqe|xQ|EaCcCCl0u*!xau^X6CU9&Mll% ze1ng=7}ivY+<4d>-#4qZ;yxcgQv zw~UfV6+NC7nWt@GWu+e+#AtnU%Nvg1P;V)kqn7%qe)3NaYkTW6ewfyqMVvy z&1JP_1eGK!hsMHtmK%k>i z`a{b7y~v5UcQ=)q>M2#fXme|$&vt8L%YOWAZ4ZZ#fhedKmLXt$PEsr>ts(}SDx@mZGhB@fV=|rEH>UtX(-c0;4 z*mU<$+2ZLiEgNtsVSFr7s3ukE3+i(Q2O2IIVcdz~eG@|Jok~*m=Gf;Wo^<;7kVYc8+Z|KMGT=)3HjkqdCPgRLX#cW!Yt#{yXZ7z$EnE+~7^P`1S z=1V@%m>X%wI=k5`npg??*vt8EDXR?XEt!oVyM(P>nn<(VlA+tk$(4ysRwIxp_COvg zX+3aOH?ECzx6D7GJNI<693eRlzz|kD>7Z*H-J{5^|L9dPU7S6vS1qMjw4idx&L4YL z$rvQBDh8VVhy4#Ac{TLz{N$Iv3LBFwPHvdEKsdgT_E)Ai7=;HQIuBUW|3AHYjgsW! zus^BP15hnlf$0@1rd#j_zFx7qkM=i#RFSo6q1#fyQonbpiTS>9)!0hTj00Lyouq#!EkQJ+QaY3+Qxo z@+;#DFQMwFz4)EbIYns*FK@y+K_}YC^XPLh>kBEVF2vMLy=U9<-gVYy6a_=W>^saNP^t=_6KWf|a&;j|I;pk3EY*-b+)vKscKe*l2+E|NhYA&vHP*B+Zp;{ z^w>{KR=0dNdvvl3w#WF}99waS+5oyB_nEAP`$HdzT+B{F6ZsM(@qF>_n&IE+h zl63L&NyjQl2LlWORq&8#^l0o59U=FCW(5Or zhEmVs&h(f?txOJu2ZLo*U|2x0`(@($%9^pH6*&X&#g62uOTz&FxymCf-^cC@ zFs)>s>n5~k&plvLz|P(3bc8>+Ws_8NNdY~?9M(f-EE!CvGZIpdd<^w2#4X@C0$9?x zG085HeU&zeC25IbXjstzF6MobM(8@+gm4q>*P=YKcR96u50r-?@SYz51p+LHT7U## zRiw>v*ta4(|GOiPBZ`w!wpq9$TO24ShB69k3&-3qp3N$Va8uWL=3Bqi!Q}w0&Cqc5 zMApE`^u993Ib;oGubye^E*)J^@;OaT4#$wZufv}Q4~!H@dxBf|s*2K@YIY=ixndsY z)GMKNxyIeH!F~$wz%?%sa2v~_g88zzB+5QP_`LCq>26YL$ zgm!pvQuW9W;lLYuxq^{0cC$#S+L!@KBmfdwo&5k4kV%Xc_i!F|e|47HmmWbjV@>Qc z@P|v-I?JW-TOQ%Wxd1d!Q2|cmO7OO89omYmfj0zvzg|sG z{jxdEnu61@)L+rl*(-2QJvgYpV~nul!1>k@ovUBupJasS)+$>t}nS5Re=$pe0X5QV`|6~Jo&S|(%+}g4QQrbjJ55;R}*}R zKhgNPM1)74h(@Gwsc4JWqi~`$noLw9(9k;B`>+_3#Gi?YTi4P=xIbf5&(DVY3oj#z!JE}&Pj>;iTk-MZWz4IMZFKPDIMaNLy-No z+7PxOo$BTRM*EpC40j%en(0yNm%v=<01%InV!_HFS0VE{`U$O|$xg?WcAA`a75k#{ z!5D)XBe{lih6)en4CF55c7q&KUfDwGBdBk?S0awhEoO*>Zd|wTr2mtJQP>S29 zidv3~r|sm1z|m`1#0Y9I-zFs%40!_mWA!mKQo2tUH=h^lLKB`uQF`_T(y*^jQ|d|# z7N2MuqFhOubVCFta}s=OnU4UZ%X&0U+gV_zzf8zuDs zKE)p(KM6T=m*)|ArJ4YEG*VoHt=PE+S=P96E<;1dtgMb$@5=eb)W0FlRbI&VRP8E) zl0(-1JNM}oxt5T0=xsfF!1gtFLmo|P3BO{rP<5o6zEFc=oCqFsOgK>e`mhZ|7?JqP zfm9AR4~O!21&;%&u2Q4SU^Z8>t8|K;tF}O=>JkN@qV&>lQUM?xMG$B;`G&5?DQNvb zMn0b;?qrLqP=9CVPL>Y{w`A&6zRZh0q}O~9sOqByl-Q)QV-OFs>A`7toGjt0K&abz zvIxj?0Mi2Cp|6Be9ikK81Csd%Ec$m*bmS4&0Za+Uy zSxvEB+N?4OW&3=FnGej3c`B$`o8ZRB0VxZLbcAED+~L){6BNsyUxd{h=^CHeHoo)h z+TYn*av!rLxMwQ$Wh1bjoCp~yIGxUT8hV@?#C(G9`8RLTK_O~?H^|bId5n?`4M{vL zfG{zxcDOrjrqvveWBGL7W_YmrR+t7HBk*z{O5jOHMAbD`M<^Wb6oXDxujrUtDF~H- zAdu_iEqCa&>?uiI5Z#&ckl22|e<#K7_ z`kw>66NBA4aFZJ{#3oUO9_!SDT%{P2=pXGPWevUZVa=+EKyBMi%SNgIG^|-yn3+20 zVw>KSyf)i$tWqNC11P4ML$DNdc9sQbbml30Uan=!N!gO})>EYaY4G!71rzlL-uO7m z&x$2+=SsR*0%{qvH$;!=pKd?M=ZJJ$zW1j(I%_9-zumKN$153gE#=(uXYPshUS|X| zQN@}UZXwn-Iix)@q()^ z_wX=BEfllbT&>n@eD+gM2OA!)SZUj!Y@B(nIlv`mr9SVfl1y;VQjylx!n%o6GvgwfKdXvb%&IlMF zkx%hK|9vHD`rtjWE($4P`(EAOnz#R~xc1riRz{M6p*LR}nC6y~d&WBK-{m?SjAWzl zk3pa6q;wcdo`{3vXeHo#HNp964`pug2Gs6t+#mZ{GKMM!|32C^#>w`0Z{J-1b~hZY z@R(KRO()Qc^>UApVYkAdYK7k1$Hfrg#T6u?A(7HA!Q$C0-VbInJ8Q?0{p^m2Gg*_= zMH5p)?_BPA#fyqax#faEg1$w}iI{R?OS@p4T3`b*wq!XS_s%g_hMLtk z^v@4%djwRVM=wm-u>x)sLwYX`)y^T6pGvYu}ZLKvb-8&}dRII(Kn~ngY_m?~m zU5ucHW-4O+^l3kWqK1PL#aa)x3=#EyuxDS=WFZ14s35!zZ6vE%>H~-j^9CRdHh{08 zGxN6GTpd^Nvm6DDCk_A`my|a-cteDAtBK_+!oeL+u$&xNv(}?-0VFe(T_SXp$0(}2 zI8MaQIHeU)?*w)Rn@TUS<^k%&`qb2Giu<8_F!D|@jx9k0qB4@aYf3d^7;2XI;7sme zX4~~DfmR5lBBzu}H|Szn9Y0LjHDtn~ILeLe&*gOXYmzR?yB%F(whPQk=Z-U^5){8; z=VhcgSLG~8LV`@5?8EthWssmC&=9?uA*1usqbs`p13bz0@MX(;Y4KI2)#E}LnRmj4 zaEM-Anp#-X;3a5N>`{78?(6Gt$4G7h(&!w$C({0MzFTTB`(cRF!G`MHu9I14ql2q?<{bM+IsD})bII3an7m`P%Z zsqsGd^*m}(JL#kykdY9Spg?L!+0I1DZ^`mM_4ok6*?LKCNa!xR)XumbXaIhylHxLm zPJ$$SqNeH_Gr6ya@&F1k;wie2AUA|p_iaJ7%W{=?x!5%=E+5=_U`$#t-5iWVSuqN5 zpxapacO*hXovV#@=K?=p zoqdYz8{3sEglQh$^E%vKL@&P_x?G|6MC>0&r%XbX7^?$^8I+9;&s36>6Q0^-mSfbP zN|+XArZSX}$_w&?YFbY-jAY8TS+lo+AO?ZnF!hbs9Hf%02jMdaysc|pF|pc|q!D}d zD+KU&=^wi!m0Ztp>PNcaLZYl)=SOWjk1-!mwUY;!Vc<9>fJkP%@w7~}8wB1ME*M2gm<3S9i zbuIirRI|BvsPx5)Nxt%4=vBy_j`dAhiPAOkswn=gnGA-5HyS<97==co=HXnNB+3=@ zawT~vl#=`c1B}dfB?%DF5|SF7X-_?iR7FNSY%N>iaRt{TIEPNQTi9con1a_9y~iy! zk2XdDeG+=7d318$ScluFK^V!6X6V)XvPe7(>;@>C2G6JtO~0EX{k?YlcVF>9E1m~Y zpRtEKGtx7M^2@ILAJ#oOBYV55kf>hjU9A~vO5?r;c{@vWGg-L%IA^J`O)m}+vr51# zCyKN;lu>AsVofHh-s*YNJ3($t88|)F??~~X6A8wfXlo{g6X03lV zo4c4PU4NYOUZh?imFLaZCtUbxTpq|}D;boH#$<*?WV4VCGz^4q`aOdomf`Jm*+~Oe zkfNun{DZ!KcS+HNV&k?hWAJ9igYbAd_TC7L%*Fu7yBCSz9jPVoI&guXzfM1S4s?N} zQF`-QM6Y-b_tg%(oi2Lcb2$5|mpbuq+@n=C8Q9IBY#fXQ9$FW*%}S_&ZYAdd=ADOm z)Qf{qE#0R#o#m@O$&>7yKiCB%UTs*MNTm&b8I<7g-X<4LH}L(<6Vt}ZVl+1Y<`>5d zUcn^5d)S6H8fMYY>V6Y1ck>#ZgtoE_PhH9n?2BBN5ELbEWX}!Dqj`nT)jUGIL#5NM zfss4m?@_eL7BE-09WluG>>j6W*wjlsjx8ETPVAfhIorjuog;NK?4zn zV$-R5&iZk=yYg_3p%kH;fCxt0OoR%4xnh6zCD3eiW>{P-q(Z7(g34VXw@U_Yv_p`| zlYNkfsn+rk{mN|jEYI@PcJ|6R90I@ZDK*B4y?$~`UV3W4a~eSJ^l{^^*@V6SMzBC8jzeJlbD-{2a=Lf#Nh^FxO_0 z8uzoVyd1YK{~-eovuo4dbk@Q6DoNg4d*jej#m8#&wITUZ2n%^{d(W2Gf_EnUe{GAJ zrNGSoz+@{PDuz*`;N=z~MWtmaZZz($$@`j%r!Zj609zZxR_#2YWI#Sw^AG_h=Gw6) zS0X<_XWXXJ8Jls33g+I{$Rx0{H2mqjb?JXjGyN!RhC*M$(ap3L{o|ye(YiCpk z9QE%5MjuSE7xndUy`1ReIh*`*-7py;MjwDj^my69g*zXY;k|8) zp8$-uVKw*`xaAW0+!?kO=W>Q%x5jy-med!qk@Srs0r>!{dzl%4xtbw*qG6AnIAh(a zj7(uLScg7e&YT+diKf#x?XOI0z2j^-3A6b`O~TjZprWWXQ96pq-IzzIK2!z5P&(PnNL^mf

W=;2Cy6xSExa}rSHQj`!9QHsLW|7b>U(M)*IwDP} zuolt5{VqZ<-9~}4J>w9NSKj|03ido>536yQjCi0%?c7^pY*7pmYOm5pgydaX-brcO zs(w~er?_3rcsmx=K1Tx!=9Vn1-1!y^CDz!`hl)CzMr|G#JcIb0`P9;xolMr6o+H~^w3<)1zvA@ zt(8{IX)~qC01s79Y$po1jktKwChk*20r%v}ySbc}%8_jA1$ILoVshl(5{+T9tQc#W zI>7!cY~chXQ_wtJePB&C+75F=+GEcldGz8KE3*u?x(pTfhp>t#>5Y1&j%G+SYic;`*C zlxemrood$uYI0&HsuP-axKK{p)#)X2vE2g41(v|Z64Z3~ZFAW7{|eycS0c#Oaw_1w zQiYm_)T6*9U|QMwT$fq7+;j!Gf|@hUG3G3Oq&>)3x2m=;3bmfCXVzM5z|sMv=>?*A z(hq<90jjRk>6ijEg#mao+9z9B^qO|XUY3_IAEbO>@D8vgdutLE#4={!b$gzYL&4U0 z?5_gN39Hvw55APow9~QJ&mvcXiyUAL+OGfGnf9Fr9&pxlZ3S(qf#$|FvYU7{`*LCi zfUci~D?iz@Fbh9JY#4;H7IDiKDej?t^nRYC|4H1%mldUR17_w6vMyU>cyB7Y)o7h3 zo&}L>3>~n=lkyc3Tj)tK6QBgDP=^2S6lssinSdf=#Qj9pZIQ7ARw0flTVOE4LR^U9 zN5$G#n@D{t04URsSBhT+S5sgLx>$b07eRNN67T(HNYpK;XE_8;o93y)DpXcb<5i}r zm)cIJr;VTTN#6g_2Pk_{Bh~pG;Rd|vi-%gvWf{Xtp()xNJGngtXKT9;YjUl$mf*nK z3jpfR-ZTQQSTsU_^GF{cgtDTQB{sm!8) z^UyAc_aFJQN+=bf^qYfO#s!Rbd;#>EfAa*yJhTAah-@6AjxiP(ivZP%9_^})zUMot zKZ}Da@TSck9hEQ19Jh2yx&ip65bRoh)hFWudKET_!<(HuT(;^TEl~u8-Ih-qD7^yl zoUofX!P9Xmt6)k}3_tTQ$oaD~jeQgiRV^zd66yxLBUoACavR&obQzi5(-HvDA7NK! zfMBoKyDZhOP`({B5SBu=1UP&@v3RJ{v<2{BqG}Zus#T51+N(H#lqwpBcBP-=%i|xh zL9!{%M#c=n?kLCPN+Ed3p;zHj_FnelG4>G2@r7zzKq+Nmp6#b40n66YDyyE)UI=B_ zmTEok^Nv$@$MS4@!5(T1Qj64a_!en8DIXc?DQ6j!1sKQO^MxCt^Th*1l{#lM&!rRI z%y`r`doVP;ENfZ<`oT_GAmXlI@$%XhdNCK?cx@A_bAtZxD%j-pLu$6@-<)+lP9z!P za76{WhcNTh#?Uh`MlbsbfoiQ(rG|m#M$-^Qhs!t(vAPaJktylng}9({m!Fsj4-VH} z>k`ccPXmwDu#CYaGJbSEXB~}UAG)jy0g*%IVjHiT2aAULE^U(n8Iam!W&%?`lrmoo zE!237M$gOc1n9*x=r~=IokR?3YRVu0U-JITByyW1R{&Wk8Zt;<5b!#BGppihUGaRa zZ*5hk6t*bHY@rx6MyXkrgIPOcv2W5%#uy3_Sd^uOluP}vG>%LAeWgF%|6AX2NjU>R z)RF)aBEW?MbkvVV>f@H-6&V>-IK!k~N(9zx=>>pOQ2AKP%FjpSwYiZr4Wvn;Ex-Af(e=yVhyvgVZqe#2REla- z0Z!bhpYWiWJy-FSq_WUqRV*i|mW7Pt%j<_hF@7!A8V1AWqP*wYDA>k!&@P(;A;U#x zwe&JSSgRRQkLg81V`_T)6j)-W4jhbDK1k ze_dwfX)gjT1=virXek9n4ZT2f$YL;PBsN2nb|~ux^4Sx;`@>H--IznrD<@Stgg7i6 zh8jU=WT+QM^=P=>v<@%J%uzUz=Jm3Z!YN>F^DKM~>$Mz>m{1)9pbWfDtgh~7HTwsa zChy;b*y|%j+-yML3?{#7G-0F#Vvb~+je{AH3`uC)Hvdh4#4NTW7zB4Xun3T*By3aN zJ1dhtyDV-vqEREyQ*oQ;2V?+M03LmzKr1Ue-`}yE9LT~{L~RXC>nuxwYL5|XgBoFG zsA(pu=yB+V3{h{C+e=KGKvwm1EJEC=y~EZ^#wI+HAQ!&@K;TV$1O?R86qyAOgl5w{ z+m~@^@2Kq4*7nr)7Hnv{4#4EXhosrwPd)AZBC52X>^IDReC6~zeuF$N4Hidhaa4~r z##L6ot8yYu?u8aN(SO2xEwT7qtJr-?kP2%bY-1$6C#)bn@;vb6M6$Xb^`+H_-ZSmW z_z%XM%tO51v*o|h0}T&M-N7~-j1~La6FU{i7eG3`cLjd)9X6U- z3^@fUL{uHA6`Up79L=6lqq2GkMwg}-+X@NlUWE#4a}ltFOJl-glcE)C9G&#`VxY`k zd8(G%wVj$)x>dPLXw&F=2O&{tn7S&e8ycTu6ZFg*W-Mow7eNEtMrIY0(AD0Wq+E_ zq^51fT@-u5K7c_{@gXXS_j$5NgDtFIzTTY1(mE9FI4yPjJ-}Wf(ik!;AYm`W)NPxGV@td53F6JJQIM zD*^OdN?Mt;76N(Kl&opa=qXtxqcF(fuYuU2On6x2<#&)T`{+Bymw$P{lh7uVc0PJF zg3{(v_K-hCS!IIS-lB?(f~O7Xa}Jt$B7E`KGkog0>pI&Z5<)bdU8NiX{qcYPopRJ} zF4&Hv%1-WdBK87ws9w76>KXqlJPZF7sf27T3N#~IvI=@C-B2c}XKJan zD;sFrIe7^h?%&d~e#l_M+AVdrZc^`r^Jga;M_&(sVArPP<%nwdXhh^0*?FDDvN>ba zq0`1Yjv}pr{AM;H#%c7(p*)Wo)jXv8E{Y<`Y4-_NwyC~}swE6ig)f0gg`k)~3pAhv zR!{74&QhGuz%u-~*?9Ku{SPmr$S56!>y`h|zxH%_s)-am(mX53 ziDW&yYq$zLEvy6B+7w2Jk;yh2nP>3;!!GVPb|R&03)3^!OXHI8Ki5a(=KL+A%BlS6 zP+|W%VlPPxn`beFjW?-6!`iKN zw{J9qX3l)`8_0YE0Kuv|2>@(VE_Xz${+ph-)du!KLh0-E~(~7EvCjjla9NV1Pjl^z=Lqe?`Ft%z--K>G4RZ}9PlLn z@HW@e^~_P7b)A2BDtao}D$5O^m(O}aoF}xRlwrw~k6x1UB$%6@7)vj)D>H#AT7^<5 zT4CA1M6Hkw4?Jq42k3XrW+SPcxWP?gu8tSZ4Ewewk#w#g9ROfZP~$sLa<8 zx?x1}S}w(QHK3AbvC-aa=FQe8yJzmP2?YHY+m!Eu0VfQ2$kKf(0@SbF`tumHf#vM% zW1;aYGhahu9oL#`I0*uD*$?1WG!5i!mi~+(k;eq4AzIldA65{bTi&ZlSz%JF^?cD% z-l4&RmUzGC{hO6qd5-@TDI0gh7^s6}7OrSr=CRdyK=snf`GIHJZS9^%oa z-0!fzu1cNIbxt&xYPFVzaMaQo8c#QsH6Z$r9jBL+F2owRgiW~|I?Hc^Fwar|X)c24 z^Vd&=uNNqB=i&TboWS6}?^mIKd$Q%-LOTl<SnqP?;@lQsZfLIDdLF$Vt1y-c-C%QQQL9aON!{`fnJik!9tGEB%<%e0rC zwGryp98~Inpe;mOq!_r0;`&gAG7$1zWKRlBYN9zN9uV3OM;~CFu(m{N!y35PsqvKf zmA~>S^)&b*Hx;|UO`%JPRVWl#BDsWZ?9eGXqdlWA+2R>hayk2#9Se2h35k=n*y3?* z-0wAA>hJ-;%fnQ1&k(<*zg}msISSc*2)PVkC*9P=z}lg+tXY;Ssu#!Qy66WW?N|;z z-4L5dkgu#t?$d!oK*smn#WiqAh_{P!6!u@yALnCETyGkZCN4LwO_l(&>L7qICwHhI zW|m9TSyu(n&~yQb@VJlV6+k;uwbWY)3gXUAeOfO`CxomM4FAhC0 z+R@lU3B6Tf*6@hgM&po-Iw@^?m-&q?u-cAyZO+X)OB($Urpq$toGLokxWqy!N_!K1 z9u>=jrn!&BEgo=CnQMK}#n~1*RqZ}oHdUxFmg}S6h z3N1zt|GfB$_kdS^N$?4B4kDQvhdXRmxf^i*jA@`wQa5E>CSN8lgHC}{kj3(}6xN=% z&bI@s*Le(VFjxnk6q=$c@8HH;}J(ti(UW*HLBgA)`_=*i$q7uU_2A5!h zUie$2KHz1MjCyLW{CI>x7t%t}0pMq_h9d$RB04d!v0~rxS8m?n_Xn0L@4Cs&Bh+-v zQj(3)y8@0JX>M&A#;Bo6+wQK!%SJEX2m$9$;tzutYBdQ)nunr9I%&cUwImO9Ss-$m zU5poZmCRJbLTv-$v>*}I`jt802m$a!ko<@K&-?~HwY(v@7M`%v~}|$Og=H52Z(l; ztC)l^Qq?pCkT@!nn&~pH3c)tsfK$K{uSmJW(?i6u)nSTpLSd2IEFdi)tphF43xL{E z<+uiAyc3kvaa2|SF?x#9N=DyP%Xs2E_0oE6E8I5FAPr-ya5%mIYBgh)+%RrIG zCK<@@_?9BJt$_(H3KxTQ|S9JtnHo22j{EpDLs|+rx@@?zq*GWwE0@` zpENCTfWKUyzujmqaeMc5MPBDiZDQG7i8e<@#T^6SbD|s!`Pf$76drL`?d*H#}F~0CNVy?zq4g? z3ru?W5|_Q0%v`LOIQYKdOJZS=e-06{ABN*WJM11dqG5Jd3oPf)3CeBM8Ro z%2avAYDrxnvx|)O@~@Ivf3PgDKK)FVLZK98Q_+#JLungzFv@-5&|U>7%o(K2AVAyp zYc1=ql)PNs%?$v#&O2`;nN_7H=Y;BS)9vK#HN(~__N%gIN%xU$&}A*Xm8jXJ(q>_0 z1+YWh^_4;Dh>_HTQ#5l}f3W9c32F6WS3ccj<>A8tw~t!6*=BG!8v>wtDzY#&jgap$ z`qR%ZEMKEOtlqx>YXhPM%7~*Asr*ijjLEycc#xIuvphh^kUG(4p{gn%BP<4R;Qltj z^Oq|LGXfdz)Gb6(_lW3dZr`IaqB>xZtl3;Kcl~m3vxN?B7Mf5a>tq}ElTaO8v`_rr z0D953o!48|U!mdtT`RtL-R;}e0L}M(c*e~Fgl@+w197=2q%uCM(Rx(W240m@#(aHK zG#&P|OK?z2NfDRKk*z%rHig>j9K1ahOG}Jw6?jX2hwZ;z&s|w*Us!UFnknoRo9ywB zhD#;nQzP&ov`2%S99X*oB&t6~>!4&+9NxDB%6QO&t|%i!l&DADK&#;q#UCV4y4D)2 z`-XU>q+9?1bgbq|1G-R-8qGbna>u#IrkmNz8k(H2O z=KeM|HgE*Fx+Y-(sxzDu0q{YaQiC*xiRQv8JL^DZDYWz`I&l?ux7}STVEEaH(mp_I zTLr2cz5W4hKUlrwde7R3nHkq*rNd84A)0sJvAiL+g%|+khIM%pYg($n+GnBw0%{_q z6MELHfWv|{xJAvY@Q`A$T7qJcc1FL$4&SdPo5|V^?W#T+QfPEoJvC$Je@B#LDb=EN zi1=UxFO|KNUP5*RnA8{_;(-=CEf7#qitAVD?4=|+wJ3>d)m6fGlV3s6F$pu#`b9WZ z7mH%h!bn++kf{sVf1r*5Y~Bb&|50rxHf#)zQ)~lH0EV6n_aqW;OhfWcI9Mk3@~tv+ zEkezToYE8bZH*gk{$-|4u%fqRbf${r-knHU;o~JOY_#lm3QH~>^G8wlXr$#9^#bZx zMCT$EyEKC z2dKMy4X&dV!=$^02J{MYs{CnCQ$QvD&%X))Fm^O|0_BGTj|+jTljEUukoy{d!^i$& zD?NENdv&|;8g6p zZWYA_UiFkdLalVoM9V>INclM3Yh`x|Ey`QH%uJk=8Lez0qqTbbYz%|pbhH^mhsk}k z>lB=9uF@t6U}R5*q-#H<5#TvF^wiBC!Kn|%^8V$`~|Ry zWPKvf1UgJ}wxZ<)mkz)}1a+rU>2{jaVV0P0EE{Ww`_Jp}T2cEm80;OpdxOG*mTvMM zZ<2eQg8`D|j~E%$mny(_yQ0H|%RVycMj*`7eMNom@!M3Rv>!Ct0JT+}vd_B0AH-u|+)!aTyo}qh+)ngBfHO{0UQZ2e|U&)RQ6U z@Q*YQoXnmKSXaGzkVR2E^g;&^#zn`7a=8{x(qp*+V)()g>n zDnpsAx3n@AWPD}%RxX7iJ2`keGv;(A#cQ-qSbRAi1%he)Y^ z-h!lC4!;v~$9-lI?eT22Ct}^bWEp~bbeL_c8CN{0C@o1e5cK)nlrKi%Sx42!u9mP9#?cP!k zL4VJ=fSAFrO(vPI?rQl0qkNQH0c4Q+s58jBa(+b4onONVhT9ZuXLCwC;42?60;sov zIX{Xcko}#(ucY`8b)MwBZqwxX;Oyne(*hC%*ce1UWUKm>hpe0fi6KDyQa0rtPxc8J z_l~YEN!IAcY44pzd|P*-Lnm30Z5>^B9rr!~k*?1h$nWB!>;eJ|bcTQ+485H=nC(@? z=QVhEeTi%);|KF@xwudM)SOsdTxMQe?Ay~x>stAs)wq}*$Bh?R^MEfrsSNIG)-8kk zDAh=l^{&*_6172B>lZkRj{!gd1<_2B)Kj$T!WTb2<=<~U`jvODeH0vb=1FrRf>Kw- zG4!C=k_w@jR~Oq!IKt*334v4;y<7qtrXrBM$)!eGUGA}DpR|!==DOJTCmxUBHF9eR zhk)IYt)`osVrB(nky8#sECg!|{Ni>+q!AM21gW(u!}Vcv8p>Ibq|V<=E?vPmjh>tT zXVuxnkL#1{dw)tY$tY?0lQg4NZd2QH%XfK854_$Fb8qwhUduSM!AD0U6Hc7e$RdaC*IaW7cN+O z?-q|`Sm^<^DN?INg4*(}22h4H^nX9EsIGJ2jL9=lj47Ow{BM7KlKt-|7w%3c(+P4a zITfR9{F5;jHbHKi?W)#?xsO?Uk3}@Jo?_$vSn9TdKQh86`iv}E!GBu|{5-lNLh1Z& z+xj_4r2*L&LEYoJh#%$GS3@!6^lj`iiDD*n$5E=<;QG~vD}ep#_n?EMCP~~ul5wN* zF;rA0Z!=i^@#%)4Cu`d~Y2ALaNIPYsR?1v`;shGQnw1kX{x%za8J20`cWHzw14XC~ zC`+x{GgDLf5bl1dsU%4krO+6DosN9<&_4416zYs8heJ+{Tgxf%rA{T{w>23V*I1-%UNcGf6-}S>ZCfOZD)c+4&F2Wzq zWewSqtX<36`VglkreC$A`s_~qNTI)Kn+gvA?@^~o*_?5zA3mdy9Rp(tlIzDGF7x#({D9CNS zx=4Bxb%Xl57H;&4rYkOM*koE2w3e--hPyW}WTThf0yv#z7-atyqh%)XCvTSl9J&7e z+E&0_YxntoPb`A2p z&--K6z*Fl~oobFB|G*z0kw_(kG}}I;?yZ>asf>n!=^d-<6W^{9fr%JAUdMQ#8#K-@ znDB8oop{i~DNc4sEJTf-*C49<-@%85Mx6>#_B?tX%t!2dQWfL>+xTIBFW4wL7IF}& zRgIr!djMK=OKzB~>|Lz<$Ck~*hI_aCA~t&YEzVLl339$pHi^C!d9qCE2q<`_wv|r( z=j4!slAu--q*hBD6&(f&*B;S^W_amvQ&NUy0P#xFLe>$9{#zp)ImpKC3Agu0{>Y}q zVJ#=AS1EtEn}Ii)Mp>Ml|G{Y-$GP!eHlVZA;|DC zk;D?|j-J}68(b^( zT~F}iNp|baGu^s*!}Vh}eEBVoCU^Trx0!mvnuwzt=R_=3Dlz4Y_-w zs-x#xDH++p@MdQrhMZye#?OmCVF2%y1|F77LHC1liF7eE1x|r0+*io2-g8cx6Muik z+%UwVK-6s|99gtoFlWwh2|1BPiGmUBASWW`s%1&xLJ_jSg>dQO zu>32)MAu`bAR*SEv$A3_>Z$L)ML( z$b|bcr5Q|Z8+D@7lA9A|G^r>7&OE8FX7+$Epzs#=?U=BhRzpkAy`nn{4!s4##cIG+J4uK)@kBg-PKCp?=#4yyLEo^{RF!fnJVv3N(n$T zHE;s51xr=A$IzaL6Jr|tQOpuuMyFU_XXZi;+yN1SP~33@iLj9^5xJcq({jLiCrmPJ z!x!En_qfiwce)iEPL8UXdPH@>sT09ReNtqOY|AI~?XzfCxp~a>a}Ei=j)lNv9{=o! zgQLJRzl9V7d+H8Vj%+sB$nLMG_ZFr{-^YCp`b~RfdBk)JMC6q-&PsOXBi}dWD4;c1 z<^0@=&i)@irxo2)kfKP7hFV8S#bsVDB^zp$p*a9xSeblyby4k6g+;N4agYpvGi4b=b*u=AHY2_xGD>8x7QI2iMxS*8 z4|`UG<~?hY>SI^)o|#^+!;B$2k9H$kJ0-}Hl~%8@DH9pnL%fJ7&V(EYL! z?bi0mX4Q})RA^9--mm_U5CxW?!{?=e%Zx-{`z%h=>o=s(3fsVxrbg+FKIQ+Krv_?5 z`IYMZ#Fdy%J&iSRA(#|u*#Vc0LSUKd3)B<< zLJ|nJ>?z7rDwU4R#@$cy?yMT)2q79DZWb!M3}+ojIWIUD5_^6&2#uSL9T^=XNfA9*u^~iTByMJ#X|+(# zn9!M4hAIcjeea3ZC$sKjqc0#*vy8 z-6@U0>ko^1{nddZ%|`Jx*b3!l%24uLD6k= zZ=NL;00-)}QjTn;05OcBeP~3*Q7CuxcyF)jdD2|oQ(vk`yF_A6ERyU__5N(D^aCepA!uW}G~f(9y>Qz5_2uzv z(}r650l&CBB8(h_8JFTLyySsjJ?DrAuW`=-oKd}i;`;u`CixDpE z(FY7LLI229eM!2J>^+3131%cWNYUh;U>2BgM9Nwx4_~B+<1CwqLr)MSEYYl1_PRap zko8NoQuz795slK{Jkc~pRjC;3OBy``9;hMX-AWoteteol3dl*E+GEFT58_b1qIW<>bd2#3Lz$SeQWTg%7$s(X2MmNJ#_J@2wKhHDQ@xGu#@e;Fy(HJA0nUsR zgkB23MDqjvvn*9&Nev+{zkyCBT9AJgNv^LzY^StF1SOh>BZK&+OQ|0mI%~+)_^iaa z7V-2pcZ@j*P;cs@jkd*?^`q1?+$);SMbwLte?DJ${SCc!TWvP<+Q!B$ zE709$x;QANiAt+m!2n%!VDO&M8?`(bSWcIQn zyC-m}`2}#=9E!&yfOOCF^b<_m;!tFZtY->1tDEIdSvyC$VyZpK%5s^4UzX9L_RMAd z5D=k5L+T_8Hxc4SlUAU3>AQ+-m>gZeaz91~7T#HO1 z5~JfiXdbvujRPAX!7SzbDKAes`LC{_SsEG>KR(w--TmUUq!N z$dPp3mEtXO`Hc4CWHMIjf!T^$W-!zTk6%DPJ^|oOOF4Ae_1OlGPDM9C+SuJw5~#^0 zW2L7PDfYl)Bug1iQC4EzicDzFmAIkmj*=UG$1E#-3v?am-o`>Ss-XfT6r|0f1fK+; zvw?%X1hlFc0P_0w9J;}>5=Gw7DFUO60S?BrVgU%n>0UthsyS>0!l!#xt+k6MCGMR@ z$?9No>Iy!augBr~IRJiWkqrRCAgUMo3X1Y4GF%nyTt=|iQSj&_fuZ2*y7zi5jajKz ziJYHR$jn1u1hANGJc+?u<|MwL&XZ)?F`(EhgFqQ%C)i?)p0>ciCMPyWMKp%2huYrH zK}#cMnb;{~;OHF!rKyEdRXfNz-Xwh|LBHmk9WtW{qY40NDwTT;i2T|MwnAS7d(DS^ zNqgYhOJYm}W~ei3g8hIxN22e@#Qx#*>Wg1seCYBHzl`Yl9E%1MJa%+_0w++5R#Swc;4>iI$X@8ID$ClF_T_Q2;vR#WiEkcPoz_w|~j#v@LnP&E09ina6=U|k+SBh&h* zyisG-)Qs2-1FU_ah}U2De|qJ#UC=C3a8&hfM=LNF<1LX|M?cch+R)D)oPKf9^a= zb8SI1)tKK+Vu3i1L!alAU;vFFQ1yuQer{b3to9qRJ2oDB;KCPp5^MK(1>?db%0ygQ z$f>d`p=Hua!=qQmGgN7CfTVsHzWSBvZM91~%4G^Lg^VTuHHr2@6-Fxyl_siwZL8~> zeBsM~>B1NnM#W#RRxmqj(Fw|UN*@XS9i`NTy{OCJQ8@Iy@g`uGLQj?i;riq#^-1A< z(xVDHHHidANfv~Yz)xSd=B zNPv%`H3396Y?g3$+bcD?B!gdfY#42ZA?`7>cZj<=p@2YR5A2PC2aG-WfJAC0pvMYvBviw zi=nB&MJ`cA{CW-@K5a^Tt!XiDaMY3#EoJ7Ifb{rOe9#XvECvMQbQu znM#$C(*s*Q8DHY92rvu=U+S1`CNdPI15w}xduRU$Ows-D~OG{W7RM0gnV9+Uq5^1PT zUT}AMF}w=BtIOle!0Bmif!pLGH-@>4MlFu-U=svVK!OQYRR-P4^@+iwz3ap8 z$vtT0UY%2Wum6J`Oucg&uKC%2j-0AwdTA84!_c0#3Z$6f#+64)DBC&o+T1ttqknjU z<3s@loz{3s%*>3E4vJ_r?SbUdp24*Ykx%{I`j-NL`0#KHG8zw0Xg52MtD?`0mk*8& zidg$g-R_zPeEDFUkF!j%rAgl4+1rX$=RXsEYm_C!}O1(P@OrhMqa-)kMvoK1J?!@Q2>aZi6?|jVF4`Wpk zh^?MSe0gnO>1v@nrvBL(jTkJqd9=!U<~BLs$>P<7msi{gQ6#V|tgTgO{YNk08~{$g z>ka_0qS>*V=2q|hBJKO1)~c;k_P;Dx^U5rKmbVhs96QQi3|Jj>zFfIJZ7g$N0P_RP z2`F=V0@QsY-$`Uv9RaABscp_pz)!~lredLF45)(wH&-*44a8j;r|x;I`UeNY?_3Ay zzvjj~t&(@PaVPEi}1A$ik_>+ykPc`VjI80+aQva{%RvAqYb9|HH@ z%yFGwKF;33ZiM*zMi`T)CiEl+y=%AzlO9*~{fdgTi^|j}fO~Z!!c3e*jon$AalF-8 zh+3YfG|M=KZtu+XxnL~|7VTN!xpDQ`Jx#M0Dw8iLG|4rzPZ_RAMdIyx^Dse0ou7aU z?@BDMUPzeBm`<&j2Pac+;DiA9SR)GHM%Mj10P2e5mn#+rMCbxnoIWl69?nMPa1N94 zAU=TX5h`G)&Ek7M7+<&ttY*<32j-aRFnlj4Gmy!}ZC{7JtzPq`w@i)eeH`8Z4)6)mXi1|biOJQ>&@3_*=htz$yM-u6+dNo zxsdrDGQg>QP-BLk7P%|BTkiXdkz+_$%aZ3qz?D|VHBMP)K($XQz=ZYH30Aepg{fTvF~~1Z5(n(n zfI&9HO0wmi00|)Lb1GhMvH~zLtzBZ!5aRY83(}U5)*%vTbfj}Fq%dB}`J~djc|rV` zE9A7~z&QuG0uSw#BY5AYBxuU&2PyVtS}NR1b!ovJP3cm-ASK zYHV%4*86Gy5CASroBT6q&^iPT_2#!v@Y6@76$PxWPbi;BK9)T{a1fYtUCu=32hue} zFsuciOZ)Z*B=OlpWXLt9b0M{1p4ixW$cE$~@DL~7Kue{Yd#=v|8#N(MYWT(r< zanlfOXheEmSpYNOe2r44gYeP^&555Qx}BYaAQ$8yYg}*bcf<{(Iq!v`O)g)~S!^ha zII>XXQgmzb{OU7Xsj3xg8Eph^Olsb|CPlvC4r%k(&!{!@QjDm*%(hXoIKN9x6CrvG25Ct!V zp9AKY8Ov}f0m<{8Sqp@R*b}@zI;Qn`k@T@5%a`--8t}c)%-H=TI-5^LWNENyCw;BDLkgw+?jkO{g=5^1TH z4c+0uA9W3F5+UOA&7MWs&r`9KLm-;%1IRr3fH}WPYyNojB!so3K%&$97w$2lZNGu3 ziOSH&3ap|6NcfgbbA=)HoT?dqO`Fm>_XLY!ti^tBz|L;hh*V9jOy& zI-y{Ez{5fI_7(rJqg&RVsO0#B$kB$iiT6LCJpQEMn(=fsLMkO5H!G$DF}{mbLl#hT zKu77PsQijWr2-$_#H#Q95#7-6N0^V3*2oW*qDP%K<`(11J0007c*4<1j8MLp>;(+w zt*77&e_v4z2O(>D7^#g%Pq3jeGMGMBQacSdhdK-1z37u8YZFB!L!SxPm!ZoKVa$3R z4fQt4JfQd{))p1lGEgDBPz9**_L||35;0ZgN~N|@)ADb8d)agQo>;xdi;w`|+<#5Z zdTQIN8bgF6WOWk{`t`$hjnvUZy+#3~j25p{x+@s&ty=g;X`t)&a}bb|--JkoNHn`+ zzc0+r>_{H^tKU-|)R89PNG+-r&PDG|bZb7v^P69|g{bD; zK zSC$S-5;Ik;#GTrRL?YTFDW1LsOri)77Mnsru?Q8efNXYr0G;Y_I6Xo!+ZiuF=6MnT ztvxvWX((5AV4aAhNifoM%e^kq`7t1VX1@Qid?>@SYGZ0KM6BV69GiHbi{V?fsaFuF z0+PVsz zR}tI?>7xe3ya~5ztK&K~YB}7OL+cW2@=_j$6~LI%O8MmE08)@kOsaJfNC9#!fM=}V zV|`<2Q-5(?Pv9}?Z?4qqy6{+M2(T2*`R>d2yT|bd)_DnlHYnEvmh97^S;rwF>x~CE zh1F~7WeQc>OYvV+(lkL+bskqtVo?Q=51R-IfPfmX57=);vVqL%@$CPWQYnobKdkSD zu8BItL}F6vc9?~UE=;e=N>&V@#8aJP$N?#HwDw6?&sw*O-5E})F%!V@KMt%LmZn|>jlM7`MUHLcejZyhd>g9B(F&?ovO5q(>ozGd*|zD@O5l5hi5Ez5WOh-xT|sC;b>yu?n3#%Uz~=^t{~^n zhy$9Io5Tw(bKO54GAQPgShi>SZqqgPUJ_w?7Y8)D^;e6?5rR~{!S7Z$q=<+Mft2am z+KhF3*u@Q`R;UyxPjo8jHwP34&?eN^7@r5c(S}9D^@wtkju}VoUwa7TV^=+?Tk|!x^Z|$fTds~% zFWHf!Ti}ZZ=nAjnv%*$I&g0cPLm|Mb@3R7+>MKn8LDD6tcyswxu)a9gN3hO8b0;uz z=S3gZcgtV?OJoc&`|2N1HO+FloFj{rkN~nqd6F_~{mO8V1aSWLW1F2moxFghYnVnh zY5_>Zx5m!alB=D-7b`7l!vRI=BEg3ybzy~7fF5B&X{fLYP*8O+N@onH3OH9N9{3As z3g%qW5R2vgZCbL!QR_V6y+cRhY{Zf*zt&%N1SGgAi3VABV5cbLMo|Kb9E<>r8Da6@ zv-Mq0jOJTx)WX(&l`VNd#7tOOGoxJP17B=@*_j!Y9zz!j$7hLEVtFEV$gpZYt{8_C zm>4Gl98!`i-h@R8Q?6j@(qBEScH!c!Q1?X|y%Y3T z{Np^WA|Tp5VGW(ikH6dc*iX0bij}QxL3Ll?P1v2f@R{q^A1lAf@P7bs#7Yry)f_n% zmv6a`p$)rwjW+o=m!5+fyyLUL>M{V4#zrQbScPU3^ou5=JEd}mP)jr9jlC7AW&^JU ztG|KHVozzVyLJw*nZ>6!KzDsW(IpWaYDkpEEQc=CaYrOoEysJwgz-|;RQgNXUQO&9 z!X)KA?_%HRmw{Ds$vHa&zww;@=B!1()TbYRewnKuk6q380RS6OnaC$Ia#RX@75V&& zdadTKhQaYAHC6%Ia7FhDJ*^xXtePCI7{@cJ3^I3%@TYhy}CfQp(Y{BRQ)4;QptqCT1uevz7mj7CJ|eHo@9sf>xK()C_xoZuY=;0pg=~7(V%u41^_j3 zDvel!rkxe<6UccJ(R@I%6g56rBm{rObQU@U- zasXz*gE~YjwwOUjePFtEAtj^bpiI=U$Mxp>v)P)@=CLO-`P-IA1PcDvZh z7&?=NWdTn~du{qO{VUm$2UQT+r=?8z0DlOhu0=id_e4gibBkMGyJS+(tl8a``HLl5 zfDSHncW~7D)y5>F)&kCn;sFzg8M1okD+G%W5x{a}Y2Qq%EGGy7p>b>iR+wAD+IrKC zilt|*r2ndA-JmjEKe{e0Vg1bn9&L-x|Klv%GnnCQbWur6?z?0k02OZfH2teMzt>^p zAjD65ucy*e60R+QxJJ+m%-q}nn36~=A7Y|mYN%+hYhNh!37GQLQ`)s_eDc3MTql<3 zYOB*>ezCvV|x=XIR3C2?EH|gwu)< zga?2XegLBpwl4+4t_y2hq*Bgm`Lo#RhcCP8&5@g`(FtS~}khms^k)x!kBEU)f zrHzKiR+Gt3pd3zb0JVCIGa|GzGac^+);E$d?jJ<-pjq;$R<}h26pf>@LN}@a4F$L) zoa?m}hyA{5XZ5rr_}R+_!LVm@QhQk2iCn=hGf&r_+{Jc+GwfCQzlLj+a!QigM~ct8grp*3Vl z6!IRJ>)n1v@Xc~_?Sjh`Pa5#96w+hLbaaO<@em;nwd0rl{AcavGQ8vB{NsgtU;Mj| zyOb`P<=17gqAh?p-Ej*mZ;wmP5+wll_4ps70d69TcU4z)tcRGq3Gem~A?Ip6@WsUX zp(l%umvQPM3z&R^`2lxSniw}HRQU(35{%UuPik9P@E|+$?M+IC2Q)`N>1F#8)@K3C z_h*8LK5bMIFilpNX3GOI$Uq$!b?*dhQGklVI}7Q5J<93)>PU?smv~9KU@dy_hTZ@! zw=HsEI>Knvn=}o>BPM{X_NT;JOwssGefqRzXT{5t2>^Jx9%A_nfS}e1YoDRxGhs?% z?~og-i1|IJ6XnN~Cf0#tgKv?g#^7~oeP);8bjNg?=tiP^#o!}i;I{TF=okc&GD!e4 zYq#L~KbeN*<5>Sx12!mUOG0P3LLeY^cJ|!JOwfJ;<0byM6BTc94V^=*A_Wf!Q*~$` zq4fkcL+Ugj6?_{&Z2t$Y$RUsbY=@h@|FKx7uFms5SB_7|6!(UtXkxkVXBH{2BgHkW zGbGwStWDU{xFDz9zYK93zM}-%$;>gL*!h!5%J%FP;P%bn(iT|1G1(a4;35nGXxpeH z=t8849*0x=e`ebSN@KlbT|i==p_)9>T6$?rm4B<#^qC+?ek%}9UDtJ8*Re;9ciyff z08*~g<0Sn$@5FmsSa^`8=Vd1FRs3o79L;S4NvhxaAS2SxUp4tC6$@Zhq-5&6(IY{DN6#tLQst}RYOn##N zK++KW(h>nQQ6!&Z7-Xg{S|_hk!N-^$jeap^cVjzj$@4oeLzCm}bN zWXdqT+qf$&x;&*8px9s60MhUqD@+N9B0bLWbjdK<=pkwlnxW6aqAGzsQ?HLd!;C^z z)2VX%Rxl#;kp*2vwZn@}N1_HS-f*2~sQT9+6cZQFM*1m5j!Ke5Un!J_ZQ7Hm>g|Jp zUl63KDAiTF&2wAi=&=j{IB3unx2pn9z{VC>8^F+imhy#O6i6r#QML#oBETW9wCxQp zK-`Tl9#pGtoQl;t3#F{9#J;Yp{F^UJx=v4MaUOFl-AlC8QR+{9;uTLKP6<$~nS@Vc zB_()tw4(mI2Co#ltP{Do&}Y=YAQ-cV@hB>j&C;GRP;A(57?Nlz)>w7V;Gs^|u;(wu zEVmCT((|K)Ds?2m8FiZ}izX_nQnl?h4niHHdS2^9Xvsf6ML4_E0R_pkG^4_}!{4Jc zOSw+ZOmbeKfwC8ttO9{g+H}jSIQ@~eXrc}2hXqBFlb7fWQE=_W&^LMRLFCtkx(m!( z1K@A#y@yAG{qM0J9;yO61|-wqoXj&x>Tmp8ENCcD5iM%foNN`)Vz}qM%ChY>Prd;N zppM^EY3fOpt!zW^2w@e_%L22l^3pwfcT&wYq^4;a4}`Lesf}Tws22J<2WiJtz%e02 zHmv+R%lO94bS?x;sJdn6`&8WtkI2Rz-Q%Z z8UXy;-2n-ToxnvwgVIFJ(}juwh4qW3y62*lVY{150|9k3$B^>AwKHs{;ycBwBD)SS zHt*IfCpC=$*XKMQk<~(9*hxL5TZhCiEEzU^MNFO_$!Aky?dgw>xwq+)DOhKE#sGj< z?aJ*dONSA=W1Fxbp(w!^;M+t?GeqA8LaYKrS>EaSEIFXa7EKF>6ZC2tzZKQ~gD+b+ z@%r)Yu9-$ay<~V&Nz<+LK6E343JS-2uAqUT?wvRrj_WsAhUf|a8X(TQ- zvbe}~oNc^khE0Do+PJu!f&X^X68X`Z;33vjmMnc8Z*=&}EJ9Jf2;%ku*VX}Erupuf z9@*Ajz?J}X={t55l(wIxWrON^QBJ#XqV-H~ccTG^t(+eJK0h$g(QPwXjGQ#C%WF=#5t!Jb8Luqx>i!V$fxAwj%L4g%jFaWwiZ^QGO~&TdnXTJ0s)I z^UH@8TUP~mXBx;<-Qx=Er%8OTOv|-Ri)uHMIv0h}*`R5M)WpEl&O_uG4bsjgx%YPf zu%$Z_`2!_#`c0ij)OV2|fA(S}+i4pfuPyYN!wZ9NEy04>(c# zU(56E@H_)gqB$Td}*(_yHtVqPZiO81VW~-E3&#{ojgpyQ?zswX9T;v-| z+Z?A;vrB-El^xU4QNg3HC|-Ee+L6s>Gy0tNTNeOppOb^cw-Y8}^={dQV^vz1Q39^@Uj>LSiQcpCtYrV#oB zM!I(Lu8v3ti67=YJ~%7Q0YGcV^d8r725_)55H(S&3oNTWJtkHy0v`jPR5Y!qcd)lU zNn+(ozy(l=nc>+KFTcYgmnZSU3S%`qmuBw}5e4lMtQR*>CX&v92y^vo$P1*YOafna zL~r&U%G)3J^1qp%3;@EimPRiDm@S%qqpP-LB7hFa`lgJVDRy-kvbbC55detwARO7i zC#I-dSTkpp3j)9e=poN<$>ymM>`&SYi&*`0ltir{RGmCR=RWb?ZLCbu<=>v7v{CKk zb7qjyaj!R3)Xej9TL}Oo6-}(uQve9jS}JCvt*{gKT7X3ZuC4<|uITpQoD?DLs(kh{ zhD>%ez3I9L%dmws^uV60Ukxf&Sln6A13(@(k>j`f?A08{3$Zn6X<8Xnfr2^rQOKyg zij{d&Da^})ApRK=;sp>%XUnq?BjiT1?i$%-CJB1Uf>rT%H5d4P12<27QCAI~lt})| zwnabf7puAmuv-yIx-kSGNaGKzau!v0d5HupW#vmk9yjLr9Xx&`Z!l*xB{1VU25Tjc z#5JhK&NVD3Ze9rBgzPKqzRnw-}rqzJUg2XVBQ$)5TQX&?Lm>VTD6*iZx48TYw0O*|Wbpzs|uaJ$I zR?(W^ij*MjN&rZiJQapaz5TkLB$-EmEJ9FK^;Va71?DfSUamv=9S_yf>OvHKk}M0^ z`SOPBu4DRUqH+>h6H~lr3uzO8h6uvZ;PNApf!pKg4w%##JQm10CZ5`%Bp6cr^fT{1 z+J)PJ(I$J-F0yKnGd7`u%}4;eVQZCD)MGejj&8xn>l^iY*!ra0R|jF$&R*-J16Eq} z-FHPT%9D7R33i6MciJLm_%zklTRtOJFzbHa+&hB@*S)L4+N#29xkbywQY(=>E=hSo z-rpf3WpmmUfuUh=EfN6yad>WJiC3Bh?C9fl5uJ|sIiaEYwrUncgXC%0?yLgQbVdqs z2_5PC5?0&l&LJKZ0dHIf(tC+YWxQ#Js_=2F8M%vzA8d>iORBjQ(mQEqo59!ATYxd7~`p0%=}bUqw-8VHd@5J{NMW zbFCiPx=@f^XC)wM?My!JDqNl!LciIvGvo+>)Ih2mH=CQS8~`K+WG5R(GF}q0C9Ms8 zuCA5>pQLCNtud=(Wr)OG*m%&Ie~3%Yg$^7{rlwsALGA*{eHYR9Euai;TNYO3sR49;XwBS}FHyI~8fkK(L#ijb?0sNrXp#)ElXTRiAYz_C55(9~d{prG32%b| zH_Vpaa6Gp2qfI<+;QE~5Xl47a)GvG`rnrqk3OiE z@honx!I>tRb1onVlBKMlM%sI@==!3aMtosgO0gvXCl@017)Oj6pJR(F2|$2+FOE{x z`RfsCRDF%B%WwLUXH&NgD}?gRs~gTIwIs2LWWzFTWM2n#C^%9yV^zaypnPqb4{16= zdIMk)I7n?Q4qZ`sWPQg5{Kf4Co>Mgy5H?z=)rO6el9vj5R9viovs#O`3X4VAhA+IU z@edu6bCw0z&DbSzmFY?lV}8HBHh<>KIsD4BOzmFBcM?` za2ax%!$>iV7V&FYHI!dV^BPSXq&Es44Avr4f@igBvQT?>teHFOhpDVZl7z=E%BWj6 z=O(M?v8^V4>c`d?8)~OQs?E%I8my=%Y9&1%Xd6Df4K<&3D4SIUr93nr&~(&UIsnv)Qr(M?U3Zl;`N6pF^g7r2#m5qz z+AGA%QK=#HYGvU8Zax6bqFw94OJLB_u=28SRy+QJM#))p$nk{_v7-P5wttU2J764Xn1c288>=MW9k=0ChwbJY) zIcL35_PVx>8d zy>=b11fWae{sBZP=t4V-u{zPLUfKv^lm%dQGR8RgRtRpsSiDbp6>#ZA!mez^q*8l@ zl+UVdb05Sv^6ATmE7wH_)I{ZqTN zhwxSoDnm++_Lcyw;)v!0n~q{wNg&sz^GlFYN|-73z=es-G<(i^m6PV-S1Vq|(_}c; z7IdZ(ATLm;mJc*gMoR!Fi?34vD!$qxnY4s4VEJkF-Am?JfnR>rCwwvY-ZA2V%VjTP zFsxL9k(iLI&fN^&0a*1+)1tG??78j#{b?u5#$D?kx*PNIY~Qa{q-1#D*ap<>b;CU} zr;{Z8M2{YTI3Rx}47~99MC;cPllHYD`7&AD8A)jlK)VsRq8QxsvQEEt>!Tk)#`*A^K|?S_E2J2y;P9IZ%@Ok2yo_lB0KE4DqiLG1Tf1d@NKwq10%`UN%FB(gkI|Tu z!=#^(N!&Lchi19+a7Fx#r|%m{y#hE?b~LdBVB2>G5CyGJW(`#J6jE0XQ}?`SF!?uX z`ZjMAND@w=Ph$n}W~vWw(L5oK&4+0^g884T<_8)Y&4{Xb_+bs!WPlc{_M~PbkjHGf z$MC9^wn-WyB;B=Py9UuS0?VvI{skq}hh}C80A=DkSt!aC4Md1s3HXZk*u)+vLTTDX zgNn=UvY?)?F`7}bYgt<%2aHNOq6|InhBGNXrV-5T|7t!iSgynMlqfxeV zhzN;-YN{7rMO&N3MyjSJZvA{~pK4r~b1iob!6ccvDwzYQ8dylZggG8|f_XMI!Q*sF@PkV<^5iQ5%}1g<_aHEL+3k8PQAQQ@@JyrAS3SoCOn> z)CVarH2^A~R3z;{>v*WO;MIHFtGRl|jX_~8`ccYvESt*~#cl;+siP8y4o%;FikEQ&%5&ms@zd9sWi+0041UgC=9mzQl$qqtQ$)a}p{{ zTBAm_(cvYGD#KmV;RF$Je!K$FT`NuDmBc>OFp9(O%A&imsf|40EB1Ro4{+B2MyW7cU_O0jJ?D`3&U!ffSN zd~745Mx9Aj1nQfXaxLzf(*ObR+vVbVSxd~VE29QB$o%Ef@itoR6yzD~PMl_f^a1Hv zMMb#fqihn`XjuzlJzcJy6FzEI1O5v>Uh>c4<0}50j@brZ-ab&#vquT^frhojWl#KL&L}p>yQDee~mF|Lt{t_>W7gVI?aBW6C8reSK zViOh0qHAe^b!EI-1!Jr?FOz{W3NaQ~1vqf|#M?(s9WDbt(i>4B1$CCrC&daNHFWO4 z(UxLczQ1-ZXr+HxR*iMuKvq;}BlO21pei}W#ZT@i|Nd-9QV4Y_p5LUpYQ=*p^1BR8 z_C<>IMKIlI1JR|;#lt~0@t_ER7^Y-lv;&r#c`>{JB6)12+J8fKb$ko571DW3>Nx$d zS5k8Sgc5tx*faoy!toVbi?*$rqKk9Kf+4wP_b#ec+gi)wE@~9Fnd$6QSV$!uW*rWd zleQ=S--r3R2|zA%2~$9)KAJh>>C>F`19|e39mvi>Fnc;DO zL|*b9=b5ptjnlT!NwJU?BjR5=-=rm>tL_@I3szj8Zcz$8cdd}$FpBu z;!E#HH8rTNd>tq@_i-aI20{Nn?fWdcDtg=+2JeY4V_ZilDdqF#hk~YVK=@uC`a?N*?_ilq-A~p(6#s&MV)m})m_lXe_ZmC(kcqxswN?>8QM+|Q#qu2aFU|Zqms7ogCQnmIC2F3wfg4w z8bVA0VTq|;Yqi$VWruQtVY8hU&pn1O$FjF@i^nwm1oeQmY{wm{1vYBt!c|OLjYYm3 zW6iDK>(Q^Q>k^Jn=fiogfB8i#RCuM>G@v(Dpd)pvm(s8y`}jplqm{c%b^Eto5~FOh z+C^n>kB)tGZD=)3qgS6S6{L#;?-{w6BUb*REUPIjqB}-N?b)=rHpd?4!u_j1;l@Eslg)w)DA*WbfgO0#WP*QpqeMKyXz3^oE^U-^;UISuaN^{5A8-BGaOSG2Sv-i{7o&?9^>HSp zCt<9n!enfP5;V~fc+pJ2`#Z_$)W}&I60t^BVQVK7@=n~nKl_@auH0O}?}L2(>fk`6 z@ualt)^}NJlQhz*Ye=3%^s{pDPGd)-V9Q#giWt&Y{d>Zh+BG$$`jdIZ!5G39>Gwf{ zuQv4NjGv*dp*QjP2Br?yK8-B62&0*U6&)1`@Rj5o_I{*(jlg$QJ+t!~6gvaO{>Iwl za-lS7^pI?j#~yGpYo73_DJa`d(RIS%r`*y+G;GyaOIR+jlQqe&oubJ-O{CX07Dk=j z&G1ek+A^YjpUo!06TiucT89_9uHz_|uRcsoB&(xk4V}1fh({O*n`k21;;a(w8=1p8 zFZe|GNV$1mZl&7_&pVxm$NtKyJ7AUGq=PQ)Vx9WlFc9NCPIX*GZiiHxX6b# z?@L}3`{U$28@J1bDmmgoVt-dJ(m?hh8M!qqy+Q#;4sv{*O6V#NXA?M&8l?xkTYvX_ zmXYp`xiV=;nNV6AXCVg^qUCm@aUOY%fyEpPc-Us@JeU_7Wa#zn^mRRBDAz92b=Xjg zP!PFSjys|cOSV>h?tzkJYe~tduk^0rCtOO<;P;m!|u_2<^YJ!t9zH z)|_ZqP1UmB#~j8XGItrzo{;QUJx{+C0AR8F@Y)JRYfkJ_}=cQpIv!$5vGQ$2Srb zk-p=mCY5oPE(y-x^%sLRFEkDrAXi^E7&$8j^q5|t$Ov(F%*ZAy(J5C8Vye*euEVMD zeEQREE=Jrk&OC~oMdb&Aj(KIlX8gSbzEhi?2P;c^*Kv z#ZP>ce5Gz{raFYG_9*j=X>|}ShoX7lhx)h4TfuR4j3uu{6Ouf&shCY;RPK=D{n8Zp z%d_ztx9jALm4$(ye2mQHa}mF<#y}rllbRwiN>SmI`5dn)h$Kj0K9cRw%urey`T}!) zx1YFn^LMAY)EjE?a#Yw|7W93(XNlr>Auo+eeHR45H&2&SIb z^!V>I6R%<85@$hk%v}u@s-8)@D1AC?97Xly&{t&{j~m!bT;mVUA*xUcNGG@D!~gkX z?`I8$>2P@>-()21uf>OW!Br^w57~9R=>~&Wp@!^Dqa}`qiXI?yctf7u?)3_yq@?%Y zlR9B`8-#|R`ffLu07Li)&6P^Le4~ED-&W{cyHha@iEiO{H9~ORF8|c&bZg^(~6< zNRa%OjE8j|xMTe}3}YwFWSSB@T1b+h@uh?sT5yi<$lfBk_M|gJFLRF4l6mC7f&=>l z%Bj>ZyNHP?*mDl+%6%K?z_mknv?n5_%@S4}BH%)jrbB=Vx_fWD9~Xha*TrSjPAn*1 zRS9st=v2`%Gg#=`RrYpO1S%Sv1j!hl|B2f21tJCF_pe#k$eiJaE2tHG^n$uoS6t^9 zxWOFwiz?|@R$VsSc{N`wWC3k_?`hvFsvtG1lwpSu0M8As*{ zTh_q49Ww8eLO*9^<@N$w#&SGcw~=E&0tYLn>MQA>Laa-Pm6uY_%e zd6FCOfta=$(NnqD)PJ^5k-{?!Oc>_%g)XgIpxLUy+_SAY9y`=>n)dLy)RTt5OE1O% zlcP3~`gvl*XPK>#LSQo{f>_pn(8#Z*d#Lb9$ty-ivT9)(@--S4@z@o!LMLieGm~T< z`V*qc8S}#f^`<>_4SX#N#vbpX-RkCF;h36+P*G7V@?2(qdz;Y(h_fGn;W6WV5s&adYjR1L$aGe-$`H*Y^gEyWrH zv6yjKQvf37O@H0J zE%U?%BS$kA^Vv%|kwZGkM6z;*u+FT6>S4Jr!y>`)XQhMZox|4YkAIvw%^&EL&(SE+ z`=~p@X3u&b7AiMxu9wF7>$#Xr393oj@nEf7etaKKvAyhCX|CaLm()5@PPy+ZBc1-x zN=c(| zaFxJTwxfS`G#(~i!|KnkC7!wjPpODi-%^NgNE zLuAzXygJ#*(}9KE^r6^d-umRVg?d~F!+^4uC4oi{w*76&eNtvH+u`lUc_;lTSmEVM z6gyp))vSz-Ti)rg0ewDhK3mChGDncn_J;V|0#aOApK0h}luu0MLr^LawKjHDRZchS zhg%#K6^Sc3^Yi}vW-J6@G?+uNiyUwl+&RfS5N-NJ*SJn)t9Vu~)cBij5nNV) zvW8>pa*8*ol5g*q*4{MkyB5bPehoL-Z^Tt>xBGM*^Ft@(lic$3QKzfkbf?bf<&K@l z@i(}hrQFNnfK7w;J#iT(7p8&Ftgz2+`I8Ri`kWJzjnZGe#^_AIeCv!wc}|4qoZV`_ zD0|8bz@tbFa?3n$a7q?Rj?I8tK{cmu{3Z2)_6rMMeKX&dz64a%WK~lVDGM_K;IBlu zv0B#$!~2O7%_%^#QY2z5K#2cu8iN!ekH)vgjgsS%`)-3H(uKarJj;^++4scJ1j^gZ zIg?Y6$lj0-jP?i$a-3JaMf=OojJ@S|`%+{R;D}-jG@-?eXp(72dR-7?WSiplkDRd| z_N(N`qZB0#VuQd4qJyU=B1)=)#xEynpX$rqwToYxV>|DQyzf$z2Z7$Xj_<^59*@|I zL~S^uQs9T(cuEa%;P{@8>pusgP`bB(QzZSDs}Qp!7%hPKS0XE3z>1i7+(%EcGXFF7>vs-K3~;QA;k5f%eBX~>;RWQj%% zTaA8x-q*ho%ov42O&C%6cCQqxckU}lWAY`C#K9xr&KiU#a@7|)5^9p({|Q4{6pbkS zs&>{%>q*0$l4sIrs|r40&-AI*LQQrG1*+LL41sLxUn#BK`_^Ws{%$j*y4XLCg1W4R z&Z_Hh{F`^x7us9L;IonmQtAF?{C4}IAwBEDZr?b(YN-_)1rIWd)(%MK^?d=AWU%_h z-ZKR#XV$>{X=dlQ!`+{?OL%b_;R&z5pmo>%HF|r~eiH9kXdw7iMdDE0G?cxf@Dc?m z<%_x84ZkB!xu=Tg*kZB7q}NgWR#(*>LBlz1i2 z{V8mKRSok;MRCay&)Z~3wpK7Z?Q;3~oMpdrcAR~ISi;#_nQ{Iqen+PnOESHj5EQ~g zc1$H|op(`x1Kgnvr*esgomHtO^rjVU4j$58|6Sz%@}oe;4i{>-{r>kddh4%M4u5_I zPlc{n__eLoi0hDga>(NpUG8Dlk&1{QAdig0tDG2Uja$Iu6CTn!ZFF{sVD>+GL!o2# zhHJ~r{P25O&+eRf9xvE&2MW|!$T&j`0_{09yYm(&UMrWQyMm~AMcJ#zVE}NYjKV%I zq5MXuGdk2kep(1BbXS2Va?pj?g&}Q>)2%3u-27l?pCLS|wkG54Rr!vc&Z*1xs=PB^ z(oS{}EFwECtkWj;k8EWuvkK$Lvnll;Ma_H1C)ARcC zr_C1wI46{dZ5X_wE{MnJ!yNXzS)`{33x#S};s;#&{(?DX0q!}@8+ga3&_ud>OKk(Q zqZg4`nltl*nn?bAVQ^MkQ6!fm@`4&4d{t-fbv6iw-qE#_hE^lFL>wk4-je#{R%)*1 zo)`p?ym=?qe)n}vda$c;e~g+bGuaPT`{(U?J;zk-a#detFzwdxBJ+pg@;X*=Bz@%9 zPTV|wcpcG6J)8Ubf%?rSuV?gGt7ijwH1gBpAg>l?r3S?8w8}Oo<36wfI$e zx(jM?{Iy4IX%gf*$!WkNtO;Vhx%YQ13}9p*+PF<^WqpDr?|-h*;$-SGE$h&z zidyq+`tK>Snm2s*=dnV56~}iJy_)0G(+Zkqnr@%DTh@gNsjA@6i~*UzLkx+@<_cGk zIH+XF`IkFZNN#*)@nd^!K*sEv1rP~597?2Om3-ZX@%?FWQfVp?@C9kOsrRtVG(vUs zG9BhLBc{fDT-s{7sfP%2ykFDQosyyM{@&w?>B7tT;1K#yo6q$FZ+j>)lSNX6oq|3{ zt4hWRcg*4OUc8j_fc`eJ)!_%11slvwH}IZrep#*Wqrzw^uMNYtLp4>APp6tNcLgzZ zj|mt}_d*B|_S>Etm1)Xa{!%}yRHP1mk{LsZD0V|C1r!-`Eo}C#N&e+@N;kfI$qB?| zL?Kyay4sW!m68XJ1iUk$nDBsoYrf78ZpjY07*qTym=6=UQbq$ahS4n%pn0O+2#BO= zVSREsJ$ghS}Qsr}yV{d>)Bt?~e>H6<$Y>%dM5FodI1>Me5CBpVHv z+NO|72X~eVl`xVtBH`3o!ixVEtw*j9-_1I^|yfP7vYa= zTM_UWBS+VV2Y&7HNGjNJ`*oVm-?3_g5w#P{XBhOB$RRqckyeMYOK<|H@uUG(i|ipM zfWioNiX&`WHg0B=qe+R5+^FQ++Gb5F+u0-|qegw(l01<*Pl6ENW_09-|8`M?`xF!1 zU@Jfzj#wlE39htn1zQj6tq4Ew%9M)DyPY6^+HBs;ya3O0d?C2`V;tTHyC;7>AF?WQ zN=MzOeesm7M)QU$mbrCyz3Y7P#sZB0xOA%gaT!Ntsh$+H@b%*^W<%f4o&9ojkv9=T z(k2~}QW(jgZsI$M#-F0PdRF%(w`Q4pNltFki|1jUAl?L$O|j}eqG&>w-Q4k z23D?}ZxO`o))rMAPm1}8Nu?suYWDPS%C9XXoXD;k2g&Cn-Y@XA3*J4G@5?m6a|_sc ze7Cj?UroKlH>ID>JciZ$;)CWMo&-;WsiGmbep@)FPluhQM%lgxwbd*FkOSds(;z~H z=PmKI`qKPNJ$e)8t5XNKkR7#$)8`k^byMFsYb*0yCjfDGn5ZS~7ubecb0mDPMuz^= z)vH`byH{I(>pqO~CgwB5ciVW44$j~oK8*?Vx9O_BTgtCCX*wAwwOmpe)~yb2 zH(OXEfV={oYU|F}JCjN2dOd%^sQkzZ}pb^P_+O z!pCUy==PCl|K|HV@;~1m>0s!F9-nW0FZ`VBT55BBkt4VFNq zs)~BL4xf5Qttu0fkmD=K^~1WZ3lq(6uj>bYYYwkve4(FO|BmOJCrLcek6P+gRiDE- zr|QNlaZR)m^Im`Tx0`d$`@T0?nv{B}rgV3yqiW8cJ?Ff)%j>-)F)pa-`ySS(yXUyK z3MXz%+$gx#=_Rm*F2j~-iyT6p+zMU%Rswb0$o*s>}+kUJZrsjJ*~ z_v~K4J!;%mZ@@NHwe%_j1Oyd8$7YO85orR}NPyyMxvTqwjs{sU%{i1a9-f%A8bT3y+LvG$0lnb|+~>Hk*E zZSzm{pU7KdnOn0ZgDhs2Ru-(l!WEN2xFUB$&wcK5&VB#xXP=keFv!Ye zTa95d)><=x6R^jl@s_y?*+D7Q*b`RJQ751YIn1zSKjFv@$(~9l>`_v1ckG>zr7$Xf zCA)CO>+(9dk=4;UU}&TlOZVzSaLyza57WP7Cd2&qJjrEu$l=J!cnFvptQa^-sdg{D7Qu&bf2WA6H)MQ_eZ(yxe4Gz#xONkU%KstXDY;jKM1h7x#T# z=XIw0vHN3$nqjF>CwtLUt7uW4mJ_r}wro5Yt=9OayT;(=p9B4IGY=LLM z(_pOt!#Gt7EGMd)mSA=62CD2)qs|Dq7ht*?2dbBaMuV$Rzn$a`m|>NHh26=>9&Cm( zRb~Z`UYy^eaoM;7)&wL|T8*1osMP^q8vu}QZEais!Ngh{hx^*+%U%;3%QkDCJk&&W}fpG%w{!budq9@n3*dF%wx8S z84?F`a;8C+#gavKI6{$}8L9sJf^55PYumO^#4#9n(VoM_4FEyO^VhDdZHpv1m$3GF zdkLaTnVFs@F*99&ya89t(lS|MmM(%>Cb`r0M!!GgpEH@@E zVwOtamAFQ2Rd0#fQmj}t3nf@)uqQpSrcIHb;*Ka!Ov}3&aI0-wo@9jk`QpeBPQ?gp z@VBv=R=@LgardV?ng76HW@ct)X4si=7|hJfUV0bUGBYPV6J}ETgIw^Vhf^oE(u zDuR#I~)qZQtyTj;kjGr+i{1ZQEw-O@0Me z?b3GVndg}pyV|z(*{@?ewQU>obr~nCYHEf1zWw(FNs=W=l58nQLT9PFS%{k(DT|0& zzkYE|`>$GVoKG`6*N|kGna429%*@P;mu8j}QAx*%n%r6yvp6oCTJ709@({RCt~9s+(njWq=%B3 z*&Z@8Gc%*Y%#2@2ANfip)I|DEQIce_ZG)AkoD0FX55nRe0s05*xc~1sl5@)4)mpaZ zIC9rm?=K+lV~w))n<<@C=->OlS4CbyW?e*}(vCJ|3-IP89m;!&!1~&7HzGy{sC3iG zS@I=w0?VXRrCwUgl$|jf6UlYSd!P4929TH5FF`a25a0p&43iC%4JKLw>||X(c}5K| zs<5KjwDTVD8Wj-kl8T-DB%T94#Q--dh$S!&HG%vhI@pTTQg9P}kr1B#gALn|$np76;N+O11T zoj#Nl@~zcUpyps@nYX+&s!^C8YZ+_F-qMC~cuuie>%~BMnR>&iYI&K4e2a$XnN=A3 zRMKE+-G@Gn6vkSx*3Yt+H{`{ZHMKn8OJJ!axwUPp+R~YXpIv|F>T~(r-CZ(>J#vT{ zlt4%W&7EV{6>({7c2WZvhwpZj_4`<^pT8QV_1Wo$cXZ5xwQ zO&e!UmFrq{v02%+Z9A#$OuDnECTmo&U1d_)c5mA#*Sj;n*hytOsg3pSDSuBFr?ls~ zAZPoZwppPHn35R9@Rww_OEB{Z7vXjQhI@MJiD8DU;7#P#w%bTjBvT*(eEg59NkC6> z6TnzvwZERU^ae4)S`k8bC(wThZW~FGB<~T>X7!2K?5OUZ2UvRcZ@J^<)AVcf1I)7A zB{MTKLl}m~GiDA9l)LJV+wiK)?HAzrz0dpFPV)gOE89Zom0VeZQwlDbP89~vDymn3 zQ#cCx3k05$75oIV8>c#jFy~kSOHa8+nq{*r+B)S96}Dk;tTMOns#WNW6wXsz(vd=E z7o9T0Jl2^MtXa*rY}J;mGNViGSf_Z@9a<@clViCYTBfx$vPOlgZJRMCT`Jq=dPm>) z&wMkx8+XPL7?s+z&N-yEsEmeP24est_D=F>{p>q*G2nS$^ zh`7TVL>qPgB}kGSwhh*`RaqV&IPr3Ub6#L++O}1Wn;+{iGiMmY>h2k7TCMRgn3a9!U8SKg#|-0|Qk7|SlI+q3rNhi-hK^yfJmEy`#LV_K%rh!E zj3>0xsLU#@qSZ)YP`Rs4nIs7Sn6^#-&@n^6AeLe$PZ+}wiVs-gozV7pJ2UfEX09oU z%Wa^18uR`j$+m6PPSTjXdyn4t(*k-B8lesN>A-(=NC|g`BDJ`?yOeN62c*0l<{7EQtzj}MW@e_}5Y9GPGc&W9c{SC~ zfj*i)(F>W{Y==8cs+egPh7M;sWM+mAM^##9+e=mYEW*st3aYH&A4rF$RMp{_-8;?n z1Pv#!EY_MAG^QHPmXHKmfP)1e)$JT*rul_8vHX=Z(42348ens^n46?398 z?IdgaXUI<9!u+ecx~kg7F>m0USQl`#ijzk6ja765-dQ`_ww;V(J6k!nZL3!FT4MK{ zedInNCnC0xn2@rDU|lF_h(#_L?(XjPc>RY2Np9Q*u(yyAp`0iZWUhCD=?}i@4u@p_ zy^Z$#%kh2I9YPNFQ5JKsj)>V=M+x>_-*eGdeb1n;`mn_oG3Nb!nr8E&6CEY8mb4^jQ~N^jRA~`lth)0GD$b#Tgu;KzjP1!`-wi{PH7SSqy6NwEpq@DTf2t{oN2t zZ&m%z`Yg}U6A<`=-A8XV!RJd%T**5_9evgZ4_93)2Yc+dpECvAm1aMwZF%dyR(>u` z7iTkEO+$%F>c%Wp{h}d{l6jMFNWX|J^ocfQ=#J+q9QHB@97-gngto(p4BEah^w0Ol z7p>0xlw%HfN0i%ZFKkX4%a?Qj0zcB#pLvElHuzr?NLDs*A2+bdT*uK)fVKwi^C2TX zj1PGqpN*dcR9(&-dXW3R({u3CasJMC!^x3@)6*>9Us9rzT7#{sUzE**mcP#yTezyK zZ7SW}RwLW;^5|=oVBIp8AqNYT?BBOtT}mHc4yCCK zP4CmT?ceo_{Hl_JM|@LMcWSOO$>B`YVx(k1sD*&z@C-fHfPc!&@kJ{$p8(Ilsd@T; ze!lizCiG)^O1)Kw%75!`%@vbYSp9*(W#*Zc&I@w`%+Xgvm~A#({r&IiT%NsRWxKNZJTUE`bG56#~S-|bf;hi6ckvW)3roEdI~be81Y3bM~^Xv zVJ9-d{n4x<`RUlhE+!4Up%41l0AxTC|47Hw%5}_UfgB>D(sm3cCdv*ac&1cbbxDbu ze9BXWnp#C|{UYwr$J!LvosO$)HL`6lJGBB2%2M}G@SDb%*($TrRuEv@cZFT0wTQ$}r-09U-CNw>EW(w}OkR9JHG>6v#4IN+Rz> z!!9NrV5U~)0MW&sd&Xjb<3imHkY`qz``FKonFF3le;%_Xthb(uDHRgG9fu%PmT#}R zzLd^EAmB}(RkYR?TAH$Vr`+Ua(wE{lBryrVUP#6;`rXO|5cSPtf1h~u)&}sB-&18Y zlMp(zG&rjQapid2AT|R4$uYIU9DO$i4@{YPI1-*+{Mhx%`e+Ptqw?|7bb#-sGb8jl z@&wr1(BNK&27imlk&Zr)%^&gQc{)Ghi}MbC_!sB@&foE?x{E%zZ8kTGG3VD>Yb~HE zZ&P~kb99Hiio%nZ-{46?f~wfFt!%u0V^F~u#~O4{U;{)g{K_Nc)^>tRJttu`Adw#m z_J>b5Fc?&_;+|STILeFzJGpWnfp(=ikLBDKk;*Em>q;z?7NZ0(6&d>OQ~mXZD5kIH z7m=D$Ct%Fc4}BFzdk@}Ltyn= zd_mgueLZsaRo^a3wl0mLh_%Q~6?DgT6>fbG-by7SBM2z`d7M1>!Nd0Z;0Lcwqz$|P zVM9$dyFcC?!3WV6;G`!V29&0ed+cRogPc;ZP--pGCD<1P9txq|$?m zSB^XEx_5W?hdyo)jm#ek9q@vLjWfptTjuw7(ub1UBt9<#AQR;1&~Mk7dv3oiXUQdL z?L?W_i97+?Iyf8P&ehC*B|1HY056qk1+ZAL&O;PZvnV1Wg5H$g9nV!1o4jAXHaiEy z1XNPg9BSbCGM-@F)h~Xb8N4y>j;Sq$zpm4y$&xIOA^5s}E!30iIpf94Y`CESV2iS?q1QKx!T>b6UxaO{qr1O8 zT>j)`&^IWG6}x<}!P->b;K<5UjQ@4x{E+;g__CVa@m%6i^a1t<@z8ICQbh!C*>*Vk zY3^BVO-`FowtOV^x%pq=lbW_HWAc3oWbrG-r{Y4FF(Yn>NH3MjqUKE~wx-33P5$S@ z0DMuu$Zjgqozzv__FBeQ&Sw!AB*i&-z{IUU|eB;Eeww-HCkB5&nU6bqkZ( z;BOI*f@yG*3*aoc+aR$T{U3j7n_8c__*w#nzr$`In_cV!d0q7z{g6TGQ4ChYTm|WZCb3@MWG^R z@S}9c5&qEf^4Loh_{))|tQ|BegJ56B9&!#(WzKfMAzppN5Y>j|to)(TNE{d!y8A;N zv&CTmJArN8(<)@!X2)#qdB8bk%f@4Yfv1?GEjnjP+5nNG?Y9vaOW=TsqUlK$}o;+5kJIr`c|H`dGh)^vkbbx(^UV$*>+pK|0-j@bs2uFTeV zLqG+&Q#kKxD0%xSeQj(pZP@sjk&Zox%}@PQ9FQMj?-_y+m$AdV&V|Bm3&-V}r@kKgn3|2BaGg+joW{C;r?k$TBDpoS+e36Lp32)Yt zAIGl|Pn=o8tIb3=YxydLXpBT$;pMjP?d659lb2Vf2w(c79$%V?NQ{rFfWx9ARx-#w z5-A=I6Ac9g5z={>VxubB_~ow@vZur^65 z{rZ&dq_0xGJIP))e<@BY5_=H=-q1}f8W8_nfI%QwRXlCre^dGc_`Em_Ks~y31KS#_ z5h#op7k!G|lhzgmM;TY!T%zM1bBT|SeeCyt|6?C3h0Ol!=<(t|=gdk3L}w(5_SIZ- zig~K>uR0r`pR#SV9*NY5*&K-!w;xpj2|JJ7?KjxaD~*#XIn%r@_=g*Kc_mcA+x7|t z1OG6Q3h_dW%}?9^gqIh>3(p*tmhcLPj<$@=OCR_TV{uYmUI~@(wvA-&2bXKQv0oJC z!XIoF`AucIE4n9}yk_{41y-bTAaL^W(dQ;GrNt8*+T(&$ZzAZI}vUWLlU*K3me;;I=Wp&%Sl50^AVcbi0 z%W*H;*;8UzRM;Gic45E0vz~RlD~|mIyW5AyM$y{Xc$tp*RtoXNm%=)Q!$i$yD`}>q zc@lh`4jh$wVIPqY!x07<##0Nm%IO2FR|5q@5yS%?x7&C9k{ zJeb!c_OZC>$fP*p=R!$AQ?saWE;EaO?v!0+&vsIJSqu&_8rP(7?rTqF(zB}?_ou`@ zh^iLd!lcbZp=AiBqvB?l1p7nP-Q5Ovb{U9!jsza){&?Eb>iz*Au&tY1LSOuPIL=7S zyGecjJ{(66^ixpg1lQc^gySxZ)_Qakgt($hvpKDsE;-fAQ*}(Jg7I~0d3fO*;0E?# z(GeUgwCvt;60ZYyJiM2fBjPxRSa*I=p-(|h(fstkBd%t!#zwm zY&0w?f~DtO&hN8mzk&v8#kI1MLJ^7arb!JLCh-TqZlt1(>$`~%yh_nM36#guotK&c zqC1_bT0HGMH&siC$h@J_NN!W{#9@FFk{EcbZn_H5cViDVD(n`Q32xiXeeAwFsSLID z?e{Q}xq(e%+i!EWMY&2~E|D)#5Ex=GQfE2Kz1Nz5ehk=8F^>WVv&4n+=ggL6P8q44 z6u$k7M2syz?qz$EnccjvG$tr z%WkkLv%8A|TRPRXpK@Kbz;CLqyJE$@>Z=N6Gp`7EuSd*Pr~!~}?>KuBDNmz&h@d=@yr2i4{ocDty;|63^4eA>Ve?l??U3Hxi zj{e{_E;F}Bh@}1~hY{gkCy{LVbsUF8+v9e0@oRU~wr+BZe4LX^BL2gHt$qKBAip~j zC@yL}*XQhRL=D|_Lluc!C1Nd#y?BAyC?9C{L_z+%JzY#O8>*~656x5;ryL%2R>Mg* z=g{zzJ2=LM&i>Gcb2(x;_&82mZ@~re{UO_$0Cm5XwJj!zIlq|qkHox-LH?qmV=&61 z352^TOLr{c4=Bpw#BUX2)+67y8znD`y*$5M3I|Q+Jy~%``ji{0#k0=0ABWb=Ahh!` z^TtZIs86hqXZU_$4m_)Y!M%uQNZKF5I+9tJT;^W-UM|KIv)Wp)g*XH7Sa)5~w#(;{ z_yP$C1-*|EVXd`@P`vG4~e?=U^Z*8@@h8Rk&<-n1LtRn>r6-kZUp}hUunT5Qe3# zo8xwNuea{H>q@pI(fjJm^kcp`cTtN6{XFy=7eyz+1dJg8G*QqU$5o0w6Ds1Bw|)dk zUszy*!6CrpqI{UQg&qpNo&fAZ;};v&XJKQHeqlDDblIt@n{ycKF61Q_cN}z zF{asac3YADwC;WHdyDnwCSYF?_)>3X;=R7vlGjW+f?takMq=$w{whY%GtDBpyxjUm ztmR@097RJ8e@Mw;>F|p`!F$zVumcKpT%;NXaT$3hTUBIR`wWr#M_9itxj(|Opm!ig zhe2z5eTIHJyFNw&_@dW0VxOv}#)C;MS_H1Un6o~qN*P7w?jjz03HlNZMmii|leeI7 z7+&80sEhB{j!%5?q!U`yZ=x zCdHC#%MnNyla%YST9>Jj6mfIB_O87f0_M1FT`V)sIHTt7MkEy#Oy^nb_H6CK zk_{H|SlH{ec!4a2xE7|zT)tK?zfh(4$#?-RZR$iepKSoTI7F{i1cKM&pg zwZrzurN6G$r{As?Z0aXy_y{%?9zSaAj_WETx{3;85upt&b)ENu zR_g5)tTOv66^Zn=gwo~y;MSfELQ&QR zQSI>G?T)TXKBh1ZbIT^WN;od$AMrW4(H{cur~KYTtXdpbe>5C9x~o>Uo2CmzwXw+brO%_!kpMKek27yrQNN-*vL@?v$OgAPHB0 z4>K4LZ4%3uk9PD&%~3cmbhKp%JWy;1W4{Vza%lXhv^%!&Cw`Sy97P3^z%PP!NvJbe zSZ{=jsz3#`2U2?{c`=Xk+|v(mBv&INo0ymFu_%8MWVVvW#hmfoU7L*r6xJxQUPTGKRPRCTr6Qpx zQvD9P^x9Hc>dH;pwaY?IBUYi?e;?E_h%W>5sE_q;_bTz`=a2YKvL zin@x-DPpq!{-pl2tw7wB+MhrsuI}PdT$lq}<41IN?L@nyj3BwMG9%YjnnYqlAf_mP z0>DL7e??uULo|`jIi%S(#-W>8{FOu_Vnn4BeUjbNB`QY_cfu85{s1Z9DiUxy%to&h9( z_)~QiK6#r&QuOWK{c)KrBwrl7va{%9kHjP537dZLh3?*$nD>PU9OZqSXDCzg_-i|p z7MS(840SPs!e|(iWO<2cuXT|60I9G$4OiilSJ2+>-Cr456rw#Ik(XzO zyy9P-v0jByUM72+V2kXf4UGgSu!wzR7$SPh=z>2^LTP+g!+wPT!_W2ZUn1gMIw z3;TJU*fSK>mSI$gg1Nsc=>BlY-QC*{LUHB@lG+`A_)~tBiC18?mrvjB-IrW4U#xHz zg=~jWj=FiN@Xhu83-}{biOmz#lTZIThaA-z9jdzO!U?{yiaNSrC{e-{;^+a6*j6UM zVHu#W^%2!DK6;SGQ!dFl3Y`P<$s${Q_~OtPZ7Q`QQ3WG19JmPPW=#0@p5$D01pl2ZDm zKbuo=N-!0R_v28+z(_n%4vudp#F~q{SMCt5vJDG8L)b=zOs>+p8-!vDCUfTqQZ)SO zyvo!?`0eHMw*|#tzbK=LCRwSvw{JovGDOjY%A8u0w7|V{(wP3yGk7|-(kCcA{m!R9 z6Xb&v<4rXw;$pw+z-ek9;<{bC?cQrU*Nq|`SDiV48FB#*%>e!FgC2zM&Q7%M6kbIp z0FvcJ+RGmYTYyEGOf;j3hTk!XqUw%a<_HNgH({f_6K?!`fu#z_%(WT+3~)-qsVXi_ zjdK;f((O2?gF-}IhYh*{+=DCz>~9Y*i6+dB?_`Z26xh%^Zyv?t(>X(#*yLP7WZ&>xOnW>OB+zL4Ru))|5QuY(#ClJ>n_JoYSg#5fUG zl?6DUKbryjT69XaCU>LE!qDsK8n2>C-XimX`Xc@1HaOOdzvCVAM2d_?`q=K2k!7%q zZqH5&h)sx`nl8E~Mr7_h&y_ukm66invSl?)YEVGDpndByE5G9T&2j~rg&WY#8i3nVk5Sb+#)^@OauJw;}&C6+HmLmT>-aOy622IXWY#F#E! z+A+{ySJ(8j>tNgrQWfc{lR&u&Bn$UdN`~3+Sk`Kw+N+QPpaywm^er-2K2f`Wa zK&XmE`=IbHD54Ftd+lWqB^*|l+mg?ftSIplc^SKQsOI&`+8FGhU z1_M2HtZBbOC}m;<{gWO%I7NM*{&4jFd1w2h*8vu{c|-+imvni_RF!ABd%dKJrS)7l zRqGN!xcUU`u0li`=veISX1CX{r(w)j(HQ_6c2;69gTFL`c^oc3<*EH5W3CpW>?E(w z^-p__CddQNSi1w>*Y@AvT;Aq06<|9sQSPdmst(4>2F4k>s&z-G5>QuB33HVK31AN) z`LDt_h*T?YyHXf^+5Mfm2$lITKt;KOFoT|E(6h#LNdhM&*Q(riA8kyDzU3mjVzqw> z1vWlar|pvV8sN+fHpmV_M=mh=n@fWqL|8^&%H(Xc1?Y?1en~@9wts zsSDEjjf7N{Sg#Xs738Ug2M>GLry3eWk_~$dspl#hlaNJ)qAP$g&NYqty%gbZ0tiJ6^p#{b$EJWkR8FVa{zkEV^9rKEU$ka@L znx5#L|0Jwl$3KDKUe(_2FJMKr@y<|bV4Ma_rLAxeJff2+mM(+b?xr@p*=N<@w=nQx z5_bTUmRF6v4LcM49y?lG;SpE_yE*gDAlZJ+*A7XXkje(~c8Qi(iZz)&K9z+I5Uf~c}w=IXh+yb{NMW71- zLecNZ=_`$*AVXfuZrAQ3{+o7qzT@IuU12TGEZGb8l-Qqb>Y@}=L9P&Qo>ajkO{ywz zb?1bhdSp=jMXqw?Tmg_wwEj-;(S@rxe&*ir!kyB6m(wCqXChN8Es&J?@|cZ-3rx*<$b#ZsI(Vra@k zQ;#NBAhtD3z0KhKlp5R^V2N&ABSN&RjPia&Ikx2t*XEt1lru}99q-8^&KwfKTwP;+j(4WOzNjwgdR ze+-c3VnMN&U0)f0o7Ux^EslnKa1{0Ek=>2FBK2aDgIU~WlJ1xJOWYf9)Ih+isZZjtn9pqHC25*>!{1?>87_+>3?A7CMm8MwgGSL=KLn(?E z?~!hwX9v*5iWhIFnYMW98u%$@o1{&eOj=)|DM-9I@?_F3w~`jrbhyPr3yGK-TveZD zY*6WG#|91Qop)Z$I5HR^u+82~`U?0~PtDIHE@p+x-D=qXx%YoZ{wL8|HrZYZKdnvq7bu7a~Se-xl* zV|*b{pS^AN#_EglSIA%nnv$ujh~mW;T{N2uFPd1ai`P}kPe>KI`3?$Svu)KmY^c)2 z^t6GsC|8mM1!c@JJvJ>}FvZH^1t+0|Ha=7J1~+652twY*ej1Es=}Q_~?B&;YWHx_m zm1L&@>@cs#3XP64tB>@JR zCu6(PWLhFBXGbqR_-0;kfmmaj9NP4lI=Zx}w9n;PJt;3^Ej+PX##vjSG;0Y8@b{o;!Ju_L;@ux2-TO0(6E~}{ldVZ zLo{s~ru`1@sKn70THu1f*D(8rb`o~yjF=W{T)T&Yc5F+qh!YFawP_4A*!i+A3qhtb z*&AjisZ|mfN>c3Q4uYF3!a10f@t13jgUjK=Yr&KZK3-8)D@n5@zW8n>HS&5WtIyLE z5avtg5$J-(YZ4#tOQ65?Q;O9^+fz5O#w*acR$JkQ zlA3}bYZ&Agm|bD2#SV{M1h424U!2uKzBu)!P*F4)t){F7?y;7kR7UpyYwdNxqk*~8 zvah#S8w_-FF6HXt+E`+bSLd19?WulI#Y}~W32R)G0dS;*H1lT2p`@Z9SaTDl{;qv6 z!e9xBIYh>|92B4LmS{<**%VpKtIW~yhDY1%*b@Ya9 zEaETVqv3P~ATw73JWafm#>Q8Mr&MaPi7FJ@*i4P!!C`OyaKSSpW7Jn!7+j<>qrfPI z&H!B%j)yg2eG?^CnziDJf|(` zInQ}8jKJ0^VuykI4NAd_;Mrso4p9x1hc-F9qBk3yW{6|S>D24H$s+s$%P1_$-r^iC z%HDTNB+!2(vx)wZ)a&AIdy8>GLSZ}apm>>Ue@L`R8!isE2(M^M8XitsW%#l#`yr!R z)v6MnItj9oV24j5Fc! z^C2cWA4t{b=&z9s6&hN2MSGr9G2FexKw_GJf{QMKqH2<*#MG2SRI;ff1uL@k@`wd* zOnNzSr8kR+piIeBgh98ztO85KLOzRevH#;NGST=7@U$R(U;X< zUV()iX4M!^C@I=4lb)th%W^$9tCDbr>%Jq;_vAa)B8t&xNrDRe%y6{Je&LH4bUBYF zrhLS~SEGZ}G>Ai}QYjbOF(mKD&lT80hNw*X-gs_sG^x*D&hcd9n!E<{JM55H#^q3< zbleF)X}L@~no1=(n&umqn4#q$&^YtX=p~2Y5kW1fFd2-BxgILu(KH~QlGq2UZz8(MA1WAUWxXP_3M^nS zzr+ft3=%?$Qm)Fsi`o2)j9?8hTy|?DsUb$LbUZA}(W=&9uxeH0f91G@Y7cizD_xps z>6QnvhBbaq6^P2`Z@y3g4<`fX??Kb?8;nz!&tjs+y2RF^cx5Du2vAJ98c)!~c-gI! z#by{|^&6U?z(Te`)zob<+yJo09?qCndJlxD2Qg?GVmytFY|aq}(O5Jh5N0CJ0Ed%m z{f#K2)ZmfITMj!V=JnWN^2sR5i+eaebp5*`#OoEHpS<)K-W>c5-vb%|5)_R`th}$o z-x|#v)k1=&262#$MZRFsBVVA%e8^Ty#@CZgwl#<=rB%siIL4D9MBsy_!zs)rF~(v6 zl|#ACo46QH*u=S~*X$DGU#-c5{=V9=+QS(B#U)m$l?x+bC|!CaSki~5RxLc75Yz&s zDYvH}agepeWRtD7+G-ce7l79q`ebA1jH8UNsO#5t=Rg&`brS9kn+`|zF zRS7I^aG8Vn9iDC^F3JNU%c-nT`I?F;qnL~@Y+~Fz$5?YBzKi{UyTl$ejX{{+S_4uv zAr2YHYr9Wfyd17AWJ09H!_qbZ%Z$l3?v?<%W&=4Yj?u6O>kOcw-hgZsBZ&QCPEr zv^TjDPUmqD4c826#3P*X>;TZw!D%R&C}G(Z-7;ip8W&Z=*ok6r*)Ssk^j+mr^Ut3L zEGN$6Er%+k6;D)1S6E?%jJtfpO?`j41(q@xsj!g5Odbfv(1&6by2e!0`PgbXIz$d8zm!x_uWpp(jy7rj`1}$*evOI%IpW!^7_q<#{Io4Q1 zX0jnN*&E~n&@|Iz*yd+W!qy(us<{l7R(PM5auW9vd0v-CW_^MOhM_biHOp`8b09P{ zl?_hL1-QZK$WzqIhxjXh#ZCt%q9dxK`!I(zVN1C+?MYx35@$`T5=J^J@AS;{_snO` z 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 Date: Thu, 14 Mar 2024 21:31:43 -0400 Subject: [PATCH 08/58] Add extension support info for web export --- tutorials/export/exporting_for_web.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tutorials/export/exporting_for_web.rst b/tutorials/export/exporting_for_web.rst index e5619c8abd07..b582f80f13e1 100644 --- a/tutorials/export/exporting_for_web.rst +++ b/tutorials/export/exporting_for_web.rst @@ -57,6 +57,8 @@ If a runnable web export template is available, a button appears between the *Stop scene* and *Play edited Scene* buttons in the editor to quickly open the game in the default browser for testing. +If your project uses GDExtension **Extension Support** needs to be enabled. + If you plan to use :ref:`VRAM compression ` make sure that **Vram Texture Compression** is enabled for the targeted platforms (enabling both **For Desktop** and **For Mobile** will result in a bigger, but more From e1e3e4b1577187876f9a85f5c75e5ee5c74325d1 Mon Sep 17 00:00:00 2001 From: Dan Brook Date: Fri, 15 Mar 2024 11:30:48 +0700 Subject: [PATCH 09/58] Change call from empty to is_empty in RNG tutorial The `empty` method was renamed to `is_empty` somewhere between 3.x and 4.x so the code in the tutorial just needed to be brought up to date. This was brought to light by someone in the Godot server on the #beginner-2 channel noticing an error when running that code: https://discord.com/channels/212250894228652034/762480166248513577/1218050947385786438 --- tutorials/math/random_number_generation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/math/random_number_generation.rst b/tutorials/math/random_number_generation.rst index 39efffca52a7..c28b05d1a8bb 100644 --- a/tutorials/math/random_number_generation.rst +++ b/tutorials/math/random_number_generation.rst @@ -422,7 +422,7 @@ ends up empty. When that happens, you reinitialize it to its default value:: func get_fruit(): - if _fruits.empty(): + if _fruits.is_empty(): # Fill the fruits array again and shuffle it. _fruits = _fruits_full.duplicate() _fruits.shuffle() From 77969eb138f23893f1de8301e02af2228ca43d25 Mon Sep 17 00:00:00 2001 From: skyace65 Date: Fri, 15 Mar 2024 22:35:09 -0400 Subject: [PATCH 10/58] Document that hint_color is now source_color --- tutorials/migrating/upgrading_to_godot_4.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/tutorials/migrating/upgrading_to_godot_4.rst b/tutorials/migrating/upgrading_to_godot_4.rst index 8e74b4dc536c..f4930420067e 100644 --- a/tutorials/migrating/upgrading_to_godot_4.rst +++ b/tutorials/migrating/upgrading_to_godot_4.rst @@ -519,6 +519,7 @@ Some notable renames you will need to perform in shaders are: - Texture filter and repeat modes are now set on individual uniforms, rather than the texture files themselves. - ``hint_albedo`` is now ``source_color``. +- ``hint_color`` is now ``source_color``. - :ref:`Built in matrix variables were renamed. ` - Particles shaders no longer use the ``vertex()`` processor function. Instead they use ``start()`` and ``process()``. From 55c8a88dfe2d7499d88bc3a09b9bff7434324bd2 Mon Sep 17 00:00:00 2001 From: Godot Organization Date: Sat, 16 Mar 2024 03:19:36 +0000 Subject: [PATCH 11/58] classref: Sync with current master branch (68ad520) --- classes/class_@gdscript.rst | 22 +- classes/class_@globalscope.rst | 4 +- classes/class_acceptdialog.rst | 8 +- classes/class_array.rst | 8 + classes/class_arraymesh.rst | 2 +- classes/class_audiostream.rst | 2 +- classes/class_audiostreaminteractive.rst | 555 ++++++++ classes/class_audiostreamplayback.rst | 2 +- .../class_audiostreamplaybackinteractive.rst | 74 + classes/class_audiostreamplaybackplaylist.rst | 24 + .../class_audiostreamplaybacksynchronized.rst | 26 + classes/class_audiostreamplaylist.rst | 189 +++ classes/class_audiostreamsynchronized.rst | 153 ++ classes/class_callable.rst | 14 + classes/class_classdb.rst | 108 +- classes/class_color.rst | 2 +- classes/class_crypto.rst | 2 +- classes/class_editorexportplatformweb.rst | 2 +- classes/class_editorsettings.rst | 1240 +++++++++-------- classes/class_engine.rst | 4 +- classes/class_environment.rst | 2 +- classes/class_fileaccess.rst | 2 +- classes/class_fontfile.rst | 23 +- classes/class_gltfbufferview.rst | 43 +- classes/class_gltfmesh.rst | 2 +- classes/class_gltftexture.rst | 2 +- classes/class_hashingcontext.rst | 6 +- classes/class_image.rst | 2 +- classes/class_importermesh.rst | 2 +- classes/class_input.rst | 2 +- classes/class_inputeventscreendrag.rst | 2 +- classes/class_inputeventscreentouch.rst | 2 +- classes/class_multiplayerapi.rst | 2 +- classes/class_nativemenu.rst | 176 ++- ...ass_navigationmeshsourcegeometrydata2d.rst | 70 + ...ass_navigationmeshsourcegeometrydata3d.rst | 118 +- classes/class_navigationobstacle2d.rst | 74 +- classes/class_navigationobstacle3d.rst | 82 +- classes/class_object.rst | 16 + .../class_openxrextensionwrapperextension.rst | 40 +- classes/class_popupmenu.rst | 19 + classes/class_projectsettings.rst | 16 +- classes/class_raycast2d.rst | 6 +- classes/class_raycast3d.rst | 6 +- classes/class_renderingserver.rst | 2 +- classes/class_resourceimporterdynamicfont.rst | 14 + classes/class_resourceimportermp3.rst | 4 +- classes/class_resourceimporteroggvorbis.rst | 2 +- classes/class_scriptextension.rst | 156 ++- classes/class_surfacetool.rst | 2 +- classes/class_systemfont.rst | 19 + classes/class_textserver.rst | 68 +- classes/class_textserverextension.rst | 912 ++++++------ classes/class_time.rst | 4 +- classes/class_viewport.rst | 2 +- classes/class_xmlparser.rst | 2 +- classes/index.rst | 6 + 57 files changed, 3017 insertions(+), 1332 deletions(-) create mode 100644 classes/class_audiostreaminteractive.rst create mode 100644 classes/class_audiostreamplaybackinteractive.rst create mode 100644 classes/class_audiostreamplaybackplaylist.rst create mode 100644 classes/class_audiostreamplaybacksynchronized.rst create mode 100644 classes/class_audiostreamplaylist.rst create mode 100644 classes/class_audiostreamsynchronized.rst diff --git a/classes/class_@gdscript.rst b/classes/class_@gdscript.rst index 041f71a42a51..6d91468feb51 100644 --- a/classes/class_@gdscript.rst +++ b/classes/class_@gdscript.rst @@ -788,6 +788,10 @@ The order of ``mode``, ``sync`` and ``transfer_mode`` does not matter, but value Make a script with static variables to not persist after all references are lost. If the script is loaded again the static variables will revert to their default values. +\ **Note:** As annotations describe their subject, the :ref:`@static_unload` annotation must be placed before the class definition and inheritance. + +\ **Warning:** Currently, due to a bug, scripts are never freed, even if :ref:`@static_unload` annotation is used. + .. rst-class:: classref-item-separator ---- @@ -877,6 +881,8 @@ An optional ``message`` can be shown in addition to the generic "Assertion faile assert(speed >= 0 and speed < 20) # You can also combine the two conditional statements in one check. assert(speed < 20, "the speed limit is 20") # Show a message. +\ **Note:** :ref:`assert` is a keyword, not a function. So you cannot access it as a :ref:`Callable` or use it inside expressions. + .. rst-class:: classref-item-separator ---- @@ -955,7 +961,7 @@ Returns an array of dictionaries representing the current call stack. See also : Starting from ``_ready()``, ``bar()`` would print: -.. code:: +.. code:: text [{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}] @@ -987,7 +993,7 @@ Returns the passed ``instance`` converted to a Dictionary. Can be useful for ser Prints out: -.. code:: +.. code:: text [@subpath, @path, foo] [, res://test.gd, bar] @@ -1010,7 +1016,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) and is more performant. 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 dynamic type checking. Examples: @@ -1091,6 +1097,8 @@ Returns a :ref:`Resource` from the filesystem located at ``path` # Create instance of a scene. var diamond = preload("res://diamond.tscn").instantiate() +\ **Note:** :ref:`preload` is a keyword, not a function. So you cannot access it as a :ref:`Callable`. + .. rst-class:: classref-item-separator ---- @@ -1105,7 +1113,7 @@ Like :ref:`@GlobalScope.print`, but includes th The output in the console may look like the following: -.. code:: +.. code:: text Test print At: res://test.gd:15:_process() @@ -1126,7 +1134,7 @@ Prints a stack trace at the current code location. See also :ref:`get_stack` backwards, use: Output: -.. code:: +.. code:: text 9 6 @@ -1190,7 +1198,7 @@ To iterate over :ref:`float`, convert them in the loop. Output: -.. code:: +.. code:: text 0.3 0.2 diff --git a/classes/class_@globalscope.rst b/classes/class_@globalscope.rst index 4dded3653af7..282efd7fde76 100644 --- a/classes/class_@globalscope.rst +++ b/classes/class_@globalscope.rst @@ -6849,7 +6849,7 @@ For complex use cases where multiple ranges are needed, consider using :ref:`Cur :ref:`int` **rid_allocate_id**\ (\ ) -Allocates a unique ID which can be used by the implementation to construct a RID. This is used mainly from native extensions to implement servers. +Allocates a unique ID which can be used by the implementation to construct an RID. This is used mainly from native extensions to implement servers. .. rst-class:: classref-item-separator @@ -6861,7 +6861,7 @@ Allocates a unique ID which can be used by the implementation to construct a RID :ref:`RID` **rid_from_int64**\ (\ base\: :ref:`int`\ ) -Creates a RID from a ``base``. This is used mainly from native extensions to build servers. +Creates an RID from a ``base``. This is used mainly from native extensions to build servers. .. rst-class:: classref-item-separator diff --git a/classes/class_acceptdialog.rst b/classes/class_acceptdialog.rst index a3c3bf190afa..98cde8d74467 100644 --- a/classes/class_acceptdialog.rst +++ b/classes/class_acceptdialog.rst @@ -72,9 +72,9 @@ Methods +-----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Button` | :ref:`get_ok_button`\ (\ ) | +-----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`register_text_enter`\ (\ line_edit\: :ref:`Control`\ ) | + | |void| | :ref:`register_text_enter`\ (\ line_edit\: :ref:`LineEdit`\ ) | +-----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`remove_button`\ (\ button\: :ref:`Control`\ ) | + | |void| | :ref:`remove_button`\ (\ button\: :ref:`Button`\ ) | +-----------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -295,7 +295,7 @@ Returns the OK :ref:`Button` instance. .. rst-class:: classref-method -|void| **register_text_enter**\ (\ line_edit\: :ref:`Control`\ ) +|void| **register_text_enter**\ (\ line_edit\: :ref:`LineEdit`\ ) Registers a :ref:`LineEdit` in the dialog. When the enter key is pressed, the dialog will be accepted. @@ -307,7 +307,7 @@ Registers a :ref:`LineEdit` in the dialog. When the enter key is .. rst-class:: classref-method -|void| **remove_button**\ (\ button\: :ref:`Control`\ ) +|void| **remove_button**\ (\ button\: :ref:`Button`\ ) Removes the ``button`` from the dialog. Does NOT free the ``button``. The ``button`` must be a :ref:`Button` added with :ref:`add_button` or :ref:`add_cancel_button` method. After removal, pressing the ``button`` will no longer emit this dialog's :ref:`custom_action` or :ref:`canceled` signals. diff --git a/classes/class_array.rst b/classes/class_array.rst index 842fc9eec209..d907755b91a1 100644 --- a/classes/class_array.rst +++ b/classes/class_array.rst @@ -501,6 +501,12 @@ Returns the last element of the array. Prints an error and returns ``null`` if t Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search. Optionally, a ``before`` specifier can be passed. If ``false``, the returned index comes after all existing entries of the value in the array. +:: + + var array = ["a", "b", "c", "c", "d", "e"] + print(array.bsearch("c", true)) # Prints 2, at the first matching element. + print(array.bsearch("c", false)) # Prints 4, after the last matching element, pointing to "d". + \ **Note:** Calling :ref:`bsearch` on an unsorted array results in unexpected behavior. .. rst-class:: classref-item-separator @@ -515,6 +521,8 @@ Finds the index of an existing value (or the insertion index that maintains sort Finds the index of an existing value (or the insertion index that maintains sorting order, if the value is not yet present in the array) using binary search and a custom comparison method. Optionally, a ``before`` specifier can be passed. If ``false``, the returned index comes after all existing entries of the value in the array. The custom method receives two arguments (an element from the array and the value searched for) and must return ``true`` if the first argument is less than the second, and return ``false`` otherwise. +\ **Note:** The custom method must accept the two arguments in any order, you cannot rely on that the first argument will always be from the array. + \ **Note:** Calling :ref:`bsearch_custom` on an unsorted array results in unexpected behavior. .. rst-class:: classref-item-separator diff --git a/classes/class_arraymesh.rst b/classes/class_arraymesh.rst index e79c0a38efc5..b8905fb4bdc3 100644 --- a/classes/class_arraymesh.rst +++ b/classes/class_arraymesh.rst @@ -234,7 +234,7 @@ The ``arrays`` argument is an array of arrays. Each of the :ref:`Mesh.ARRAY_MAX< The ``blend_shapes`` argument is an array of vertex data for each blend shape. Each element is an array of the same structure as ``arrays``, but :ref:`Mesh.ARRAY_VERTEX`, :ref:`Mesh.ARRAY_NORMAL`, and :ref:`Mesh.ARRAY_TANGENT` are set if and only if they are set in ``arrays`` and all other entries are ``null``. -The ``lods`` argument is a dictionary with :ref:`float` keys and :ref:`PackedInt32Array` values. Each entry in the dictionary represents a LOD level of the surface, where the value is the :ref:`Mesh.ARRAY_INDEX` array to use for the LOD level and the key is roughly proportional to the distance at which the LOD stats being used. I.e., increasing the key of a LOD also increases the distance that the objects has to be from the camera before the LOD is used. +The ``lods`` argument is a dictionary with :ref:`float` keys and :ref:`PackedInt32Array` values. Each entry in the dictionary represents an LOD level of the surface, where the value is the :ref:`Mesh.ARRAY_INDEX` array to use for the LOD level and the key is roughly proportional to the distance at which the LOD stats being used. I.e., increasing the key of an LOD also increases the distance that the objects has to be from the camera before the LOD is used. The ``flags`` argument is the bitwise or of, as required: One value of :ref:`ArrayCustomFormat` left shifted by ``ARRAY_FORMAT_CUSTOMn_SHIFT`` for each custom channel in use, :ref:`Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE`, :ref:`Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS`, or :ref:`Mesh.ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY`. diff --git a/classes/class_audiostream.rst b/classes/class_audiostream.rst index 5f2ed4b47c6e..3a3bf0495a66 100644 --- a/classes/class_audiostream.rst +++ b/classes/class_audiostream.rst @@ -12,7 +12,7 @@ AudioStream **Inherits:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` -**Inherited By:** :ref:`AudioStreamGenerator`, :ref:`AudioStreamMicrophone`, :ref:`AudioStreamMP3`, :ref:`AudioStreamOggVorbis`, :ref:`AudioStreamPolyphonic`, :ref:`AudioStreamRandomizer`, :ref:`AudioStreamWAV` +**Inherited By:** :ref:`AudioStreamGenerator`, :ref:`AudioStreamInteractive`, :ref:`AudioStreamMicrophone`, :ref:`AudioStreamMP3`, :ref:`AudioStreamOggVorbis`, :ref:`AudioStreamPlaylist`, :ref:`AudioStreamPolyphonic`, :ref:`AudioStreamRandomizer`, :ref:`AudioStreamSynchronized`, :ref:`AudioStreamWAV` Base class for audio streams. diff --git a/classes/class_audiostreaminteractive.rst b/classes/class_audiostreaminteractive.rst new file mode 100644 index 000000000000..a96c8b7f7194 --- /dev/null +++ b/classes/class_audiostreaminteractive.rst @@ -0,0 +1,555 @@ +: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/interactive_music/doc_classes/AudioStreamInteractive.xml. + +.. _class_AudioStreamInteractive: + +AudioStreamInteractive +====================== + +**Inherits:** :ref:`AudioStream` **<** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` + +Audio stream that can playback music interactively, combining clips and a transition table. + +.. rst-class:: classref-introduction-group + +Description +----------- + +This is an audio stream that can playback music interactively, combining clips and a transition table. Clips must be added first, and the transition rules via the :ref:`add_transition`. Additionally, this stream export a property parameter to control the playback via :ref:`AudioStreamPlayer`, :ref:`AudioStreamPlayer2D`, or :ref:`AudioStreamPlayer3D`. + +The way this is used is by filling a number of clips, then configuring the transition table. From there, clips are selected for playback and the music will smoothly go from the current to the new one while using the corresponding transition rule defined in the transition table. + +.. rst-class:: classref-reftable-group + +Properties +---------- + +.. table:: + :widths: auto + + +-----------------------+-------------------------------------------------------------------------+-------+ + | :ref:`int` | :ref:`clip_count` | ``0`` | + +-----------------------+-------------------------------------------------------------------------+-------+ + | :ref:`int` | :ref:`initial_clip` | ``0`` | + +-----------------------+-------------------------------------------------------------------------+-------+ + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_transition`\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`, from_time\: :ref:`TransitionFromTime`, to_time\: :ref:`TransitionToTime`, fade_mode\: :ref:`FadeMode`, fade_beats\: :ref:`float`, use_filler_clip\: :ref:`bool` = false, filler_clip\: :ref:`int` = -1, hold_previous\: :ref:`bool` = false\ ) | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`erase_transition`\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`AutoAdvanceMode` | :ref:`get_clip_auto_advance`\ (\ clip_index\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_clip_auto_advance_next_clip`\ (\ clip_index\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`StringName` | :ref:`get_clip_name`\ (\ clip_index\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`AudioStream` | :ref:`get_clip_stream`\ (\ clip_index\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_transition_fade_beats`\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`FadeMode` | :ref:`get_transition_fade_mode`\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_transition_filler_clip`\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TransitionFromTime` | :ref:`get_transition_from_time`\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`get_transition_list`\ (\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`TransitionToTime` | :ref:`get_transition_to_time`\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_transition`\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_transition_holding_previous`\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_transition_using_filler_clip`\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_clip_auto_advance`\ (\ clip_index\: :ref:`int`, mode\: :ref:`AutoAdvanceMode`\ ) | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_clip_auto_advance_next_clip`\ (\ clip_index\: :ref:`int`, auto_advance_next_clip\: :ref:`int`\ ) | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_clip_name`\ (\ clip_index\: :ref:`int`, name\: :ref:`StringName`\ ) | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_clip_stream`\ (\ clip_index\: :ref:`int`, stream\: :ref:`AudioStream`\ ) | + +---------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Enumerations +------------ + +.. _enum_AudioStreamInteractive_TransitionFromTime: + +.. rst-class:: classref-enumeration + +enum **TransitionFromTime**: + +.. _class_AudioStreamInteractive_constant_TRANSITION_FROM_TIME_IMMEDIATE: + +.. rst-class:: classref-enumeration-constant + +:ref:`TransitionFromTime` **TRANSITION_FROM_TIME_IMMEDIATE** = ``0`` + +Start transition as soon as possible, don't wait for any specific time position. + +.. _class_AudioStreamInteractive_constant_TRANSITION_FROM_TIME_NEXT_BEAT: + +.. rst-class:: classref-enumeration-constant + +:ref:`TransitionFromTime` **TRANSITION_FROM_TIME_NEXT_BEAT** = ``1`` + +Transition when the clip playback position reaches the next beat. + +.. _class_AudioStreamInteractive_constant_TRANSITION_FROM_TIME_NEXT_BAR: + +.. rst-class:: classref-enumeration-constant + +:ref:`TransitionFromTime` **TRANSITION_FROM_TIME_NEXT_BAR** = ``2`` + +Transition when the clip playback position reaches the next bar. + +.. _class_AudioStreamInteractive_constant_TRANSITION_FROM_TIME_END: + +.. rst-class:: classref-enumeration-constant + +:ref:`TransitionFromTime` **TRANSITION_FROM_TIME_END** = ``3`` + +Transition when the current clip finished playing. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_AudioStreamInteractive_TransitionToTime: + +.. rst-class:: classref-enumeration + +enum **TransitionToTime**: + +.. _class_AudioStreamInteractive_constant_TRANSITION_TO_TIME_SAME_POSITION: + +.. rst-class:: classref-enumeration-constant + +:ref:`TransitionToTime` **TRANSITION_TO_TIME_SAME_POSITION** = ``0`` + +Transition to the same position in the destination clip. This is useful when both clips have exactly the same length and the music should fade between them. + +.. _class_AudioStreamInteractive_constant_TRANSITION_TO_TIME_START: + +.. rst-class:: classref-enumeration-constant + +:ref:`TransitionToTime` **TRANSITION_TO_TIME_START** = ``1`` + +Transition to the start of the destination clip. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_AudioStreamInteractive_FadeMode: + +.. rst-class:: classref-enumeration + +enum **FadeMode**: + +.. _class_AudioStreamInteractive_constant_FADE_DISABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`FadeMode` **FADE_DISABLED** = ``0`` + +Do not use fade for the transition. This is useful when transitioning from a clip-end to clip-beginning, and each clip has their begin/end. + +.. _class_AudioStreamInteractive_constant_FADE_IN: + +.. rst-class:: classref-enumeration-constant + +:ref:`FadeMode` **FADE_IN** = ``1`` + +Use a fade-in in the next clip, let the current clip finish. + +.. _class_AudioStreamInteractive_constant_FADE_OUT: + +.. rst-class:: classref-enumeration-constant + +:ref:`FadeMode` **FADE_OUT** = ``2`` + +Use a fade-out in the current clip, the next clip will start by itself. + +.. _class_AudioStreamInteractive_constant_FADE_CROSS: + +.. rst-class:: classref-enumeration-constant + +:ref:`FadeMode` **FADE_CROSS** = ``3`` + +Use a cross-fade between clips. + +.. _class_AudioStreamInteractive_constant_FADE_AUTOMATIC: + +.. rst-class:: classref-enumeration-constant + +:ref:`FadeMode` **FADE_AUTOMATIC** = ``4`` + +Use automatic fade logic depending on the transition from/to. It is recommended to use this by default. + +.. rst-class:: classref-item-separator + +---- + +.. _enum_AudioStreamInteractive_AutoAdvanceMode: + +.. rst-class:: classref-enumeration + +enum **AutoAdvanceMode**: + +.. _class_AudioStreamInteractive_constant_AUTO_ADVANCE_DISABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`AutoAdvanceMode` **AUTO_ADVANCE_DISABLED** = ``0`` + +Disable auto-advance (default). + +.. _class_AudioStreamInteractive_constant_AUTO_ADVANCE_ENABLED: + +.. rst-class:: classref-enumeration-constant + +:ref:`AutoAdvanceMode` **AUTO_ADVANCE_ENABLED** = ``1`` + +Enable auto-advance, a clip must be specified. + +.. _class_AudioStreamInteractive_constant_AUTO_ADVANCE_RETURN_TO_HOLD: + +.. rst-class:: classref-enumeration-constant + +:ref:`AutoAdvanceMode` **AUTO_ADVANCE_RETURN_TO_HOLD** = ``2`` + +Enable auto-advance, but instead of specifying a clip, the playback will return to hold (see :ref:`add_transition`). + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Constants +--------- + +.. _class_AudioStreamInteractive_constant_CLIP_ANY: + +.. rst-class:: classref-constant + +**CLIP_ANY** = ``-1`` + +This constant describes that any clip is valid for a specific transition as either source or destination. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Property Descriptions +--------------------- + +.. _class_AudioStreamInteractive_property_clip_count: + +.. rst-class:: classref-property + +:ref:`int` **clip_count** = ``0`` + +.. rst-class:: classref-property-setget + +- |void| **set_clip_count**\ (\ value\: :ref:`int`\ ) +- :ref:`int` **get_clip_count**\ (\ ) + +Amount of clips contained in this interactive player. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_property_initial_clip: + +.. rst-class:: classref-property + +:ref:`int` **initial_clip** = ``0`` + +.. rst-class:: classref-property-setget + +- |void| **set_initial_clip**\ (\ value\: :ref:`int`\ ) +- :ref:`int` **get_initial_clip**\ (\ ) + +Index of the initial clip, which will be played first when this stream is played. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_AudioStreamInteractive_method_add_transition: + +.. rst-class:: classref-method + +|void| **add_transition**\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`, from_time\: :ref:`TransitionFromTime`, to_time\: :ref:`TransitionToTime`, fade_mode\: :ref:`FadeMode`, fade_beats\: :ref:`float`, use_filler_clip\: :ref:`bool` = false, filler_clip\: :ref:`int` = -1, hold_previous\: :ref:`bool` = false\ ) + +Add a transition between two clips. Provide the indices of the source and destination clips, or use the :ref:`CLIP_ANY` constant to indicate that transition happens to/from any clip to this one. + +\* ``from_time`` indicates the moment in the current clip the transition will begin after triggered. + +\* ``to_time`` indicates the time in the next clip that the playback will start from. + +\* ``fade_mode`` indicates how the fade will happen between clips. If unsure, just use :ref:`FADE_AUTOMATIC` which uses the most common type of fade for each situation. + +\* ``fade_beats`` indicates how many beats the fade will take. Using decimals is allowed. + +\* ``use_filler_clip`` indicates that there will be a filler clip used between the source and destination clips. + +\* ``filler_clip`` the index of the filler clip. + +\* If ``hold_previous`` is used, then this clip will be remembered. This can be used together with :ref:`AUTO_ADVANCE_RETURN_TO_HOLD` to return to this clip after another is done playing. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_erase_transition: + +.. rst-class:: classref-method + +|void| **erase_transition**\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) + +Erase a transition by providing ``from_clip`` and ``to_clip`` clip indices. :ref:`CLIP_ANY` can be used for either argument or both. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_get_clip_auto_advance: + +.. rst-class:: classref-method + +:ref:`AutoAdvanceMode` **get_clip_auto_advance**\ (\ clip_index\: :ref:`int`\ ) |const| + +Return whether a clip has auto-advance enabled. See :ref:`set_clip_auto_advance`. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_get_clip_auto_advance_next_clip: + +.. rst-class:: classref-method + +:ref:`int` **get_clip_auto_advance_next_clip**\ (\ clip_index\: :ref:`int`\ ) |const| + +Return the clip towards which the clip referenced by ``clip_index`` will auto-advance to. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_get_clip_name: + +.. rst-class:: classref-method + +:ref:`StringName` **get_clip_name**\ (\ clip_index\: :ref:`int`\ ) |const| + +Return the name of a clip. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_get_clip_stream: + +.. rst-class:: classref-method + +:ref:`AudioStream` **get_clip_stream**\ (\ clip_index\: :ref:`int`\ ) |const| + +Return the :ref:`AudioStream` associated with a clip. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_get_transition_fade_beats: + +.. rst-class:: classref-method + +:ref:`float` **get_transition_fade_beats**\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| + +Return the time (in beats) for a transition (see :ref:`add_transition`). + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_get_transition_fade_mode: + +.. rst-class:: classref-method + +:ref:`FadeMode` **get_transition_fade_mode**\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| + +Return the mode for a transition (see :ref:`add_transition`). + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_get_transition_filler_clip: + +.. rst-class:: classref-method + +:ref:`int` **get_transition_filler_clip**\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| + +Return the filler clip for a transition (see :ref:`add_transition`). + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_get_transition_from_time: + +.. rst-class:: classref-method + +:ref:`TransitionFromTime` **get_transition_from_time**\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| + +Return the source time position for a transition (see :ref:`add_transition`). + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_get_transition_list: + +.. rst-class:: classref-method + +:ref:`PackedInt32Array` **get_transition_list**\ (\ ) |const| + +Return the list of transitions (from, to interleaved). + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_get_transition_to_time: + +.. rst-class:: classref-method + +:ref:`TransitionToTime` **get_transition_to_time**\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| + +Return the destination time position for a transition (see :ref:`add_transition`). + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_has_transition: + +.. rst-class:: classref-method + +:ref:`bool` **has_transition**\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| + +Return true if a given transition exists (was added via :ref:`add_transition`). + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_is_transition_holding_previous: + +.. rst-class:: classref-method + +:ref:`bool` **is_transition_holding_previous**\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| + +Return whether a transition uses the *hold previous* functionality (see :ref:`add_transition`). + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_is_transition_using_filler_clip: + +.. rst-class:: classref-method + +:ref:`bool` **is_transition_using_filler_clip**\ (\ from_clip\: :ref:`int`, to_clip\: :ref:`int`\ ) |const| + +Return whether a transition uses the *filler clip* functionality (see :ref:`add_transition`). + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_set_clip_auto_advance: + +.. rst-class:: classref-method + +|void| **set_clip_auto_advance**\ (\ clip_index\: :ref:`int`, mode\: :ref:`AutoAdvanceMode`\ ) + +Set whether a clip will auto-advance by changing the auto-advance mode. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_set_clip_auto_advance_next_clip: + +.. rst-class:: classref-method + +|void| **set_clip_auto_advance_next_clip**\ (\ clip_index\: :ref:`int`, auto_advance_next_clip\: :ref:`int`\ ) + +Set the index of the next clip towards which this clip will auto advance to when finished. If the clip being played loops, then auto-advance will be ignored. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_set_clip_name: + +.. rst-class:: classref-method + +|void| **set_clip_name**\ (\ clip_index\: :ref:`int`, name\: :ref:`StringName`\ ) + +Set the name of the current clip (for easier identification). + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamInteractive_method_set_clip_stream: + +.. rst-class:: classref-method + +|void| **set_clip_stream**\ (\ clip_index\: :ref:`int`, stream\: :ref:`AudioStream`\ ) + +Set the :ref:`AudioStream` associated with the current clip. + +.. |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_audiostreamplayback.rst b/classes/class_audiostreamplayback.rst index ebde6a874bd1..95e9be4a9068 100644 --- a/classes/class_audiostreamplayback.rst +++ b/classes/class_audiostreamplayback.rst @@ -12,7 +12,7 @@ AudioStreamPlayback **Inherits:** :ref:`RefCounted` **<** :ref:`Object` -**Inherited By:** :ref:`AudioStreamPlaybackPolyphonic`, :ref:`AudioStreamPlaybackResampled` +**Inherited By:** :ref:`AudioStreamPlaybackInteractive`, :ref:`AudioStreamPlaybackPlaylist`, :ref:`AudioStreamPlaybackPolyphonic`, :ref:`AudioStreamPlaybackResampled`, :ref:`AudioStreamPlaybackSynchronized` Meta class for playing back audio. diff --git a/classes/class_audiostreamplaybackinteractive.rst b/classes/class_audiostreamplaybackinteractive.rst new file mode 100644 index 000000000000..52af6b0269d1 --- /dev/null +++ b/classes/class_audiostreamplaybackinteractive.rst @@ -0,0 +1,74 @@ +: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/interactive_music/doc_classes/AudioStreamPlaybackInteractive.xml. + +.. _class_AudioStreamPlaybackInteractive: + +AudioStreamPlaybackInteractive +============================== + +**Inherits:** :ref:`AudioStreamPlayback` **<** :ref:`RefCounted` **<** :ref:`Object` + +Playback component of :ref:`AudioStreamInteractive`. + +.. rst-class:: classref-introduction-group + +Description +----------- + +Playback component of :ref:`AudioStreamInteractive`. Contains functions to change the currently played clip. + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`switch_to_clip`\ (\ clip_index\: :ref:`int`\ ) | + +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`switch_to_clip_by_name`\ (\ clip_name\: :ref:`StringName`\ ) | + +--------+----------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_AudioStreamPlaybackInteractive_method_switch_to_clip: + +.. rst-class:: classref-method + +|void| **switch_to_clip**\ (\ clip_index\: :ref:`int`\ ) + +Switch to a clip (by index). + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamPlaybackInteractive_method_switch_to_clip_by_name: + +.. rst-class:: classref-method + +|void| **switch_to_clip_by_name**\ (\ clip_name\: :ref:`StringName`\ ) + +Switch to a clip (by name). + +.. |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_audiostreamplaybackplaylist.rst b/classes/class_audiostreamplaybackplaylist.rst new file mode 100644 index 000000000000..6c5a3c836fda --- /dev/null +++ b/classes/class_audiostreamplaybackplaylist.rst @@ -0,0 +1,24 @@ +: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/interactive_music/doc_classes/AudioStreamPlaybackPlaylist.xml. + +.. _class_AudioStreamPlaybackPlaylist: + +AudioStreamPlaybackPlaylist +=========================== + +**Inherits:** :ref:`AudioStreamPlayback` **<** :ref:`RefCounted` **<** :ref:`Object` + +Playback class used for :ref:`AudioStreamPlaylist`. + +.. |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_audiostreamplaybacksynchronized.rst b/classes/class_audiostreamplaybacksynchronized.rst new file mode 100644 index 000000000000..d0703335a77c --- /dev/null +++ b/classes/class_audiostreamplaybacksynchronized.rst @@ -0,0 +1,26 @@ +: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/interactive_music/doc_classes/AudioStreamPlaybackSynchronized.xml. + +.. _class_AudioStreamPlaybackSynchronized: + +AudioStreamPlaybackSynchronized +=============================== + +**Inherits:** :ref:`AudioStreamPlayback` **<** :ref:`RefCounted` **<** :ref:`Object` + +.. container:: contribute + + There is currently no description for this class. 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.)` +.. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` +.. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` +.. |operator| replace:: :abbr:`operator (This method describes a valid operator to use 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_audiostreamplaylist.rst b/classes/class_audiostreamplaylist.rst new file mode 100644 index 000000000000..a303dec5469e --- /dev/null +++ b/classes/class_audiostreamplaylist.rst @@ -0,0 +1,189 @@ +: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/interactive_music/doc_classes/AudioStreamPlaylist.xml. + +.. _class_AudioStreamPlaylist: + +AudioStreamPlaylist +=================== + +**Inherits:** :ref:`AudioStream` **<** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` + +:ref:`AudioStream` that includes sub-streams and plays them back like a playslit. + +.. rst-class:: classref-reftable-group + +Properties +---------- + +.. table:: + :widths: auto + + +---------------------------+----------------------------------------------------------------------+-----------+ + | :ref:`float` | :ref:`fade_time` | ``0.3`` | + +---------------------------+----------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`loop` | ``true`` | + +---------------------------+----------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`shuffle` | ``false`` | + +---------------------------+----------------------------------------------------------------------+-----------+ + | :ref:`int` | :ref:`stream_count` | ``0`` | + +---------------------------+----------------------------------------------------------------------+-----------+ + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_bpm`\ (\ ) |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`AudioStream` | :ref:`get_list_stream`\ (\ stream_index\: :ref:`int`\ ) |const| | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_list_stream`\ (\ stream_index\: :ref:`int`, audio_stream\: :ref:`AudioStream`\ ) | + +---------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Constants +--------- + +.. _class_AudioStreamPlaylist_constant_MAX_STREAMS: + +.. rst-class:: classref-constant + +**MAX_STREAMS** = ``64`` + +Maximum amount of streams supported in the playlist. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Property Descriptions +--------------------- + +.. _class_AudioStreamPlaylist_property_fade_time: + +.. rst-class:: classref-property + +:ref:`float` **fade_time** = ``0.3`` + +.. rst-class:: classref-property-setget + +- |void| **set_fade_time**\ (\ value\: :ref:`float`\ ) +- :ref:`float` **get_fade_time**\ (\ ) + +Fade time used when a stream ends, when going to the next one. Streams are expected to have an extra bit of audio after the end to help with fading. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamPlaylist_property_loop: + +.. rst-class:: classref-property + +:ref:`bool` **loop** = ``true`` + +.. rst-class:: classref-property-setget + +- |void| **set_loop**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **has_loop**\ (\ ) + +If true, the playlist will loop, otherwise the playlist when end when the last stream is played. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamPlaylist_property_shuffle: + +.. rst-class:: classref-property + +:ref:`bool` **shuffle** = ``false`` + +.. rst-class:: classref-property-setget + +- |void| **set_shuffle**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **get_shuffle**\ (\ ) + +Shuffle the playlist. Streams are played in random order. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamPlaylist_property_stream_count: + +.. rst-class:: classref-property + +:ref:`int` **stream_count** = ``0`` + +.. rst-class:: classref-property-setget + +- |void| **set_stream_count**\ (\ value\: :ref:`int`\ ) +- :ref:`int` **get_stream_count**\ (\ ) + +Amount of streams in the playlist. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_AudioStreamPlaylist_method_get_bpm: + +.. rst-class:: classref-method + +:ref:`float` **get_bpm**\ (\ ) |const| + +Return the bpm of the playlist, which can vary depending on the clip being played. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamPlaylist_method_get_list_stream: + +.. rst-class:: classref-method + +:ref:`AudioStream` **get_list_stream**\ (\ stream_index\: :ref:`int`\ ) |const| + +Get the stream at playback position index. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamPlaylist_method_set_list_stream: + +.. rst-class:: classref-method + +|void| **set_list_stream**\ (\ stream_index\: :ref:`int`, audio_stream\: :ref:`AudioStream`\ ) + +Set the stream at playback position index. + +.. |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_audiostreamsynchronized.rst b/classes/class_audiostreamsynchronized.rst new file mode 100644 index 000000000000..40018eb9d554 --- /dev/null +++ b/classes/class_audiostreamsynchronized.rst @@ -0,0 +1,153 @@ +: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/interactive_music/doc_classes/AudioStreamSynchronized.xml. + +.. _class_AudioStreamSynchronized: + +AudioStreamSynchronized +======================= + +**Inherits:** :ref:`AudioStream` **<** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` + +Stream that can be fitted with sub-streams, which will be played in-sync. + +.. rst-class:: classref-introduction-group + +Description +----------- + +This is a stream that can be fitted with sub-streams, which will be played in-sync. The streams being at exactly the same time when play is pressed, and will end when the last of them ends. If one of the sub-streams loops, then playback will continue. + +.. rst-class:: classref-reftable-group + +Properties +---------- + +.. table:: + :widths: auto + + +-----------------------+--------------------------------------------------------------------------+-------+ + | :ref:`int` | :ref:`stream_count` | ``0`` | + +-----------------------+--------------------------------------------------------------------------+-------+ + +.. rst-class:: classref-reftable-group + +Methods +------- + +.. table:: + :widths: auto + + +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`AudioStream` | :ref:`get_sync_stream`\ (\ stream_index\: :ref:`int`\ ) |const| | + +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`get_sync_stream_volume`\ (\ stream_index\: :ref:`int`\ ) |const| | + +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_sync_stream`\ (\ stream_index\: :ref:`int`, audio_stream\: :ref:`AudioStream`\ ) | + +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_sync_stream_volume`\ (\ stream_index\: :ref:`int`, volume_db\: :ref:`float`\ ) | + +---------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Constants +--------- + +.. _class_AudioStreamSynchronized_constant_MAX_STREAMS: + +.. rst-class:: classref-constant + +**MAX_STREAMS** = ``32`` + +Maximum amount of streams that can be synchrohized. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Property Descriptions +--------------------- + +.. _class_AudioStreamSynchronized_property_stream_count: + +.. rst-class:: classref-property + +:ref:`int` **stream_count** = ``0`` + +.. rst-class:: classref-property-setget + +- |void| **set_stream_count**\ (\ value\: :ref:`int`\ ) +- :ref:`int` **get_stream_count**\ (\ ) + +Set the total amount of streams that will be played back synchronized. + +.. rst-class:: classref-section-separator + +---- + +.. rst-class:: classref-descriptions-group + +Method Descriptions +------------------- + +.. _class_AudioStreamSynchronized_method_get_sync_stream: + +.. rst-class:: classref-method + +:ref:`AudioStream` **get_sync_stream**\ (\ stream_index\: :ref:`int`\ ) |const| + +Get one of the synchronized streams, by index. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamSynchronized_method_get_sync_stream_volume: + +.. rst-class:: classref-method + +:ref:`float` **get_sync_stream_volume**\ (\ stream_index\: :ref:`int`\ ) |const| + +Get the volume of one of the synchronized streams, by index. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamSynchronized_method_set_sync_stream: + +.. rst-class:: classref-method + +|void| **set_sync_stream**\ (\ stream_index\: :ref:`int`, audio_stream\: :ref:`AudioStream`\ ) + +Set one of the synchronized streams, by index. + +.. rst-class:: classref-item-separator + +---- + +.. _class_AudioStreamSynchronized_method_set_sync_stream_volume: + +.. rst-class:: classref-method + +|void| **set_sync_stream_volume**\ (\ stream_index\: :ref:`int`, volume_db\: :ref:`float`\ ) + +Set the volume of one of the synchronized streams, by index. + +.. |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_callable.rst b/classes/class_callable.rst index 0d26b3e85b91..02b66aabb646 100644 --- a/classes/class_callable.rst +++ b/classes/class_callable.rst @@ -129,6 +129,8 @@ Methods +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Callable` | :ref:`create`\ (\ variant\: :ref:`Variant`, method\: :ref:`StringName`\ ) |static| | +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_argument_count`\ (\ ) |const| | + +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array` | :ref:`get_bound_arguments`\ (\ ) |const| | +-------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`get_bound_arguments_count`\ (\ ) |const| | @@ -317,6 +319,18 @@ Creates a new **Callable** for the method named ``method`` in the specified ``va ---- +.. _class_Callable_method_get_argument_count: + +.. rst-class:: classref-method + +:ref:`int` **get_argument_count**\ (\ ) |const| + +Returns the total number of arguments this **Callable** should take, including optional arguments. This means that any arguments bound with :ref:`bind` are *subtracted* from the result, and any arguments unbound with :ref:`unbind` are *added* to the result. + +.. rst-class:: classref-item-separator + +---- + .. _class_Callable_method_get_bound_arguments: .. rst-class:: classref-method diff --git a/classes/class_classdb.rst b/classes/class_classdb.rst index e0e2ebfdf49e..c86a6dbead39 100644 --- a/classes/class_classdb.rst +++ b/classes/class_classdb.rst @@ -29,53 +29,55 @@ Methods .. table:: :widths: auto - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`can_instantiate`\ (\ class\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`class_exists`\ (\ class\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`class_get_enum_constants`\ (\ class\: :ref:`StringName`, enum\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`class_get_enum_list`\ (\ class\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`class_get_integer_constant`\ (\ class\: :ref:`StringName`, name\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`StringName` | :ref:`class_get_integer_constant_enum`\ (\ class\: :ref:`StringName`, name\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`class_get_integer_constant_list`\ (\ class\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`class_get_method_list`\ (\ class\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`class_get_property`\ (\ object\: :ref:`Object`, property\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`class_get_property_list`\ (\ class\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`class_get_signal`\ (\ class\: :ref:`StringName`, signal\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`class_get_signal_list`\ (\ class\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`class_has_enum`\ (\ class\: :ref:`StringName`, name\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`class_has_integer_constant`\ (\ class\: :ref:`StringName`, name\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`class_has_method`\ (\ class\: :ref:`StringName`, method\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`class_has_signal`\ (\ class\: :ref:`StringName`, signal\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`class_set_property`\ (\ object\: :ref:`Object`, property\: :ref:`StringName`, value\: :ref:`Variant`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`get_class_list`\ (\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`get_inheriters_from_class`\ (\ class\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`StringName` | :ref:`get_parent_class`\ (\ class\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`instantiate`\ (\ class\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_class_enabled`\ (\ class\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`is_parent_class`\ (\ class\: :ref:`StringName`, inherits\: :ref:`StringName`\ ) |const| | - +------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`can_instantiate`\ (\ class\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`class_exists`\ (\ class\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`class_get_enum_constants`\ (\ class\: :ref:`StringName`, enum\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`class_get_enum_list`\ (\ class\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`class_get_integer_constant`\ (\ class\: :ref:`StringName`, name\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`StringName` | :ref:`class_get_integer_constant_enum`\ (\ class\: :ref:`StringName`, name\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`class_get_integer_constant_list`\ (\ class\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`class_get_method_argument_count`\ (\ class\: :ref:`StringName`, method\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`class_get_method_list`\ (\ class\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`class_get_property`\ (\ object\: :ref:`Object`, property\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`class_get_property_list`\ (\ class\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`class_get_signal`\ (\ class\: :ref:`StringName`, signal\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`class_get_signal_list`\ (\ class\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`class_has_enum`\ (\ class\: :ref:`StringName`, name\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`class_has_integer_constant`\ (\ class\: :ref:`StringName`, name\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`class_has_method`\ (\ class\: :ref:`StringName`, method\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`class_has_signal`\ (\ class\: :ref:`StringName`, signal\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`class_set_property`\ (\ object\: :ref:`Object`, property\: :ref:`StringName`, value\: :ref:`Variant`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`get_class_list`\ (\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`get_inheriters_from_class`\ (\ class\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`StringName` | :ref:`get_parent_class`\ (\ class\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`instantiate`\ (\ class\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_class_enabled`\ (\ class\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`is_parent_class`\ (\ class\: :ref:`StringName`, inherits\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -170,6 +172,18 @@ Returns an array with the names all the integer constants of ``class`` or its an ---- +.. _class_ClassDB_method_class_get_method_argument_count: + +.. rst-class:: classref-method + +:ref:`int` **class_get_method_argument_count**\ (\ class\: :ref:`StringName`, method\: :ref:`StringName`, no_inheritance\: :ref:`bool` = false\ ) |const| + +Returns the number of arguments of the method ``method`` of ``class`` or its ancestry if ``no_inheritance`` is ``false``. + +.. rst-class:: classref-item-separator + +---- + .. _class_ClassDB_method_class_get_method_list: .. rst-class:: classref-method diff --git a/classes/class_color.rst b/classes/class_color.rst index ab3fd2977e8a..9398c1b77079 100644 --- a/classes/class_color.rst +++ b/classes/class_color.rst @@ -1757,7 +1757,7 @@ Constructs a color from an `OK HSL profile ` **from_rgbe9995**\ (\ rgbe\: :ref:`int`\ ) |static| -Decodes a **Color** from a RGBE9995 format integer. See :ref:`Image.FORMAT_RGBE9995`. +Decodes a **Color** from an RGBE9995 format integer. See :ref:`Image.FORMAT_RGBE9995`. .. rst-class:: classref-item-separator diff --git a/classes/class_crypto.rst b/classes/class_crypto.rst index 8c109cc45696..d176c3f01bdb 100644 --- a/classes/class_crypto.rst +++ b/classes/class_crypto.rst @@ -203,7 +203,7 @@ Generates an RSA :ref:`CryptoKey` that can be used for creating Generates a self-signed :ref:`X509Certificate` from the given :ref:`CryptoKey` and ``issuer_name``. The certificate validity will be defined by ``not_before`` and ``not_after`` (first valid date and last valid date). The ``issuer_name`` must contain at least "CN=" (common name, i.e. the domain name), "O=" (organization, i.e. your company name), "C=" (country, i.e. 2 lettered ISO-3166 code of the country the organization is based in). -A small example to generate an RSA key and a X509 self-signed certificate. +A small example to generate an RSA key and an X509 self-signed certificate. .. tabs:: diff --git a/classes/class_editorexportplatformweb.rst b/classes/class_editorexportplatformweb.rst index bad2fd7052c6..4107f7b059c6 100644 --- a/classes/class_editorexportplatformweb.rst +++ b/classes/class_editorexportplatformweb.rst @@ -351,7 +351,7 @@ If ``true`` enables :ref:`GDExtension` support for this web b If ``true``, the exported game will support threads. It requires `a "cross-origin isolated" website `__, which may be difficult to set up and is limited for security reasons (such as not being able to communicate with third-party websites). -If ``false``, the exported game will not support threads. As a result, it is more prone to performance and audio issues, but will only require to be run on a HTTPS website. +If ``false``, the exported game will not support threads. As a result, it is more prone to performance and audio issues, but will only require to be run on an HTTPS website. .. rst-class:: classref-item-separator diff --git a/classes/class_editorsettings.rst b/classes/class_editorsettings.rst index 7612df8fa22a..c4df64af22d4 100644 --- a/classes/class_editorsettings.rst +++ b/classes/class_editorsettings.rst @@ -58,619 +58,621 @@ Properties .. table:: :widths: auto - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debugger/auto_switch_to_remote_scene_tree` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`debugger/profile_native_calls` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`debugger/profiler_frame_history_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`debugger/profiler_frame_max_functions` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`debugger/remote_inspect_refresh_interval` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`debugger/remote_scene_tree_refresh_interval` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`docks/filesystem/always_show_folders` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`docks/filesystem/textfile_extensions` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`docks/filesystem/thumbnail_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`docks/property_editor/auto_refresh_interval` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`docks/property_editor/subresource_hue_tint` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`docks/scene_tree/auto_expand_to_selected` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`docks/scene_tree/center_node_on_reparent` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`docks/scene_tree/start_create_dialog_fully_expanded` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/2d/bone_color1` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/2d/bone_color2` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/2d/bone_ik_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/2d/bone_outline_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/2d/bone_outline_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/2d/bone_selected_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/2d/bone_width` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/2d/grid_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/2d/guides_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/2d/smart_snapping_line_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/2d/use_integer_zoom_by_default` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/2d/viewport_border_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/3d/default_fov` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/3d/default_z_far` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/3d/default_z_near` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/3d/freelook/freelook_activation_modifier` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/3d/freelook/freelook_base_speed` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/3d/freelook/freelook_inertia` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/3d/freelook/freelook_navigation_scheme` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/3d/freelook/freelook_sensitivity` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/3d/freelook/freelook_speed_zoom_link` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/3d/grid_division_level_bias` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/3d/grid_division_level_max` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/3d/grid_division_level_min` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/3d/grid_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/3d/grid_xy_plane` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/3d/grid_xz_plane` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/3d/grid_yz_plane` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/3d/navigation/emulate_3_button_mouse` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/3d/navigation/emulate_numpad` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/3d/navigation/invert_x_axis` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/3d/navigation/invert_y_axis` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/3d/navigation/navigation_scheme` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/3d/navigation/orbit_modifier` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/3d/navigation/pan_modifier` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/3d/navigation/warped_mouse_panning` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/3d/navigation/zoom_modifier` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/3d/navigation/zoom_style` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/3d/navigation_feel/orbit_inertia` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/3d/navigation_feel/orbit_sensitivity` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/3d/navigation_feel/translation_inertia` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/3d/navigation_feel/zoom_inertia` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/3d/primary_grid_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/3d/primary_grid_steps` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/3d/secondary_grid_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/3d/selection_box_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/3d_gizmos/gizmo_colors/instantiated` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/3d_gizmos/gizmo_colors/joint` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/3d_gizmos/gizmo_colors/shape` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/animation/autorename_animation_tracks` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/animation/default_create_bezier_tracks` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/animation/default_create_reset_tracks` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/animation/onion_layers_future_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/animation/onion_layers_past_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/grid_map/pick_distance` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/panning/2d_editor_pan_speed` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/panning/2d_editor_panning_scheme` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/panning/animation_editors_panning_scheme` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/panning/simple_panning` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/panning/sub_editors_panning_scheme` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/panning/warped_mouse_panning` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/polygon_editor/auto_bake_delay` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/polygon_editor/point_grab_radius` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/polygon_editor/show_previous_outline` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/shader_editor/behavior/files/restore_shaders_on_load` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`editors/tiles_editor/display_grid` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/tiles_editor/grid_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/category_colors/color_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/category_colors/conditional_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/category_colors/input_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/category_colors/output_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/category_colors/particle_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/category_colors/scalar_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/category_colors/special_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/category_colors/textures_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/category_colors/transform_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/category_colors/utility_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/category_colors/vector_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`editors/visual_editors/color_theme` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/boolean_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/sampler_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/scalar_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/transform_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/vector2_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/vector3_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/vector4_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/visual_editors/grid_pattern` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/visual_editors/lines_curvature` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`editors/visual_editors/minimap_opacity` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`editors/visual_editors/visual_shader/port_preview_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`filesystem/directories/autoscan_project_path` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`filesystem/directories/default_project_path` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`filesystem/external_programs/3d_model_editor` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`filesystem/external_programs/audio_editor` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`filesystem/external_programs/raster_image_editor` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`filesystem/external_programs/terminal_emulator` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`filesystem/external_programs/terminal_emulator_flags` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`filesystem/external_programs/vector_image_editor` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`filesystem/file_dialog/display_mode` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`filesystem/file_dialog/show_hidden_files` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`filesystem/file_dialog/thumbnail_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`filesystem/import/blender/blender_path` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`filesystem/import/blender/rpc_port` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`filesystem/import/blender/rpc_server_uptime` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`filesystem/import/fbx2gltf/fbx2gltf_path` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`filesystem/on_save/compress_binary_resources` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`filesystem/on_save/safe_save_on_backup_then_rename` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`filesystem/tools/oidn/oidn_denoise_path` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/accept_dialog_cancel_ok_buttons` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/editor/automatically_open_screenshots` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`interface/editor/code_font` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/code_font_contextual_ligatures` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`interface/editor/code_font_custom_opentype_features` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`interface/editor/code_font_custom_variations` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/code_font_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`interface/editor/custom_display_scale` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/editor/debug/enable_pseudolocalization` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/display_scale` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`interface/editor/editor_language` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/editor_screen` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/editor/expand_to_title` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/font_antialiasing` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/font_hinting` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/font_subpixel_positioning` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/editor/localize_settings` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/low_processor_mode_sleep_usec` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`interface/editor/main_font` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`interface/editor/main_font_bold` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/main_font_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/editor/mouse_extra_buttons_navigate_history` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/project_manager_screen` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/editor/save_each_scene_on_quit` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/editor/save_on_focus_loss` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/editor/separate_distraction_mode` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/show_internal_errors_in_toast_notifications` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/show_update_spinner` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/editor/single_window_mode` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/ui_layout_direction` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/unfocused_low_processor_mode_sleep_usec` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/editor/update_continuously` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/editor/use_embedded_menu` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/editor/vsync_mode` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/inspector/auto_unfold_foreign_scenes` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/inspector/default_color_picker_mode` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/inspector/default_color_picker_shape` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`interface/inspector/default_float_step` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/inspector/default_property_name_style` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/inspector/disable_folding` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`interface/inspector/float_drag_speed` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/inspector/horizontal_vector2_editing` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/inspector/horizontal_vector_types_editing` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/inspector/max_array_dictionary_items_per_page` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/inspector/open_resources_in_current_inspector` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedStringArray` | :ref:`interface/inspector/resources_to_open_in_new_inspector` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/inspector/show_low_level_opentype_features` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/multi_window/enable` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/multi_window/maximize_window` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/multi_window/restore_windows_on_load` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/scene_tabs/display_close_button` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/scene_tabs/maximum_width` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/scene_tabs/restore_scenes_on_load` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/scene_tabs/show_script_button` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/scene_tabs/show_thumbnail_on_hover` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`interface/theme/accent_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/theme/additional_spacing` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`interface/theme/base_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/theme/base_spacing` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/theme/border_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`interface/theme/contrast` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/theme/corner_radius` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`interface/theme/custom_theme` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/theme/draw_extra_borders` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/theme/follow_system_theme` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`interface/theme/icon_and_font_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`interface/theme/icon_saturation` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`interface/theme/preset` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`interface/theme/relationship_line_opacity` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`interface/theme/spacing_preset` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/theme/use_system_accent_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/touchscreen/enable_long_press_as_right_click` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/touchscreen/enable_pan_and_scale_gestures` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`interface/touchscreen/increase_scrollbar_touch_area` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`interface/touchscreen/scale_gizmo_handles` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`network/connection/network_mode` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`network/debug/remote_host` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`network/debug/remote_port` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`network/http_proxy/host` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`network/http_proxy/port` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`network/tls/editor_tls_certificates` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`project_manager/default_renderer` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`project_manager/directory_naming_convention` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`project_manager/sorting_order` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`run/auto_save/save_before_running` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`run/output/always_clear_output_on_play` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`run/output/always_close_output_on_stop` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`run/output/always_open_output_on_play` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`run/output/font_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`run/platforms/linuxbsd/prefer_wayland` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`run/window_placement/android_window` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`run/window_placement/rect` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Vector2` | :ref:`run/window_placement/rect_custom_position` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`run/window_placement/screen` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/caret/caret_blink` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`text_editor/appearance/caret/caret_blink_interval` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/caret/highlight_all_occurrences` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/caret/highlight_current_line` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/appearance/caret/type` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/appearance/guidelines/line_length_guideline_hard_column` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/appearance/guidelines/line_length_guideline_soft_column` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/guidelines/show_line_length_guidelines` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/gutters/highlight_type_safe_lines` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/gutters/line_numbers_zero_padded` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/gutters/show_info_gutter` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/gutters/show_line_numbers` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/appearance/lines/autowrap_mode` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/lines/code_folding` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/appearance/lines/word_wrap` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/appearance/minimap/minimap_width` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/minimap/show_minimap` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/whitespace/draw_spaces` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/appearance/whitespace/draw_tabs` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/appearance/whitespace/line_spacing` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/behavior/files/auto_reload_scripts_on_external_change` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/behavior/files/autosave_interval_secs` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/behavior/files/convert_indent_on_save` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/behavior/files/restore_scripts_on_load` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/behavior/files/trim_trailing_whitespace_on_save` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/behavior/indent/auto_indent` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/behavior/indent/indent_wrapped_lines` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/behavior/indent/size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/behavior/indent/type` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/behavior/navigation/drag_and_drop_selection` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/behavior/navigation/move_caret_on_right_click` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/behavior/navigation/scroll_past_end_of_file` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/behavior/navigation/smooth_scrolling` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/behavior/navigation/stay_in_script_editor_on_node_selected` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/behavior/navigation/v_scroll_speed` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/completion/add_type_hints` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/completion/auto_brace_complete` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`text_editor/completion/code_complete_delay` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/completion/code_complete_enabled` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/completion/colorize_suggestions` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/completion/complete_file_paths` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`float` | :ref:`text_editor/completion/idle_parse_delay` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/completion/put_callhint_tooltip_below_current_line` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/completion/use_single_quotes` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/help/class_reference_examples` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/help/help_font_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/help/help_source_font_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`text_editor/help/help_title_font_size` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/help/show_help_index` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/script_list/show_members_overview` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`text_editor/script_list/sort_members_outline_alphabetically` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`text_editor/theme/color_theme` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/background_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/base_type_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/bookmark_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/brace_mismatch_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/breakpoint_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/caret_background_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/caret_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/code_folding_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/comment_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_background_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_existing_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_font_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_scroll_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_scroll_hovered_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_selected_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/control_flow_keyword_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/current_line_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/doc_comment_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/engine_type_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/executing_line_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/folded_code_region_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/function_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/keyword_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/line_length_guideline_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/line_number_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/mark_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/member_variable_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/number_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/safe_line_number_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/search_result_border_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/search_result_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/selection_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/string_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/symbol_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/text_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/text_selected_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/user_type_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Color` | :ref:`text_editor/theme/highlighting/word_highlighted_color` | - +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debugger/auto_switch_to_remote_scene_tree` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`debugger/profile_native_calls` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`debugger/profiler_frame_history_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`debugger/profiler_frame_max_functions` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`debugger/remote_inspect_refresh_interval` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`debugger/remote_scene_tree_refresh_interval` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`docks/filesystem/always_show_folders` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`docks/filesystem/textfile_extensions` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`docks/filesystem/thumbnail_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`docks/property_editor/auto_refresh_interval` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`docks/property_editor/subresource_hue_tint` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`docks/scene_tree/auto_expand_to_selected` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`docks/scene_tree/center_node_on_reparent` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`docks/scene_tree/start_create_dialog_fully_expanded` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/2d/bone_color1` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/2d/bone_color2` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/2d/bone_ik_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/2d/bone_outline_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/2d/bone_outline_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/2d/bone_selected_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/2d/bone_width` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/2d/grid_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/2d/guides_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/2d/smart_snapping_line_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/2d/use_integer_zoom_by_default` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/2d/viewport_border_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/3d/default_fov` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/3d/default_z_far` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/3d/default_z_near` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/3d/freelook/freelook_activation_modifier` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/3d/freelook/freelook_base_speed` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/3d/freelook/freelook_inertia` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/3d/freelook/freelook_navigation_scheme` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/3d/freelook/freelook_sensitivity` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/3d/freelook/freelook_speed_zoom_link` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/3d/grid_division_level_bias` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/3d/grid_division_level_max` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/3d/grid_division_level_min` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/3d/grid_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/3d/grid_xy_plane` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/3d/grid_xz_plane` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/3d/grid_yz_plane` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/3d/navigation/emulate_3_button_mouse` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/3d/navigation/emulate_numpad` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/3d/navigation/invert_x_axis` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/3d/navigation/invert_y_axis` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/3d/navigation/navigation_scheme` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/3d/navigation/orbit_modifier` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/3d/navigation/pan_modifier` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/3d/navigation/warped_mouse_panning` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/3d/navigation/zoom_modifier` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/3d/navigation/zoom_style` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/3d/navigation_feel/orbit_inertia` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/3d/navigation_feel/orbit_sensitivity` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/3d/navigation_feel/translation_inertia` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/3d/navigation_feel/zoom_inertia` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/3d/primary_grid_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/3d/primary_grid_steps` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/3d/secondary_grid_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/3d/selection_box_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/3d_gizmos/gizmo_colors/instantiated` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/3d_gizmos/gizmo_colors/joint` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/3d_gizmos/gizmo_colors/shape` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/animation/autorename_animation_tracks` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/animation/default_create_bezier_tracks` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/animation/default_create_reset_tracks` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/animation/onion_layers_future_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/animation/onion_layers_past_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/grid_map/pick_distance` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/panning/2d_editor_pan_speed` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/panning/2d_editor_panning_scheme` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/panning/animation_editors_panning_scheme` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/panning/simple_panning` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/panning/sub_editors_panning_scheme` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/panning/warped_mouse_panning` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/polygon_editor/auto_bake_delay` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/polygon_editor/point_grab_radius` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/polygon_editor/show_previous_outline` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/shader_editor/behavior/files/restore_shaders_on_load` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`editors/tiles_editor/display_grid` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/tiles_editor/grid_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/category_colors/color_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/category_colors/conditional_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/category_colors/input_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/category_colors/output_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/category_colors/particle_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/category_colors/scalar_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/category_colors/special_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/category_colors/textures_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/category_colors/transform_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/category_colors/utility_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/category_colors/vector_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`editors/visual_editors/color_theme` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/boolean_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/sampler_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/scalar_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/transform_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/vector2_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/vector3_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`editors/visual_editors/connection_colors/vector4_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/visual_editors/grid_pattern` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/visual_editors/lines_curvature` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`editors/visual_editors/minimap_opacity` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`editors/visual_editors/visual_shader/port_preview_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`filesystem/directories/autoscan_project_path` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`filesystem/directories/default_project_path` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`filesystem/external_programs/3d_model_editor` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`filesystem/external_programs/audio_editor` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`filesystem/external_programs/raster_image_editor` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`filesystem/external_programs/terminal_emulator` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`filesystem/external_programs/terminal_emulator_flags` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`filesystem/external_programs/vector_image_editor` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`filesystem/file_dialog/display_mode` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`filesystem/file_dialog/show_hidden_files` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`filesystem/file_dialog/thumbnail_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`filesystem/import/blender/blender_path` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`filesystem/import/blender/rpc_port` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`filesystem/import/blender/rpc_server_uptime` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`filesystem/import/fbx2gltf/fbx2gltf_path` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`filesystem/on_save/compress_binary_resources` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`filesystem/on_save/safe_save_on_backup_then_rename` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`filesystem/tools/oidn/oidn_denoise_path` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/accept_dialog_cancel_ok_buttons` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/editor/automatically_open_screenshots` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`interface/editor/code_font` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/code_font_contextual_ligatures` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`interface/editor/code_font_custom_opentype_features` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`interface/editor/code_font_custom_variations` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/code_font_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`interface/editor/custom_display_scale` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/editor/debug/enable_pseudolocalization` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/display_scale` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`interface/editor/editor_language` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/editor_screen` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/editor/expand_to_title` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/font_antialiasing` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/font_hinting` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/font_subpixel_positioning` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/editor/localize_settings` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/low_processor_mode_sleep_usec` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`interface/editor/main_font` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`interface/editor/main_font_bold` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/main_font_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/editor/mouse_extra_buttons_navigate_history` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/project_manager_screen` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/editor/save_each_scene_on_quit` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/editor/save_on_focus_loss` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/editor/separate_distraction_mode` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/show_internal_errors_in_toast_notifications` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/show_update_spinner` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/editor/single_window_mode` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/ui_layout_direction` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/unfocused_low_processor_mode_sleep_usec` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/editor/update_continuously` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/editor/use_embedded_menu` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/editor/vsync_mode` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/inspector/auto_unfold_foreign_scenes` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/inspector/default_color_picker_mode` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/inspector/default_color_picker_shape` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`interface/inspector/default_float_step` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/inspector/default_property_name_style` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/inspector/disable_folding` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`interface/inspector/float_drag_speed` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/inspector/horizontal_vector2_editing` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/inspector/horizontal_vector_types_editing` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/inspector/max_array_dictionary_items_per_page` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/inspector/open_resources_in_current_inspector` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedStringArray` | :ref:`interface/inspector/resources_to_open_in_new_inspector` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/inspector/show_low_level_opentype_features` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/multi_window/enable` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/multi_window/maximize_window` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/multi_window/restore_windows_on_load` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/scene_tabs/display_close_button` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/scene_tabs/maximum_width` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/scene_tabs/restore_scenes_on_load` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/scene_tabs/show_script_button` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/scene_tabs/show_thumbnail_on_hover` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`interface/theme/accent_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/theme/additional_spacing` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`interface/theme/base_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/theme/base_spacing` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/theme/border_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`interface/theme/contrast` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/theme/corner_radius` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`interface/theme/custom_theme` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/theme/draw_extra_borders` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/theme/follow_system_theme` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`interface/theme/icon_and_font_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`interface/theme/icon_saturation` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`interface/theme/preset` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`interface/theme/relationship_line_opacity` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`interface/theme/spacing_preset` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/theme/use_system_accent_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/touchscreen/enable_long_press_as_right_click` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/touchscreen/enable_pan_and_scale_gestures` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`interface/touchscreen/increase_scrollbar_touch_area` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`interface/touchscreen/scale_gizmo_handles` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`network/connection/network_mode` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`network/debug/remote_host` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`network/debug/remote_port` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`network/http_proxy/host` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`network/http_proxy/port` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`network/tls/editor_tls_certificates` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`project_manager/default_renderer` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`project_manager/directory_naming_convention` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`project_manager/sorting_order` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`run/auto_save/save_before_running` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`run/output/always_clear_output_on_play` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`run/output/always_close_output_on_stop` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`run/output/always_open_output_on_play` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`run/output/font_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`run/platforms/linuxbsd/prefer_wayland` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`run/window_placement/android_window` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`run/window_placement/rect` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Vector2` | :ref:`run/window_placement/rect_custom_position` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`run/window_placement/screen` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/caret/caret_blink` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`text_editor/appearance/caret/caret_blink_interval` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/caret/highlight_all_occurrences` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/caret/highlight_current_line` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/appearance/caret/type` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/appearance/guidelines/line_length_guideline_hard_column` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/appearance/guidelines/line_length_guideline_soft_column` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/guidelines/show_line_length_guidelines` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/gutters/highlight_type_safe_lines` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/gutters/line_numbers_zero_padded` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/gutters/show_info_gutter` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/gutters/show_line_numbers` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/appearance/lines/autowrap_mode` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/lines/code_folding` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/appearance/lines/word_wrap` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/appearance/minimap/minimap_width` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/minimap/show_minimap` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/whitespace/draw_spaces` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/appearance/whitespace/draw_tabs` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/appearance/whitespace/line_spacing` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/files/auto_reload_scripts_on_external_change` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/behavior/files/autosave_interval_secs` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/files/convert_indent_on_save` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/files/restore_scripts_on_load` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/files/trim_trailing_whitespace_on_save` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/indent/auto_indent` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/indent/indent_wrapped_lines` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/behavior/indent/size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/behavior/indent/type` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/navigation/drag_and_drop_selection` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/navigation/move_caret_on_right_click` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/navigation/open_script_when_connecting_signal_to_existing_method` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/navigation/scroll_past_end_of_file` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/navigation/smooth_scrolling` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/behavior/navigation/stay_in_script_editor_on_node_selected` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/behavior/navigation/v_scroll_speed` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/completion/add_type_hints` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/completion/auto_brace_complete` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`text_editor/completion/code_complete_delay` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/completion/code_complete_enabled` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/completion/colorize_suggestions` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/completion/complete_file_paths` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`float` | :ref:`text_editor/completion/idle_parse_delay` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/completion/put_callhint_tooltip_below_current_line` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/completion/use_single_quotes` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/help/class_reference_examples` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/help/help_font_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/help/help_source_font_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`text_editor/help/help_title_font_size` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/help/show_help_index` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/script_list/show_members_overview` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`text_editor/script_list/sort_members_outline_alphabetically` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`text_editor/theme/color_theme` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/background_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/base_type_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/bookmark_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/brace_mismatch_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/breakpoint_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/caret_background_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/caret_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/code_folding_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/comment_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_background_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_existing_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_font_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_scroll_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_scroll_hovered_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/completion_selected_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/control_flow_keyword_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/current_line_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/doc_comment_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/engine_type_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/executing_line_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/folded_code_region_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/function_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/keyword_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/line_length_guideline_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/line_number_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/mark_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/member_variable_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/number_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/safe_line_number_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/search_result_border_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/search_result_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/selection_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/string_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/symbol_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/text_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/text_selected_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/user_type_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Color` | :ref:`text_editor/theme/highlighting/word_highlighted_color` | + +---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-reftable-group @@ -3903,6 +3905,18 @@ If ``true``, the caret will be moved when right-clicking somewhere in the script ---- +.. _class_EditorSettings_property_text_editor/behavior/navigation/open_script_when_connecting_signal_to_existing_method: + +.. rst-class:: classref-property + +:ref:`bool` **text_editor/behavior/navigation/open_script_when_connecting_signal_to_existing_method** + +If ``true``, opens the script editor when connecting a signal to an existing script method from the Node dock. + +.. rst-class:: classref-item-separator + +---- + .. _class_EditorSettings_property_text_editor/behavior/navigation/scroll_past_end_of_file: .. rst-class:: classref-property diff --git a/classes/class_engine.rst b/classes/class_engine.rst index 8ab8d2d7ed68..58908cd581fd 100644 --- a/classes/class_engine.rst +++ b/classes/class_engine.rst @@ -129,7 +129,7 @@ Limiting the FPS can be useful to reduce the host machine's power consumption, w If :ref:`ProjectSettings.display/window/vsync/vsync_mode` is **Enabled** or **Adaptive**, the setting takes precedence and the max FPS number cannot exceed the monitor's refresh rate. -If :ref:`ProjectSettings.display/window/vsync/vsync_mode` is **Enabled**, on monitors with variable refresh rate enabled (G-Sync/FreeSync), using a FPS limit a few frames lower than the monitor's refresh rate will `reduce input lag while avoiding tearing `__. +If :ref:`ProjectSettings.display/window/vsync/vsync_mode` is **Enabled**, on monitors with variable refresh rate enabled (G-Sync/FreeSync), using an FPS limit a few frames lower than the monitor's refresh rate will `reduce input lag while avoiding tearing `__. See also :ref:`physics_ticks_per_second` and :ref:`ProjectSettings.application/run/max_fps`. @@ -280,7 +280,7 @@ To detect whether the current build is 64-bit, you can use the fact that all 64- -\ **Note:** This method does *not* return the name of the system's CPU architecture (like :ref:`OS.get_processor_name`). For example, when running a ``x86_32`` Godot binary on a ``x86_64`` system, the returned value will still be ``"x86_32"``. +\ **Note:** This method does *not* return the name of the system's CPU architecture (like :ref:`OS.get_processor_name`). For example, when running an ``x86_32`` Godot binary on an ``x86_64`` system, the returned value will still be ``"x86_32"``. .. rst-class:: classref-item-separator diff --git a/classes/class_environment.rst b/classes/class_environment.rst index e7b8ab033410..b0eadbef8725 100644 --- a/classes/class_environment.rst +++ b/classes/class_environment.rst @@ -2060,7 +2060,7 @@ The default exposure used for tonemapping. Higher values result in a brighter im - |void| **set_tonemapper**\ (\ value\: :ref:`ToneMapper`\ ) - :ref:`ToneMapper` **get_tonemapper**\ (\ ) -The tonemapping mode to use. Tonemapping is the process that "converts" HDR values to be suitable for rendering on a LDR display. (Godot doesn't support rendering on HDR displays yet.) +The tonemapping mode to use. Tonemapping is the process that "converts" HDR values to be suitable for rendering on an LDR display. (Godot doesn't support rendering on HDR displays yet.) .. rst-class:: classref-item-separator diff --git a/classes/class_fileaccess.rst b/classes/class_fileaccess.rst index b0885980889a..979fa7a7d02b 100644 --- a/classes/class_fileaccess.rst +++ b/classes/class_fileaccess.rst @@ -840,7 +840,7 @@ Returns the next bits from the file as a floating-point number. :ref:`String` **get_sha256**\ (\ path\: :ref:`String`\ ) |static| -Returns a SHA-256 :ref:`String` representing the file at the given path or an empty :ref:`String` on failure. +Returns an SHA-256 :ref:`String` representing the file at the given path or an empty :ref:`String` on failure. .. rst-class:: classref-item-separator diff --git a/classes/class_fontfile.rst b/classes/class_fontfile.rst index 2865ec0ed1a3..10bd5bfd1c57 100644 --- a/classes/class_fontfile.rst +++ b/classes/class_fontfile.rst @@ -78,6 +78,8 @@ Properties +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ | :ref:`PackedByteArray` | :ref:`data` | ``PackedByteArray()`` | +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ + | :ref:`bool` | :ref:`disable_embedded_bitmaps` | ``true`` | + +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ | :ref:`int` | :ref:`fixed_size` | ``0`` | +-----------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+-----------------------+ | :ref:`FixedSizeScaleMode` | :ref:`fixed_size_scale_mode` | ``0`` | @@ -315,6 +317,23 @@ Contents of the dynamic font source file. ---- +.. _class_FontFile_property_disable_embedded_bitmaps: + +.. rst-class:: classref-property + +:ref:`bool` **disable_embedded_bitmaps** = ``true`` + +.. rst-class:: classref-property-setget + +- |void| **set_disable_embedded_bitmaps**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **get_disable_embedded_bitmaps**\ (\ ) + +If set to ``true``, embedded font bitmap loading is disabled (bitmap-only and color fonts ignore this property). + +.. rst-class:: classref-item-separator + +---- + .. _class_FontFile_property_fixed_size: .. rst-class:: classref-property @@ -614,7 +633,7 @@ Removes all font cache entries. |void| **clear_glyphs**\ (\ cache_index\: :ref:`int`, size\: :ref:`Vector2i`\ ) -Removes all rendered glyphs information from the cache entry. +Removes all rendered glyph information from the cache entry. \ **Note:** This function will not remove textures associated with the glyphs, use :ref:`remove_texture` to remove them manually. @@ -1398,7 +1417,7 @@ Sets array containing glyph packing data. |void| **set_transform**\ (\ cache_index\: :ref:`int`, transform\: :ref:`Transform2D`\ ) -Sets 2D transform, applied to the font outlines, can be used for slanting, flipping and rotating glyphs. +Sets 2D transform, applied to the font outlines, can be used for slanting, flipping, and rotating glyphs. .. rst-class:: classref-item-separator diff --git a/classes/class_gltfbufferview.rst b/classes/class_gltfbufferview.rst index 0025cd3f51b2..1d8484eba5f9 100644 --- a/classes/class_gltfbufferview.rst +++ b/classes/class_gltfbufferview.rst @@ -40,17 +40,19 @@ Properties .. table:: :widths: auto - +-------------------------+---------------------------------------------------------------+-----------+ - | :ref:`int` | :ref:`buffer` | ``-1`` | - +-------------------------+---------------------------------------------------------------+-----------+ - | :ref:`int` | :ref:`byte_length` | ``0`` | - +-------------------------+---------------------------------------------------------------+-----------+ - | :ref:`int` | :ref:`byte_offset` | ``0`` | - +-------------------------+---------------------------------------------------------------+-----------+ - | :ref:`int` | :ref:`byte_stride` | ``-1`` | - +-------------------------+---------------------------------------------------------------+-----------+ - | :ref:`bool` | :ref:`indices` | ``false`` | - +-------------------------+---------------------------------------------------------------+-----------+ + +-------------------------+---------------------------------------------------------------------------+-----------+ + | :ref:`int` | :ref:`buffer` | ``-1`` | + +-------------------------+---------------------------------------------------------------------------+-----------+ + | :ref:`int` | :ref:`byte_length` | ``0`` | + +-------------------------+---------------------------------------------------------------------------+-----------+ + | :ref:`int` | :ref:`byte_offset` | ``0`` | + +-------------------------+---------------------------------------------------------------------------+-----------+ + | :ref:`int` | :ref:`byte_stride` | ``-1`` | + +-------------------------+---------------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`indices` | ``false`` | + +-------------------------+---------------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`vertex_attributes` | ``false`` | + +-------------------------+---------------------------------------------------------------------------+-----------+ .. rst-class:: classref-reftable-group @@ -152,7 +154,24 @@ The stride, in bytes, between interleaved data. If ``-1``, this buffer view is n - |void| **set_indices**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **get_indices**\ (\ ) -True if the GLTFBufferView's OpenGL GPU buffer type is an ``ELEMENT_ARRAY_BUFFER`` used for vertex indices (integer constant ``34963``). False if the buffer type is ``ARRAY_BUFFER`` used for vertex attributes (integer constant ``34962``) or when any other value. See `Buffers, BufferViews, and Accessors `__ for possible values. This property is set but never used, setting this property will do nothing. +True if the GLTFBufferView's OpenGL GPU buffer type is an ``ELEMENT_ARRAY_BUFFER`` used for vertex indices (integer constant ``34963``). False if the buffer type is any other value. See `Buffers, BufferViews, and Accessors `__ for possible values. This property is set on import and used on export. + +.. rst-class:: classref-item-separator + +---- + +.. _class_GLTFBufferView_property_vertex_attributes: + +.. rst-class:: classref-property + +:ref:`bool` **vertex_attributes** = ``false`` + +.. rst-class:: classref-property-setget + +- |void| **set_vertex_attributes**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **get_vertex_attributes**\ (\ ) + +True if the GLTFBufferView's OpenGL GPU buffer type is an ``ARRAY_BUFFER`` used for vertex attributes (integer constant ``34962``). False if the buffer type is any other value. See `Buffers, BufferViews, and Accessors `__ for possible values. This property is set on import and used on export. .. rst-class:: classref-section-separator diff --git a/classes/class_gltfmesh.rst b/classes/class_gltfmesh.rst index be8ceb295594..69d0ef56b021 100644 --- a/classes/class_gltfmesh.rst +++ b/classes/class_gltfmesh.rst @@ -12,7 +12,7 @@ GLTFMesh **Inherits:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` -GLTFMesh represents an GLTF mesh. +GLTFMesh represents a GLTF mesh. .. rst-class:: classref-introduction-group diff --git a/classes/class_gltftexture.rst b/classes/class_gltftexture.rst index bf9609441fea..2c5882f7c6d3 100644 --- a/classes/class_gltftexture.rst +++ b/classes/class_gltftexture.rst @@ -12,7 +12,7 @@ GLTFTexture **Inherits:** :ref:`Resource` **<** :ref:`RefCounted` **<** :ref:`Object` -GLTFTexture represents a texture in an GLTF file. +GLTFTexture represents a texture in a GLTF file. .. rst-class:: classref-introduction-group diff --git a/classes/class_hashingcontext.rst b/classes/class_hashingcontext.rst index e6ccd0ba9481..4068e6701927 100644 --- a/classes/class_hashingcontext.rst +++ b/classes/class_hashingcontext.rst @@ -34,7 +34,7 @@ The :ref:`HashType` enum shows the supported hashi # Check that file exists. if not FileAccess.file_exists(path): return - # Start a SHA-256 context. + # Start an SHA-256 context. var ctx = HashingContext.new() ctx.start(HashingContext.HASH_SHA256) # Open the file to hash. @@ -58,7 +58,7 @@ The :ref:`HashType` enum shows the supported hashi { return; } - // Start a SHA-256 context. + // Start an SHA-256 context. var ctx = new HashingContext(); ctx.Start(HashingContext.HashType.Sha256); // Open the file to hash. @@ -158,7 +158,7 @@ Closes the current context, and return the computed hash. :ref:`Error` **start**\ (\ type\: :ref:`HashType`\ ) -Starts a new hash computation of the given ``type`` (e.g. :ref:`HASH_SHA256` to start computation of a SHA-256). +Starts a new hash computation of the given ``type`` (e.g. :ref:`HASH_SHA256` to start computation of an SHA-256). .. rst-class:: classref-item-separator diff --git a/classes/class_image.rst b/classes/class_image.rst index e2264e492801..979901a50ff1 100644 --- a/classes/class_image.rst +++ b/classes/class_image.rst @@ -1458,7 +1458,7 @@ Loads an image from the UTF-8 binary contents of an **uncompressed** SVG file (* :ref:`Error` **load_svg_from_string**\ (\ svg_str\: :ref:`String`, scale\: :ref:`float` = 1.0\ ) -Loads an image from the string contents of a SVG file (**.svg**). +Loads an image from the string contents of an SVG file (**.svg**). \ **Note:** This method is only available in engine builds with the SVG module enabled. By default, the SVG module is enabled, but it can be disabled at build-time using the ``module_svg_enabled=no`` SCons option. diff --git a/classes/class_importermesh.rst b/classes/class_importermesh.rst index 71d118d8518b..e31833ba6af4 100644 --- a/classes/class_importermesh.rst +++ b/classes/class_importermesh.rst @@ -145,7 +145,7 @@ The ``arrays`` argument is an array of arrays. Each of the :ref:`Mesh.ARRAY_MAX< The ``blend_shapes`` argument is an array of vertex data for each blend shape. Each element is an array of the same structure as ``arrays``, but :ref:`Mesh.ARRAY_VERTEX`, :ref:`Mesh.ARRAY_NORMAL`, and :ref:`Mesh.ARRAY_TANGENT` are set if and only if they are set in ``arrays`` and all other entries are ``null``. -The ``lods`` argument is a dictionary with :ref:`float` keys and :ref:`PackedInt32Array` values. Each entry in the dictionary represents a LOD level of the surface, where the value is the :ref:`Mesh.ARRAY_INDEX` array to use for the LOD level and the key is roughly proportional to the distance at which the LOD stats being used. I.e., increasing the key of a LOD also increases the distance that the objects has to be from the camera before the LOD is used. +The ``lods`` argument is a dictionary with :ref:`float` keys and :ref:`PackedInt32Array` values. Each entry in the dictionary represents an LOD level of the surface, where the value is the :ref:`Mesh.ARRAY_INDEX` array to use for the LOD level and the key is roughly proportional to the distance at which the LOD stats being used. I.e., increasing the key of an LOD also increases the distance that the objects has to be from the camera before the LOD is used. The ``flags`` argument is the bitwise or of, as required: One value of :ref:`ArrayCustomFormat` left shifted by ``ARRAY_FORMAT_CUSTOMn_SHIFT`` for each custom channel in use, :ref:`Mesh.ARRAY_FLAG_USE_DYNAMIC_UPDATE`, :ref:`Mesh.ARRAY_FLAG_USE_8_BONE_WEIGHTS`, or :ref:`Mesh.ARRAY_FLAG_USES_EMPTY_VERTEX_ARRAY`. diff --git a/classes/class_input.rst b/classes/class_input.rst index d53d421fd8aa..f691eabe9c52 100644 --- a/classes/class_input.rst +++ b/classes/class_input.rst @@ -644,7 +644,7 @@ Returns the current value of the joypad axis at given index (see :ref:`JoyAxis` **get_joy_guid**\ (\ device\: :ref:`int`\ ) |const| -Returns a SDL2-compatible device GUID on platforms that use gamepad remapping, e.g. ``030000004c050000c405000000010000``. Returns ``"Default Gamepad"`` otherwise. Godot uses the `SDL2 game controller database `__ to determine gamepad names and mappings based on this GUID. +Returns an SDL2-compatible device GUID on platforms that use gamepad remapping, e.g. ``030000004c050000c405000000010000``. Returns ``"Default Gamepad"`` otherwise. Godot uses the `SDL2 game controller database `__ to determine gamepad names and mappings based on this GUID. .. rst-class:: classref-item-separator diff --git a/classes/class_inputeventscreendrag.rst b/classes/class_inputeventscreendrag.rst index 15390c5fa524..8151ce81b2f4 100644 --- a/classes/class_inputeventscreendrag.rst +++ b/classes/class_inputeventscreendrag.rst @@ -110,7 +110,7 @@ Returns ``true`` when using the eraser end of a stylus pen. - |void| **set_position**\ (\ value\: :ref:`Vector2`\ ) - :ref:`Vector2` **get_position**\ (\ ) -The drag position. +The drag position in the viewport the node is in, using the coordinate system of this viewport. .. rst-class:: classref-item-separator diff --git a/classes/class_inputeventscreentouch.rst b/classes/class_inputeventscreentouch.rst index e3459a9ab01e..ec44a0c5c4bf 100644 --- a/classes/class_inputeventscreentouch.rst +++ b/classes/class_inputeventscreentouch.rst @@ -119,7 +119,7 @@ The touch index in the case of a multi-touch event. One index = one finger. - |void| **set_position**\ (\ value\: :ref:`Vector2`\ ) - :ref:`Vector2` **get_position**\ (\ ) -The touch position, in screen (global) coordinates. +The touch position in the viewport the node is in, using the coordinate system of this viewport. .. rst-class:: classref-item-separator diff --git a/classes/class_multiplayerapi.rst b/classes/class_multiplayerapi.rst index 82bc401240f6..e0ce1b051f77 100644 --- a/classes/class_multiplayerapi.rst +++ b/classes/class_multiplayerapi.rst @@ -257,7 +257,7 @@ Returns the peer IDs of all connected peers of this MultiplayerAPI's :ref:`multi Returns the sender's peer ID for the RPC currently being executed. -\ **Note:** If not inside an RPC this method will return 0. +\ **Note:** This method returns ``0`` when called outside of an RPC. As such, the original peer ID may be lost when code execution is delayed (such as with GDScript's ``await`` keyword). .. rst-class:: classref-item-separator diff --git a/classes/class_nativemenu.rst b/classes/class_nativemenu.rst index 86b13069cc1c..b2625ccba7cb 100644 --- a/classes/class_nativemenu.rst +++ b/classes/class_nativemenu.rst @@ -21,6 +21,38 @@ Description **NativeMenu** handles low-level access to the OS native global menu bar and popup menus. +\ **Note:** This is low-level API, consider using :ref:`MenuBar` with :ref:`MenuBar.prefer_global_menu` set to ``true``, and :ref:`PopupMenu` with :ref:`PopupMenu.prefer_native_menu` set to ``true``. + +To create a menu, use :ref:`create_menu`, add menu items using ``add_*_item`` methods. To remove a menu, use :ref:`free_menu`. + +:: + + var menu + + func _menu_callback(item_id): + if item_id == "ITEM_CUT": + cut() + elif item_id == "ITEM_COPY": + copy() + elif item_id == "ITEM_PASTE": + paste() + + func _enter_tree(): + # Create new menu and add items: + menu = NativeMenu.create_menu() + NativeMenu.add_item(menu, "Cut", _menu_callback, Callable(), "ITEM_CUT") + NativeMenu.add_item(menu, "Copy", _menu_callback, Callable(), "ITEM_COPY") + NativeMenu.add_separator(menu) + NativeMenu.add_item(menu, "Paste", _menu_callback, Callable(), "ITEM_PASTE") + + func _on_button_pressed(): + # Show popup menu at mouse position: + NativeMenu.popup(menu, DisplayServer.mouse_get_position()) + + func _exit_tree(): + # Remove menu when it's no longer needed: + NativeMenu.free_menu(menu) + .. rst-class:: classref-reftable-group Methods @@ -116,6 +148,8 @@ Methods +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`remove_item`\ (\ rid\: :ref:`RID`, idx\: :ref:`int`\ ) | +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_interface_direction`\ (\ rid\: :ref:`RID`, is_rtl\: :ref:`bool`\ ) | + +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_item_accelerator`\ (\ rid\: :ref:`RID`, idx\: :ref:`int`, keycode\: :ref:`Key`\ ) | +-----------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_item_callback`\ (\ rid\: :ref:`RID`, idx\: :ref:`int`, callback\: :ref:`Callable`\ ) | @@ -188,6 +222,30 @@ enum **Feature**: **NativeMenu** supports native popup menus. +.. _class_NativeMenu_constant_FEATURE_OPEN_CLOSE_CALLBACK: + +.. rst-class:: classref-enumeration-constant + +:ref:`Feature` **FEATURE_OPEN_CLOSE_CALLBACK** = ``2`` + +**NativeMenu** supports menu open and close callbacks. + +.. _class_NativeMenu_constant_FEATURE_HOVER_CALLBACK: + +.. rst-class:: classref-enumeration-constant + +:ref:`Feature` **FEATURE_HOVER_CALLBACK** = ``3`` + +**NativeMenu** supports menu item hover callback. + +.. _class_NativeMenu_constant_FEATURE_KEY_CALLBACK: + +.. rst-class:: classref-enumeration-constant + +:ref:`Feature` **FEATURE_KEY_CALLBACK** = ``4`` + +**NativeMenu** supports menu item accelerator/key callback. + .. rst-class:: classref-item-separator ---- @@ -269,7 +327,9 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that \ **Note:** The ``callback`` and ``key_callback`` Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to ``tag``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. + +\ **Note:** ``accelerator`` and ``key_callback`` are ignored on Windows. .. rst-class:: classref-item-separator @@ -289,7 +349,9 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that \ **Note:** The ``callback`` and ``key_callback`` Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to ``tag``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. + +\ **Note:** ``accelerator`` and ``key_callback`` are ignored on Windows. .. rst-class:: classref-item-separator @@ -309,7 +371,9 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that \ **Note:** The ``callback`` and ``key_callback`` Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to ``tag``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. + +\ **Note:** ``accelerator`` and ``key_callback`` are ignored on Windows. .. rst-class:: classref-item-separator @@ -331,7 +395,9 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that \ **Note:** The ``callback`` and ``key_callback`` Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to ``tag``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. + +\ **Note:** ``accelerator`` and ``key_callback`` are ignored on Windows. .. rst-class:: classref-item-separator @@ -351,7 +417,9 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that \ **Note:** The ``callback`` and ``key_callback`` Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to ``tag``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. + +\ **Note:** ``accelerator`` and ``key_callback`` are ignored on Windows. .. rst-class:: classref-item-separator @@ -375,7 +443,9 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that \ **Note:** The ``callback`` and ``key_callback`` Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to ``tag``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. + +\ **Note:** ``accelerator`` and ``key_callback`` are ignored on Windows. .. rst-class:: classref-item-separator @@ -397,7 +467,9 @@ An ``accelerator`` can optionally be defined, which is a keyboard shortcut that \ **Note:** The ``callback`` and ``key_callback`` Callables need to accept exactly one Variant parameter, the parameter passed to the Callables will be the value passed to ``tag``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. + +\ **Note:** ``accelerator`` and ``key_callback`` are ignored on Windows. .. rst-class:: classref-item-separator @@ -413,7 +485,7 @@ Adds a separator between items to the global menu ``rid``. Separators also occup Returns index of the inserted item, it's not guaranteed to be the same as ``index`` value. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -429,7 +501,7 @@ Adds an item that will act as a submenu of the global menu ``rid``. The ``submen Returns index of the inserted item, it's not guaranteed to be the same as ``index`` value. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -443,7 +515,7 @@ Returns index of the inserted item, it's not guaranteed to be the same as ``inde Removes all items from the global menu ``rid``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -457,7 +529,7 @@ Removes all items from the global menu ``rid``. Creates a new global menu object. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -471,7 +543,7 @@ Creates a new global menu object. Returns the index of the item with the specified ``tag``. Index is automatically assigned to each item by the engine. Index can not be set manually. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -485,7 +557,7 @@ Returns the index of the item with the specified ``tag``. Index is automatically Returns the index of the item with the specified ``text``. Index is automatically assigned to each item by the engine. Index can not be set manually. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -499,7 +571,7 @@ Returns the index of the item with the specified ``text``. Index is automaticall Frees a global menu object created by this **NativeMenu**. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -527,7 +599,7 @@ Returns the accelerator of the item at index ``idx``. Accelerators are special c Returns the callback of the item at index ``idx``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -541,7 +613,7 @@ Returns the callback of the item at index ``idx``. Returns number of items in the global menu ``rid``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -555,7 +627,7 @@ Returns number of items in the global menu ``rid``. Returns the icon of the item at index ``idx``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -597,7 +669,7 @@ Returns the callback of the item accelerator at index ``idx``. Returns number of states of a multistate item. See :ref:`add_multistate_item` for details. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -611,7 +683,7 @@ Returns number of states of a multistate item. See :ref:`add_multistate_item` for details. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -625,7 +697,7 @@ Returns the state of a multistate item. See :ref:`add_multistate_item` for more info on how to add a submenu. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -639,7 +711,7 @@ Returns the submenu ID of the item at index ``idx``. See :ref:`add_submenu_item< Returns the metadata of the specified item, which might be of any type. You can set it with :ref:`set_item_tag`, which provides a simple way of assigning context data to items. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -653,7 +725,7 @@ Returns the metadata of the specified item, which might be of any type. You can Returns the text of the item at index ``idx``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -723,7 +795,7 @@ b]Note:** This method is implemented only on macOS. Returns global menu size. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -765,7 +837,7 @@ Returns readable name of a special system menu. Returns ``true`` if the specified ``feature`` is supported by the current **NativeMenu**, ``false`` otherwise. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -779,7 +851,7 @@ Returns ``true`` if the specified ``feature`` is supported by the current **Nati Returns ``true`` if ``rid`` is valid global menu. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -807,7 +879,7 @@ Returns ``true`` if a special system menu is supported. Returns ``true`` if the item at index ``idx`` is checkable in some way, i.e. if it has a checkbox or radio button. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -821,7 +893,7 @@ Returns ``true`` if the item at index ``idx`` is checkable in some way, i.e. if Returns ``true`` if the item at index ``idx`` is checked. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -837,7 +909,7 @@ Returns ``true`` if the item at index ``idx`` is disabled. When it is disabled i See :ref:`set_item_disabled` for more info on how to disable an item. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -869,7 +941,7 @@ Returns ``true`` if the item at index ``idx`` has radio button-style checkabilit \ **Note:** This is purely cosmetic; you must add the logic for checking/unchecking items in radio groups. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -897,7 +969,7 @@ Return ``true`` is global menu is a special system menu. Shows the global menu at ``position`` in the screen coordinates. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -913,7 +985,21 @@ Removes the item at index ``idx`` from the global menu ``rid``. \ **Note:** The indices of items after the removed item will be shifted by one. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. + +.. rst-class:: classref-item-separator + +---- + +.. _class_NativeMenu_method_set_interface_direction: + +.. rst-class:: classref-method + +|void| **set_interface_direction**\ (\ rid\: :ref:`RID`, is_rtl\: :ref:`bool`\ ) + +Sets the menu text layout directtion. + +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -943,7 +1029,7 @@ Sets the callback of the item at index ``idx``. Callback is emitted when an item \ **Note:** The ``callback`` Callable needs to accept exactly one Variant parameter, the parameter passed to the Callable will be the value passed to the ``tag`` parameter when the menu item was created. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -957,7 +1043,7 @@ Sets the callback of the item at index ``idx``. Callback is emitted when an item Sets whether the item at index ``idx`` has a checkbox. If ``false``, sets the type of the item to plain text. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -971,7 +1057,7 @@ Sets whether the item at index ``idx`` has a checkbox. If ``false``, sets the ty Sets the checkstate status of the item at index ``idx``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -985,7 +1071,7 @@ Sets the checkstate status of the item at index ``idx``. Enables/disables the item at index ``idx``. When it is disabled, it can't be selected and its action can't be invoked. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -1029,9 +1115,9 @@ Sets the callback of the item at index ``idx``. The callback is emitted when an Replaces the :ref:`Texture2D` icon of the specified ``idx``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. -\ **Note:** This method is not supported by macOS "_dock" menu items. +\ **Note:** This method is not supported by macOS Dock menu items. .. rst-class:: classref-item-separator @@ -1075,7 +1161,7 @@ Sets the callback of the item at index ``idx``. Callback is emitted when its acc Sets number of state of a multistate item. See :ref:`add_multistate_item` for details. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -1091,7 +1177,7 @@ Sets the type of the item at the specified index ``idx`` to radio button. If ``f \ **Note:** This is purely cosmetic; you must add the logic for checking/unchecking items in radio groups. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -1105,7 +1191,7 @@ Sets the type of the item at the specified index ``idx`` to radio button. If ``f Sets the state of a multistate item. See :ref:`add_multistate_item` for details. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -1119,7 +1205,7 @@ Sets the state of a multistate item. See :ref:`add_multistate_item`, which provides a simple way of assigning context data to items. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -1147,7 +1233,7 @@ Sets the metadata of an item, which may be of any type. You can later get it wit Sets the text of the item at index ``idx``. -\ **Note:** This method is implemented only on macOS. +\ **Note:** This method is implemented on macOS and Windows. .. rst-class:: classref-item-separator @@ -1189,6 +1275,8 @@ Sets the minimum width of the global menu. Registers callable to emit when the menu is about to show. +\ **Note:** This method is implemented only on macOS. + .. rst-class:: classref-item-separator ---- @@ -1201,6 +1289,8 @@ Registers callable to emit when the menu is about to show. Registers callable to emit when the menu is about to closed. +\ **Note:** This method is implemented only on macOS. + .. |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_navigationmeshsourcegeometrydata2d.rst b/classes/class_navigationmeshsourcegeometrydata2d.rst index a064510db29a..11dce7c5c06f 100644 --- a/classes/class_navigationmeshsourcegeometrydata2d.rst +++ b/classes/class_navigationmeshsourcegeometrydata2d.rst @@ -34,12 +34,18 @@ Methods +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`add_obstruction_outline`\ (\ shape_outline\: :ref:`PackedVector2Array`\ ) | +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_projected_obstruction`\ (\ vertices\: :ref:`PackedVector2Array`, carve\: :ref:`bool`\ ) | + +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`add_traversable_outline`\ (\ shape_outline\: :ref:`PackedVector2Array`\ ) | +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`clear`\ (\ ) | +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear_projected_obstructions`\ (\ ) | + +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`PackedVector2Array`\] | :ref:`get_obstruction_outlines`\ (\ ) |const| | +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array` | :ref:`get_projected_obstructions`\ (\ ) |const| | + +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`PackedVector2Array`\] | :ref:`get_traversable_outlines`\ (\ ) |const| | +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`has_data`\ (\ ) | @@ -48,6 +54,8 @@ Methods +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_obstruction_outlines`\ (\ obstruction_outlines\: :ref:`Array`\[:ref:`PackedVector2Array`\]\ ) | +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_projected_obstructions`\ (\ projected_obstructions\: :ref:`Array`\ ) | + +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`set_traversable_outlines`\ (\ traversable_outlines\: :ref:`Array`\[:ref:`PackedVector2Array`\]\ ) | +----------------------------------------------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -72,6 +80,18 @@ Adds the outline points of a shape as obstructed area. ---- +.. _class_NavigationMeshSourceGeometryData2D_method_add_projected_obstruction: + +.. rst-class:: classref-method + +|void| **add_projected_obstruction**\ (\ vertices\: :ref:`PackedVector2Array`, carve\: :ref:`bool`\ ) + +Adds a projected obstruction shape to the source geometry. If ``carve`` is ``true`` the carved shape will not be affected by additional offsets (e.g. agent radius) of the navigation mesh baking process. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationMeshSourceGeometryData2D_method_add_traversable_outline: .. rst-class:: classref-method @@ -96,6 +116,18 @@ Clears the internal data. ---- +.. _class_NavigationMeshSourceGeometryData2D_method_clear_projected_obstructions: + +.. rst-class:: classref-method + +|void| **clear_projected_obstructions**\ (\ ) + +Clears all projected obstructions. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationMeshSourceGeometryData2D_method_get_obstruction_outlines: .. rst-class:: classref-method @@ -108,6 +140,22 @@ Returns all the obstructed area outlines arrays. ---- +.. _class_NavigationMeshSourceGeometryData2D_method_get_projected_obstructions: + +.. rst-class:: classref-method + +:ref:`Array` **get_projected_obstructions**\ (\ ) |const| + +Returns the projected obstructions as an :ref:`Array` of dictionaries. Each :ref:`Dictionary` contains the following entries: + +- ``vertices`` - A :ref:`PackedFloat32Array` that defines the outline points of the projected shape. + +- ``carve`` - A :ref:`bool` that defines how the projected shape affects the navigation mesh baking. If ``true`` the projected shape will not be affected by addition offsets, e.g. agent radius. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationMeshSourceGeometryData2D_method_get_traversable_outlines: .. rst-class:: classref-method @@ -152,6 +200,28 @@ Adds the geometry data of another **NavigationMeshSourceGeometryData2D** to the Sets all the obstructed area outlines arrays. +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshSourceGeometryData2D_method_set_projected_obstructions: + +.. rst-class:: classref-method + +|void| **set_projected_obstructions**\ (\ projected_obstructions\: :ref:`Array`\ ) + +Sets the projected obstructions with an Array of Dictionaries with the following key value pairs: + + +.. tabs:: + + .. code-tab:: gdscript + + "vertices" : PackedFloat32Array + "carve" : bool + + + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_navigationmeshsourcegeometrydata3d.rst b/classes/class_navigationmeshsourcegeometrydata3d.rst index 218f5f1567e5..043b7dfeb8e7 100644 --- a/classes/class_navigationmeshsourcegeometrydata3d.rst +++ b/classes/class_navigationmeshsourcegeometrydata3d.rst @@ -31,27 +31,35 @@ Methods .. table:: :widths: auto - +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_faces`\ (\ faces\: :ref:`PackedVector3Array`, xform\: :ref:`Transform3D`\ ) | - +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_mesh`\ (\ mesh\: :ref:`Mesh`, xform\: :ref:`Transform3D`\ ) | - +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`add_mesh_array`\ (\ mesh_array\: :ref:`Array`, xform\: :ref:`Transform3D`\ ) | - +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`clear`\ (\ ) | - +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedInt32Array` | :ref:`get_indices`\ (\ ) |const| | - +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`PackedFloat32Array` | :ref:`get_vertices`\ (\ ) |const| | - +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`has_data`\ (\ ) | - +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`merge`\ (\ other_geometry\: :ref:`NavigationMeshSourceGeometryData3D`\ ) | - +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_indices`\ (\ indices\: :ref:`PackedInt32Array`\ ) | - +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`set_vertices`\ (\ vertices\: :ref:`PackedFloat32Array`\ ) | - +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_faces`\ (\ faces\: :ref:`PackedVector3Array`, xform\: :ref:`Transform3D`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_mesh`\ (\ mesh\: :ref:`Mesh`, xform\: :ref:`Transform3D`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_mesh_array`\ (\ mesh_array\: :ref:`Array`, xform\: :ref:`Transform3D`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`add_projected_obstruction`\ (\ vertices\: :ref:`PackedVector3Array`, elevation\: :ref:`float`, height\: :ref:`float`, carve\: :ref:`bool`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear`\ (\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`clear_projected_obstructions`\ (\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedInt32Array` | :ref:`get_indices`\ (\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array` | :ref:`get_projected_obstructions`\ (\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`PackedFloat32Array` | :ref:`get_vertices`\ (\ ) |const| | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`has_data`\ (\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`merge`\ (\ other_geometry\: :ref:`NavigationMeshSourceGeometryData3D`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_indices`\ (\ indices\: :ref:`PackedInt32Array`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_projected_obstructions`\ (\ projected_obstructions\: :ref:`Array`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`set_vertices`\ (\ vertices\: :ref:`PackedFloat32Array`\ ) | + +-----------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -98,6 +106,18 @@ Adds an :ref:`Array` the size of :ref:`Mesh.ARRAY_MAX`, elevation\: :ref:`float`, height\: :ref:`float`, carve\: :ref:`bool`\ ) + +Adds a projected obstruction shape to the source geometry. The ``vertices`` are considered projected on a xz-axes plane, placed at the global y-axis ``elevation`` and extruded by ``height``. If ``carve`` is ``true`` the carved shape will not be affected by additional offsets (e.g. agent radius) of the navigation mesh baking process. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationMeshSourceGeometryData3D_method_clear: .. rst-class:: classref-method @@ -110,6 +130,18 @@ Clears the internal data. ---- +.. _class_NavigationMeshSourceGeometryData3D_method_clear_projected_obstructions: + +.. rst-class:: classref-method + +|void| **clear_projected_obstructions**\ (\ ) + +Clears all projected obstructions. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationMeshSourceGeometryData3D_method_get_indices: .. rst-class:: classref-method @@ -122,6 +154,26 @@ Returns the parsed source geometry data indices array. ---- +.. _class_NavigationMeshSourceGeometryData3D_method_get_projected_obstructions: + +.. rst-class:: classref-method + +:ref:`Array` **get_projected_obstructions**\ (\ ) |const| + +Returns the projected obstructions as an :ref:`Array` of dictionaries. Each :ref:`Dictionary` contains the following entries: + +- ``vertices`` - A :ref:`PackedFloat32Array` that defines the outline points of the projected shape. + +- ``elevation`` - A :ref:`float` that defines the projected shape placement on the y-axis. + +- ``height`` - A :ref:`float` that defines how much the projected shape is extruded along the y-axis. + +- ``carve`` - A :ref:`bool` that defines how the obstacle affects the navigation mesh baking. If ``true`` the projected shape will not be affected by addition offsets, e.g. agent radius. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationMeshSourceGeometryData3D_method_get_vertices: .. rst-class:: classref-method @@ -168,6 +220,30 @@ Sets the parsed source geometry data indices. The indices need to be matched wit \ **Warning:** Inappropriate data can crash the baking process of the involved third-party libraries. +.. rst-class:: classref-item-separator + +---- + +.. _class_NavigationMeshSourceGeometryData3D_method_set_projected_obstructions: + +.. rst-class:: classref-method + +|void| **set_projected_obstructions**\ (\ projected_obstructions\: :ref:`Array`\ ) + +Sets the projected obstructions with an Array of Dictionaries with the following key value pairs: + + +.. tabs:: + + .. code-tab:: gdscript + + "vertices" : PackedFloat32Array + "elevation" : float + "height" : float + "carve" : bool + + + .. rst-class:: classref-item-separator ---- diff --git a/classes/class_navigationobstacle2d.rst b/classes/class_navigationobstacle2d.rst index ce40dc5ef3e3..9e070561bde6 100644 --- a/classes/class_navigationobstacle2d.rst +++ b/classes/class_navigationobstacle2d.rst @@ -14,20 +14,18 @@ NavigationObstacle2D **Inherits:** :ref:`Node2D` **<** :ref:`CanvasItem` **<** :ref:`Node` **<** :ref:`Object` -2D Obstacle used in navigation to constrain avoidance controlled agents outside or inside an area. +2D obstacle used to affect navigation mesh baking or constrain velocities of avoidance controlled agents. .. rst-class:: classref-introduction-group Description ----------- -2D Obstacle used in navigation to constrain avoidance controlled agents outside or inside an area. The obstacle needs a navigation map and outline vertices defined to work correctly. +An obstacle needs a navigation map and outline :ref:`vertices` defined to work correctly. The outlines can not cross or overlap. -If the obstacle's vertices are winded in clockwise order, avoidance agents will be pushed in by the obstacle, otherwise, avoidance agents will be pushed out. Outlines must not cross or overlap. +Obstacles can be included in the navigation mesh baking process when :ref:`affect_navigation_mesh` is enabled. They do not add walkable geometry, instead their role is to discard other source geometry inside the shape. This can be used to prevent navigation mesh from appearing in unwanted places. If :ref:`carve_navigation_mesh` is enabled the baked shape will not be affected by offsets of the navigation mesh baking, e.g. the agent radius. -Obstacles are **not** a replacement for a (re)baked navigation mesh. Obstacles **don't** change the resulting path from the pathfinding, obstacles only affect the navigation avoidance agent movement by altering the suggested velocity of the avoidance agent. - -Obstacles using vertices can warp to a new position but should not moved every frame as each move requires a rebuild of the avoidance map. +With :ref:`avoidance_enabled` the obstacle can constrain the avoidance velocities of avoidance using agents. If the obstacle's vertices are wound in clockwise order, avoidance agents will be pushed in by the obstacle, otherwise, avoidance agents will be pushed out. Obstacles using vertices and avoidance can warp to a new position but should not be moved every single frame as each change requires a rebuild of the avoidance map. .. rst-class:: classref-introduction-group @@ -44,17 +42,21 @@ Properties .. table:: :widths: auto - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`bool` | :ref:`avoidance_enabled` | ``true`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`int` | :ref:`avoidance_layers` | ``1`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`float` | :ref:`radius` | ``0.0`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`Vector2` | :ref:`velocity` | ``Vector2(0, 0)`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`PackedVector2Array` | :ref:`vertices` | ``PackedVector2Array()`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`affect_navigation_mesh` | ``false`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`avoidance_enabled` | ``true`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`int` | :ref:`avoidance_layers` | ``1`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`carve_navigation_mesh` | ``false`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`float` | :ref:`radius` | ``0.0`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Vector2` | :ref:`velocity` | ``Vector2(0, 0)`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`PackedVector2Array` | :ref:`vertices` | ``PackedVector2Array()`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ .. rst-class:: classref-reftable-group @@ -85,6 +87,23 @@ Methods Property Descriptions --------------------- +.. _class_NavigationObstacle2D_property_affect_navigation_mesh: + +.. rst-class:: classref-property + +:ref:`bool` **affect_navigation_mesh** = ``false`` + +.. rst-class:: classref-property-setget + +- |void| **set_affect_navigation_mesh**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **get_affect_navigation_mesh**\ (\ ) + +If enabled and parsed in a navigation mesh baking process the obstacle will discard source geometry inside its :ref:`vertices` defined shape. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationObstacle2D_property_avoidance_enabled: .. rst-class:: classref-property @@ -119,6 +138,27 @@ A bitfield determining the avoidance layers for this obstacle. Agents with a mat ---- +.. _class_NavigationObstacle2D_property_carve_navigation_mesh: + +.. rst-class:: classref-property + +:ref:`bool` **carve_navigation_mesh** = ``false`` + +.. rst-class:: classref-property-setget + +- |void| **set_carve_navigation_mesh**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **get_carve_navigation_mesh**\ (\ ) + +If enabled the obstacle vertices will carve into the baked navigation mesh with the shape unaffected by additional offsets (e.g. agent radius). + +It will still be affected by further postprocessing of the baking process, like edge and polygon simplification. + +Requires :ref:`affect_navigation_mesh` to be enabled. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationObstacle2D_property_radius: .. rst-class:: classref-property diff --git a/classes/class_navigationobstacle3d.rst b/classes/class_navigationobstacle3d.rst index a1fa2f8a6c1c..d3904f48afd6 100644 --- a/classes/class_navigationobstacle3d.rst +++ b/classes/class_navigationobstacle3d.rst @@ -14,20 +14,18 @@ NavigationObstacle3D **Inherits:** :ref:`Node3D` **<** :ref:`Node` **<** :ref:`Object` -3D Obstacle used in navigation to constrain avoidance controlled agents outside or inside an area. +3D obstacle used to affect navigation mesh baking or constrain velocities of avoidance controlled agents. .. rst-class:: classref-introduction-group Description ----------- -3D Obstacle used in navigation to constrain avoidance controlled agents outside or inside an area. The obstacle needs a navigation map and outline vertices defined to work correctly. +An obstacle needs a navigation map and outline :ref:`vertices` defined to work correctly. The outlines can not cross or overlap and are restricted to a plane projection. This means the y-axis of the vertices is ignored, instead the obstacle's global y-axis position is used for placement. The projected shape is extruded by the obstacles height along the y-axis. -If the obstacle's vertices are winded in clockwise order, avoidance agents will be pushed in by the obstacle, otherwise, avoidance agents will be pushed out. Outlines must not cross or overlap. +Obstacles can be included in the navigation mesh baking process when :ref:`affect_navigation_mesh` is enabled. They do not add walkable geometry, instead their role is to discard other source geometry inside the shape. This can be used to prevent navigation mesh from appearing in unwanted places, e.g. inside "solid" geometry or on top of it. If :ref:`carve_navigation_mesh` is enabled the baked shape will not be affected by offsets of the navigation mesh baking, e.g. the agent radius. -Obstacles are **not** a replacement for a (re)baked navigation mesh. Obstacles **don't** change the resulting path from the pathfinding, obstacles only affect the navigation avoidance agent movement by altering the suggested velocity of the avoidance agent. - -Obstacles using vertices can warp to a new position but should not moved every frame as each move requires a rebuild of the avoidance map. +With :ref:`avoidance_enabled` the obstacle can constrain the avoidance velocities of avoidance using agents. If the obstacle's vertices are wound in clockwise order, avoidance agents will be pushed in by the obstacle, otherwise, avoidance agents will be pushed out. Obstacles using vertices and avoidance can warp to a new position but should not be moved every single frame as each change requires a rebuild of the avoidance map. .. rst-class:: classref-introduction-group @@ -44,21 +42,25 @@ Properties .. table:: :widths: auto - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`bool` | :ref:`avoidance_enabled` | ``true`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`int` | :ref:`avoidance_layers` | ``1`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`float` | :ref:`height` | ``1.0`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`float` | :ref:`radius` | ``0.0`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`bool` | :ref:`use_3d_avoidance` | ``false`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`Vector3` | :ref:`velocity` | ``Vector3(0, 0, 0)`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ - | :ref:`PackedVector3Array` | :ref:`vertices` | ``PackedVector3Array()`` | - +-----------------------------------------------------+---------------------------------------------------------------------------------+--------------------------+ + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`affect_navigation_mesh` | ``false`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`avoidance_enabled` | ``true`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`int` | :ref:`avoidance_layers` | ``1`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`carve_navigation_mesh` | ``false`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`float` | :ref:`height` | ``1.0`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`float` | :ref:`radius` | ``0.0`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`bool` | :ref:`use_3d_avoidance` | ``false`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`Vector3` | :ref:`velocity` | ``Vector3(0, 0, 0)`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ + | :ref:`PackedVector3Array` | :ref:`vertices` | ``PackedVector3Array()`` | + +-----------------------------------------------------+-------------------------------------------------------------------------------------------+--------------------------+ .. rst-class:: classref-reftable-group @@ -89,6 +91,23 @@ Methods Property Descriptions --------------------- +.. _class_NavigationObstacle3D_property_affect_navigation_mesh: + +.. rst-class:: classref-property + +:ref:`bool` **affect_navigation_mesh** = ``false`` + +.. rst-class:: classref-property-setget + +- |void| **set_affect_navigation_mesh**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **get_affect_navigation_mesh**\ (\ ) + +If enabled and parsed in a navigation mesh baking process the obstacle will discard source geometry inside its :ref:`vertices` and :ref:`height` defined shape. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationObstacle3D_property_avoidance_enabled: .. rst-class:: classref-property @@ -123,6 +142,27 @@ A bitfield determining the avoidance layers for this obstacle. Agents with a mat ---- +.. _class_NavigationObstacle3D_property_carve_navigation_mesh: + +.. rst-class:: classref-property + +:ref:`bool` **carve_navigation_mesh** = ``false`` + +.. rst-class:: classref-property-setget + +- |void| **set_carve_navigation_mesh**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **get_carve_navigation_mesh**\ (\ ) + +If enabled the obstacle vertices will carve into the baked navigation mesh with the shape unaffected by additional offsets (e.g. agent radius). + +It will still be affected by further postprocessing of the baking process, like edge and polygon simplification. + +Requires :ref:`affect_navigation_mesh` to be enabled. + +.. rst-class:: classref-item-separator + +---- + .. _class_NavigationObstacle3D_property_height: .. rst-class:: classref-property diff --git a/classes/class_object.rst b/classes/class_object.rst index b52fc55c75eb..8efb61e77f47 100644 --- a/classes/class_object.rst +++ b/classes/class_object.rst @@ -121,6 +121,8 @@ Methods +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`StringName`\] | :ref:`get_meta_list`\ (\ ) |const| | +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`get_method_argument_count`\ (\ method\: :ref:`StringName`\ ) |const| | + +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`get_method_list`\ (\ ) |const| | +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`get_property_list`\ (\ ) |const| | @@ -1230,6 +1232,20 @@ Returns the object's metadata entry names as a :ref:`PackedStringArray` **get_method_argument_count**\ (\ method\: :ref:`StringName`\ ) |const| + +Returns the number of arguments of the given ``method`` by name. + +\ **Note:** In C#, ``method`` must be in snake_case when referring to built-in Godot methods. Prefer using the names exposed in the ``MethodName`` class to avoid allocating a new :ref:`StringName` on each call. + +.. rst-class:: classref-item-separator + +---- + .. _class_Object_method_get_method_list: .. rst-class:: classref-method diff --git a/classes/class_openxrextensionwrapperextension.rst b/classes/class_openxrextensionwrapperextension.rst index 7c49ac548a3a..c26df4efbc86 100644 --- a/classes/class_openxrextensionwrapperextension.rst +++ b/classes/class_openxrextensionwrapperextension.rst @@ -30,7 +30,11 @@ Methods :widths: auto +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_get_composition_layer`\ (\ ) |virtual| | + | :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| | +-----------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -98,9 +102,39 @@ Method Descriptions .. rst-class:: classref-method -:ref:`int` **_get_composition_layer**\ (\ ) |virtual| +:ref:`int` **_get_composition_layer**\ (\ index\: :ref:`int`\ ) |virtual| + +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| + +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| + +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``. -Returns a pointer to a ``XrCompositionLayerBaseHeader`` struct to provide a composition layer. This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_composition_layer_provider`. +This will only be called if the extension previously registered itself with :ref:`OpenXRAPIExtension.register_composition_layer_provider`. .. rst-class:: classref-item-separator diff --git a/classes/class_popupmenu.rst b/classes/class_popupmenu.rst index d51ca65a8405..411df93de039 100644 --- a/classes/class_popupmenu.rst +++ b/classes/class_popupmenu.rst @@ -48,6 +48,8 @@ Properties +-------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------+ | :ref:`int` | :ref:`item_count` | ``0`` | +-------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`prefer_native_menu` | ``false`` | + +-------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------+ | :ref:`float` | :ref:`submenu_popup_delay` | ``0.3`` | +-------------------------------------------------+----------------------------------------------------------------------------------------------------+-----------+ | :ref:`SystemMenus` | :ref:`system_menu_id` | ``0`` | @@ -428,6 +430,23 @@ The number of items currently in the list. ---- +.. _class_PopupMenu_property_prefer_native_menu: + +.. rst-class:: classref-property + +:ref:`bool` **prefer_native_menu** = ``false`` + +.. rst-class:: classref-property-setget + +- |void| **set_prefer_native_menu**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **is_prefer_native_menu**\ (\ ) + +If ``true``, :ref:`MenuBar` will use native menu when supported. + +.. rst-class:: classref-item-separator + +---- + .. _class_PopupMenu_property_submenu_popup_delay: .. rst-class:: classref-property diff --git a/classes/class_projectsettings.rst b/classes/class_projectsettings.rst index 428539ef2ce9..cb1c251bd636 100644 --- a/classes/class_projectsettings.rst +++ b/classes/class_projectsettings.rst @@ -2090,7 +2090,7 @@ Limiting the FPS can be useful to reduce system power consumption, which reduces If :ref:`display/window/vsync/vsync_mode` is set to ``Enabled`` or ``Adaptive``, it takes precedence and the forced FPS number cannot exceed the monitor's refresh rate. -If :ref:`display/window/vsync/vsync_mode` is ``Enabled``, on monitors with variable refresh rate enabled (G-Sync/FreeSync), using a FPS limit a few frames lower than the monitor's refresh rate will `reduce input lag while avoiding tearing `__. +If :ref:`display/window/vsync/vsync_mode` is ``Enabled``, on monitors with variable refresh rate enabled (G-Sync/FreeSync), using an FPS limit a few frames lower than the monitor's refresh rate will `reduce input lag while avoiding tearing `__. If :ref:`display/window/vsync/vsync_mode` is ``Disabled``, limiting the FPS to a high value that can be consistently reached on the system can reduce input lag compared to an uncapped framerate. Since this works by ensuring the GPU load is lower than 100%, this latency reduction is only effective in GPU-bottlenecked scenarios, not CPU-bottlenecked scenarios. @@ -2530,6 +2530,8 @@ When set to ``warn`` or ``error``, produces a warning or an error respectively w :ref:`int` **debug/gdscript/warnings/constant_used_as_function** = ``1`` +**Deprecated:** This warning is never produced. Instead, an error is generated if the expression type is known at compile time. + When set to ``warn`` or ``error``, produces a warning or an error respectively when a constant is used as a function. .. rst-class:: classref-item-separator @@ -2544,6 +2546,8 @@ When set to ``warn`` or ``error``, produces a warning or an error respectively w When set to ``warn`` or ``error``, produces a warning or an error respectively when deprecated keywords are used. +\ **Note:** There are currently no deprecated keywords, so this warning is never produced. + .. rst-class:: classref-item-separator ---- @@ -2590,6 +2594,8 @@ If ``true``, scripts in the ``res://addons`` folder will not generate warnings. :ref:`int` **debug/gdscript/warnings/function_used_as_property** = ``1`` +**Deprecated:** This warning is never produced. When a function is used as a property, a :ref:`Callable` is returned. + When set to ``warn`` or ``error``, produces a warning or an error respectively when using a function as if it is a property. .. rst-class:: classref-item-separator @@ -2724,6 +2730,8 @@ When set to ``warn`` or ``error``, produces a warning or an error respectively w :ref:`int` **debug/gdscript/warnings/property_used_as_function** = ``1`` +**Deprecated:** This warning is never produced. Instead, an error is generated if the expression type is known at compile time. + When set to ``warn`` or ``error``, produces a warning or an error respectively when using a property as if it is a function. .. rst-class:: classref-item-separator @@ -3014,7 +3022,7 @@ When set to ``warn`` or ``error``, produces a warning or an error respectively w :ref:`int` **debug/gdscript/warnings/unused_signal** = ``1`` -When set to ``warn`` or ``error``, produces a warning or an error respectively when a signal is declared but never emitted. +When set to ``warn`` or ``error``, produces a warning or an error respectively when a signal is declared but never explicitly used in the class. .. rst-class:: classref-item-separator @@ -4420,7 +4428,7 @@ The command-line arguments to append to Godot's own command line when running th It is possible to make another executable run Godot by using the ``%command%`` placeholder. The placeholder will be replaced with Godot's own command line. Program-specific arguments should be placed *before* the placeholder, whereas Godot-specific arguments should be placed *after* the placeholder. -For example, this can be used to force the project to run on the dedicated GPU in a NVIDIA Optimus system on Linux: +For example, this can be used to force the project to run on the dedicated GPU in an NVIDIA Optimus system on Linux: :: @@ -4528,7 +4536,7 @@ Override for :ref:`filesystem/import/blender/enabled`. +This requires configuring a path to an FBX2glTF executable in the editor settings at :ref:`EditorSettings.filesystem/import/fbx2gltf/fbx2gltf_path`. .. rst-class:: classref-item-separator diff --git a/classes/class_raycast2d.rst b/classes/class_raycast2d.rst index 8498461d05a6..3a0f4eae9481 100644 --- a/classes/class_raycast2d.rst +++ b/classes/class_raycast2d.rst @@ -335,6 +335,8 @@ Returns whether or not the specified layer of the :ref:`collision_mask` is ``true``. +\ **Note:** Check that :ref:`is_colliding` returns ``true`` before calling this method to ensure the returned normal is valid and up-to-date. + .. rst-class:: classref-item-separator ---- @@ -345,9 +347,9 @@ Returns the normal of the intersecting object's shape at the collision point, or :ref:`Vector2` **get_collision_point**\ (\ ) |const| -Returns the collision point at which the ray intersects the closest object. If :ref:`hit_from_inside` is ``true`` and the ray starts inside of a collision shape, this function will return the origin point of the ray. +Returns the collision point at which the ray intersects the closest object, in the global coordinate system. If :ref:`hit_from_inside` is ``true`` and the ray starts inside of a collision shape, this function will return the origin point of the ray. -\ **Note:** This point is in the **global** coordinate system. +\ **Note:** Check that :ref:`is_colliding` returns ``true`` before calling this method to ensure the returned point is valid and up-to-date. .. rst-class:: classref-item-separator diff --git a/classes/class_raycast3d.rst b/classes/class_raycast3d.rst index 9b67b07195a9..87feae9097fd 100644 --- a/classes/class_raycast3d.rst +++ b/classes/class_raycast3d.rst @@ -410,6 +410,8 @@ Returns whether or not the specified layer of the :ref:`collision_mask` is ``true``. +\ **Note:** Check that :ref:`is_colliding` returns ``true`` before calling this method to ensure the returned normal is valid and up-to-date. + .. rst-class:: classref-item-separator ---- @@ -420,9 +422,9 @@ Returns the normal of the intersecting object's shape at the collision point, or :ref:`Vector3` **get_collision_point**\ (\ ) |const| -Returns the collision point at which the ray intersects the closest object. If :ref:`hit_from_inside` is ``true`` and the ray starts inside of a collision shape, this function will return the origin point of the ray. +Returns the collision point at which the ray intersects the closest object, in the global coordinate system. If :ref:`hit_from_inside` is ``true`` and the ray starts inside of a collision shape, this function will return the origin point of the ray. -\ **Note:** This point is in the **global** coordinate system. +\ **Note:** Check that :ref:`is_colliding` returns ``true`` before calling this method to ensure the returned point is valid and up-to-date. .. rst-class:: classref-item-separator diff --git a/classes/class_renderingserver.rst b/classes/class_renderingserver.rst index 8495c35494ff..b73a753b98d8 100644 --- a/classes/class_renderingserver.rst +++ b/classes/class_renderingserver.rst @@ -11568,7 +11568,7 @@ If ``true``, enables debanding on the specified viewport. Equivalent to :ref:`Pr |void| **viewport_set_use_hdr_2d**\ (\ viewport\: :ref:`RID`, enabled\: :ref:`bool`\ ) -If ``true``, 2D rendering will use a high dynamic range (HDR) format framebuffer matching the bit depth of the 3D framebuffer. When using the Forward+ renderer this will be a ``RGBA16`` framebuffer, while when using the Mobile renderer it will be a ``RGB10_A2`` framebuffer. Additionally, 2D rendering will take place in linear color space and will be converted to sRGB space immediately before blitting to the screen (if the Viewport is attached to the screen). Practically speaking, this means that the end result of the Viewport will not be clamped into the ``0-1`` range and can be used in 3D rendering without color space adjustments. This allows 2D rendering to take advantage of effects requiring high dynamic range (e.g. 2D glow) as well as substantially improves the appearance of effects requiring highly detailed gradients. This setting has the same effect as :ref:`Viewport.use_hdr_2d`. +If ``true``, 2D rendering will use a high dynamic range (HDR) format framebuffer matching the bit depth of the 3D framebuffer. When using the Forward+ renderer this will be an ``RGBA16`` framebuffer, while when using the Mobile renderer it will be an ``RGB10_A2`` framebuffer. Additionally, 2D rendering will take place in linear color space and will be converted to sRGB space immediately before blitting to the screen (if the Viewport is attached to the screen). Practically speaking, this means that the end result of the Viewport will not be clamped into the ``0-1`` range and can be used in 3D rendering without color space adjustments. This allows 2D rendering to take advantage of effects requiring high dynamic range (e.g. 2D glow) as well as substantially improves the appearance of effects requiring highly detailed gradients. This setting has the same effect as :ref:`Viewport.use_hdr_2d`. \ **Note:** This setting will have no effect when using the GL Compatibility renderer as the GL Compatibility renderer always renders in low dynamic range for performance reasons. diff --git a/classes/class_resourceimporterdynamicfont.rst b/classes/class_resourceimporterdynamicfont.rst index 1ce20bfc5035..8b4103bfc8db 100644 --- a/classes/class_resourceimporterdynamicfont.rst +++ b/classes/class_resourceimporterdynamicfont.rst @@ -47,6 +47,8 @@ Properties +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`compress` | ``true`` | +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ + | :ref:`bool` | :ref:`disable_embedded_bitmaps` | ``true`` | + +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`Array` | :ref:`fallbacks` | ``[]`` | +-------------------------------------+--------------------------------------------------------------------------------------------------------------------------+-----------+ | :ref:`bool` | :ref:`force_autohinter` | ``false`` | @@ -127,6 +129,18 @@ If ``true``, uses lossless compression for the resulting font. ---- +.. _class_ResourceImporterDynamicFont_property_disable_embedded_bitmaps: + +.. rst-class:: classref-property + +:ref:`bool` **disable_embedded_bitmaps** = ``true`` + +If set to ``true``, embedded font bitmap loading is disabled (bitmap-only and color fonts ignore this property). + +.. rst-class:: classref-item-separator + +---- + .. _class_ResourceImporterDynamicFont_property_fallbacks: .. rst-class:: classref-property diff --git a/classes/class_resourceimportermp3.rst b/classes/class_resourceimportermp3.rst index 36d7bc9f4cbb..919b2f8dd918 100644 --- a/classes/class_resourceimportermp3.rst +++ b/classes/class_resourceimportermp3.rst @@ -12,7 +12,7 @@ ResourceImporterMP3 **Inherits:** :ref:`ResourceImporter` **<** :ref:`RefCounted` **<** :ref:`Object` -Imports a MP3 audio file for playback. +Imports an MP3 audio file for playback. .. rst-class:: classref-introduction-group @@ -21,7 +21,7 @@ Description MP3 is a lossy audio format, with worse audio quality compared to :ref:`ResourceImporterOggVorbis` at a given bitrate. -In most cases, it's recommended to use Ogg Vorbis over MP3. However, if you're using a MP3 sound source with no higher quality source available, then it's recommended to use the MP3 file directly to avoid double lossy compression. +In most cases, it's recommended to use Ogg Vorbis over MP3. However, if you're using an MP3 sound source with no higher quality source available, then it's recommended to use the MP3 file directly to avoid double lossy compression. MP3 requires more CPU to decode than :ref:`ResourceImporterWAV`. If you need to play a lot of simultaneous sounds, it's recommended to use WAV for those sounds instead, especially if targeting low-end devices. diff --git a/classes/class_resourceimporteroggvorbis.rst b/classes/class_resourceimporteroggvorbis.rst index 78dfc1c5c8dd..db1720f0a798 100644 --- a/classes/class_resourceimporteroggvorbis.rst +++ b/classes/class_resourceimporteroggvorbis.rst @@ -21,7 +21,7 @@ Description Ogg Vorbis is a lossy audio format, with better audio quality compared to :ref:`ResourceImporterMP3` at a given bitrate. -In most cases, it's recommended to use Ogg Vorbis over MP3. However, if you're using a MP3 sound source with no higher quality source available, then it's recommended to use the MP3 file directly to avoid double lossy compression. +In most cases, it's recommended to use Ogg Vorbis over MP3. However, if you're using an MP3 sound source with no higher quality source available, then it's recommended to use the MP3 file directly to avoid double lossy compression. Ogg Vorbis requires more CPU to decode than :ref:`ResourceImporterWAV`. If you need to play a lot of simultaneous sounds, it's recommended to use WAV for those sounds instead, especially if targeting low-end devices. diff --git a/classes/class_scriptextension.rst b/classes/class_scriptextension.rst index 07c2d80efae3..ceca4119e46f 100644 --- a/classes/class_scriptextension.rst +++ b/classes/class_scriptextension.rst @@ -24,77 +24,79 @@ Methods .. table:: :widths: auto - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_can_instantiate`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_editor_can_reload_from_file`\ (\ ) |virtual| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Script` | :ref:`_get_base_script`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_get_class_icon_path`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_get_constants`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`_get_documentation`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`StringName` | :ref:`_get_global_name`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`StringName` | :ref:`_get_instance_base_type`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`ScriptLanguage` | :ref:`_get_language`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`int` | :ref:`_get_member_line`\ (\ member\: :ref:`StringName`\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`StringName`\] | :ref:`_get_members`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Dictionary` | :ref:`_get_method_info`\ (\ method\: :ref:`StringName`\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`_get_property_default_value`\ (\ property\: :ref:`StringName`\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Variant` | :ref:`_get_rpc_config`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`_get_script_method_list`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`_get_script_property_list`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`_get_script_signal_list`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_get_source_code`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_has_method`\ (\ method\: :ref:`StringName`\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_has_property_default_value`\ (\ property\: :ref:`StringName`\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_has_script_signal`\ (\ signal\: :ref:`StringName`\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_has_source_code`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_has_static_method`\ (\ method\: :ref:`StringName`\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_inherits_script`\ (\ script\: :ref:`Script`\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | ``void*`` | :ref:`_instance_create`\ (\ for_object\: :ref:`Object`\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_instance_has`\ (\ object\: :ref:`Object`\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_is_abstract`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_is_placeholder_fallback_enabled`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_is_tool`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`bool` | :ref:`_is_valid`\ (\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_placeholder_erased`\ (\ placeholder\: ``void*``\ ) |virtual| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | ``void*`` | :ref:`_placeholder_instance_create`\ (\ for_object\: :ref:`Object`\ ) |virtual| |const| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`Error` | :ref:`_reload`\ (\ keep_state\: :ref:`bool`\ ) |virtual| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_set_source_code`\ (\ code\: :ref:`String`\ ) |virtual| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | |void| | :ref:`_update_exports`\ (\ ) |virtual| | - +------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_can_instantiate`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_editor_can_reload_from_file`\ (\ ) |virtual| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Script` | :ref:`_get_base_script`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_get_class_icon_path`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_get_constants`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`_get_documentation`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`StringName` | :ref:`_get_global_name`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`StringName` | :ref:`_get_instance_base_type`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`ScriptLanguage` | :ref:`_get_language`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`int` | :ref:`_get_member_line`\ (\ member\: :ref:`StringName`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`StringName`\] | :ref:`_get_members`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Dictionary` | :ref:`_get_method_info`\ (\ method\: :ref:`StringName`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`_get_property_default_value`\ (\ property\: :ref:`StringName`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`_get_rpc_config`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Variant` | :ref:`_get_script_method_argument_count`\ (\ method\: :ref:`StringName`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`_get_script_method_list`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`_get_script_property_list`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Array`\[:ref:`Dictionary`\] | :ref:`_get_script_signal_list`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`String` | :ref:`_get_source_code`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_has_method`\ (\ method\: :ref:`StringName`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_has_property_default_value`\ (\ property\: :ref:`StringName`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_has_script_signal`\ (\ signal\: :ref:`StringName`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_has_source_code`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_has_static_method`\ (\ method\: :ref:`StringName`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_inherits_script`\ (\ script\: :ref:`Script`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ``void*`` | :ref:`_instance_create`\ (\ for_object\: :ref:`Object`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_instance_has`\ (\ object\: :ref:`Object`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_is_abstract`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_is_placeholder_fallback_enabled`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_is_tool`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`bool` | :ref:`_is_valid`\ (\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_placeholder_erased`\ (\ placeholder\: ``void*``\ ) |virtual| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ``void*`` | :ref:`_placeholder_instance_create`\ (\ for_object\: :ref:`Object`\ ) |virtual| |const| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | :ref:`Error` | :ref:`_reload`\ (\ keep_state\: :ref:`bool`\ ) |virtual| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_set_source_code`\ (\ code\: :ref:`String`\ ) |virtual| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | |void| | :ref:`_update_exports`\ (\ ) |virtual| | + +------------------------------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator @@ -301,6 +303,18 @@ Method Descriptions ---- +.. _class_ScriptExtension_private_method__get_script_method_argument_count: + +.. rst-class:: classref-method + +:ref:`Variant` **_get_script_method_argument_count**\ (\ method\: :ref:`StringName`\ ) |virtual| |const| + +Return the expected argument count for the given ``method``, or ``null`` if it can't be determined (which will then fall back to the default behavior). + +.. rst-class:: classref-item-separator + +---- + .. _class_ScriptExtension_private_method__get_script_method_list: .. rst-class:: classref-method diff --git a/classes/class_surfacetool.rst b/classes/class_surfacetool.rst index c135c29b7cdf..ce3104e5e139 100644 --- a/classes/class_surfacetool.rst +++ b/classes/class_surfacetool.rst @@ -401,7 +401,7 @@ Removes the index array by expanding the vertex array. **Deprecated:** This method is unused internally, as it does not preserve normals or UVs. Consider using :ref:`ImporterMesh.generate_lods` instead. -Generates a LOD for a given ``nd_threshold`` in linear units (square root of quadric error metric), using at most ``target_index_count`` indices. +Generates an LOD for a given ``nd_threshold`` in linear units (square root of quadric error metric), using at most ``target_index_count`` indices. .. rst-class:: classref-item-separator diff --git a/classes/class_systemfont.rst b/classes/class_systemfont.rst index 75caadcbee40..81de38285822 100644 --- a/classes/class_systemfont.rst +++ b/classes/class_systemfont.rst @@ -42,6 +42,8 @@ Properties +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`FontAntialiasing` | :ref:`antialiasing` | ``1`` | +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ + | :ref:`bool` | :ref:`disable_embedded_bitmaps` | ``true`` | + +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`bool` | :ref:`font_italic` | ``false`` | +-----------------------------------------------------------------+---------------------------------------------------------------------------------------------------------+-------------------------+ | :ref:`PackedStringArray` | :ref:`font_names` | ``PackedStringArray()`` | @@ -110,6 +112,23 @@ Font anti-aliasing mode. ---- +.. _class_SystemFont_property_disable_embedded_bitmaps: + +.. rst-class:: classref-property + +:ref:`bool` **disable_embedded_bitmaps** = ``true`` + +.. rst-class:: classref-property-setget + +- |void| **set_disable_embedded_bitmaps**\ (\ value\: :ref:`bool`\ ) +- :ref:`bool` **get_disable_embedded_bitmaps**\ (\ ) + +If set to ``true``, embedded font bitmap loading is disabled (bitmap-only and color fonts ignore this property). + +.. rst-class:: classref-item-separator + +---- + .. _class_SystemFont_property_font_italic: .. rst-class:: classref-property diff --git a/classes/class_textserver.rst b/classes/class_textserver.rst index 76d65a94af35..9e01fdfd3bc4 100644 --- a/classes/class_textserver.rst +++ b/classes/class_textserver.rst @@ -62,6 +62,8 @@ Methods +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :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| | @@ -194,6 +196,8 @@ Methods +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |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`\ ) | @@ -358,6 +362,10 @@ Methods +------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :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| | @@ -1575,7 +1583,7 @@ Creates a new variation existing font which is reusing the same glyph cache and :ref:`RID` **create_shaped_text**\ (\ direction\: :ref:`Direction` = 0, orientation\: :ref:`Orientation` = 0\ ) -Creates new buffer for complex text layout, with the given ``direction`` and ``orientation``. To free the resulting buffer, use :ref:`free_rid` method. +Creates a new buffer for complex text layout, with the given ``direction`` and ``orientation``. To free the resulting buffer, use :ref:`free_rid` method. \ **Note:** Direction is ignored if server does not support :ref:`FEATURE_BIDI_LAYOUT` feature (supported by :ref:`TextServerAdvanced`). @@ -1603,7 +1611,7 @@ Draws box displaying character hexadecimal code. Used for replacing missing char |void| **font_clear_glyphs**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) -Removes all rendered glyphs information from the cache entry. +Removes all rendered glyph information from the cache entry. \ **Note:** This function will not remove textures associated with the glyphs, use :ref:`font_remove_texture` to remove them manually. @@ -1741,6 +1749,18 @@ Returns the font descent (number of pixels below the baseline). ---- +.. _class_TextServer_method_font_get_disable_embedded_bitmaps: + +.. rst-class:: classref-method + +:ref:`bool` **font_get_disable_embedded_bitmaps**\ (\ font_rid\: :ref:`RID`\ ) |const| + +Returns whether the font's embedded bitmap loading is disabled. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServer_method_font_get_embolden: .. rst-class:: classref-method @@ -2549,6 +2569,18 @@ Sets the font descent (number of pixels below the baseline). ---- +.. _class_TextServer_method_font_set_disable_embedded_bitmaps: + +.. rst-class:: classref-method + +|void| **font_set_disable_embedded_bitmaps**\ (\ font_rid\: :ref:`RID`, disable_embedded_bitmaps\: :ref:`bool`\ ) + +If set to ``true``, embedded font bitmap loading is disabled (bitmap-only and color fonts ignore this property). + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServer_method_font_set_embolden: .. rst-class:: classref-method @@ -2925,7 +2957,7 @@ Sets array containing glyph packing data. |void| **font_set_transform**\ (\ font_rid\: :ref:`RID`, transform\: :ref:`Transform2D`\ ) -Sets 2D transform, applied to the font outlines, can be used for slanting, flipping and rotating glyphs. +Sets 2D transform, applied to the font outlines, can be used for slanting, flipping, and rotating glyphs. For example, to simulate italic typeface by slanting, apply the following transform ``Transform2D(1.0, slant, 0.0, 1.0, 0.0, 0.0)``. @@ -3193,7 +3225,7 @@ Loads optional TextServer database (e.g. ICU break iterators and dictionaries). :ref:`int` **name_to_tag**\ (\ name\: :ref:`String`\ ) |const| -Converts readable feature, variation, script or language name to OpenType tag. +Converts readable feature, variation, script, or language name to OpenType tag. .. rst-class:: classref-item-separator @@ -3279,7 +3311,7 @@ Returns text span metadata. |void| **shaped_set_span_update_font**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary` = {}\ ) -Changes text span font, font size and OpenType features, without changing the text. +Changes text span font, font size, and OpenType features, without changing the text. .. rst-class:: classref-item-separator @@ -3577,6 +3609,30 @@ Breaks text to the lines and columns. Returns character ranges for each segment. ---- +.. _class_TextServer_method_shaped_text_get_object_glyph: + +.. rst-class:: classref-method + +:ref:`int` **shaped_text_get_object_glyph**\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |const| + +Returns the glyph index of the inline object. + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServer_method_shaped_text_get_object_range: + +.. rst-class:: classref-method + +:ref:`Vector2i` **shaped_text_get_object_range**\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |const| + +Returns the character range of the inline object. + +.. rst-class:: classref-item-separator + +---- + .. _class_TextServer_method_shaped_text_get_object_rect: .. rst-class:: classref-method @@ -4134,7 +4190,7 @@ Strips diacritics from the string. :ref:`String` **tag_to_name**\ (\ tag\: :ref:`int`\ ) |const| -Converts OpenType tag to readable feature, variation, script or language name. +Converts OpenType tag to readable feature, variation, script, or language name. .. |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_textserverextension.rst b/classes/class_textserverextension.rst index 7721d4167ea3..8b90346d1c11 100644 --- a/classes/class_textserverextension.rst +++ b/classes/class_textserverextension.rst @@ -64,6 +64,8 @@ Methods +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :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| | @@ -198,6 +200,8 @@ Methods +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |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| | @@ -272,7 +276,7 @@ Methods +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`Dictionary` | :ref:`_font_supported_variation_list`\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_format_number`\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | + | :ref:`String` | :ref:`_format_number`\ (\ number\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | |void| | :ref:`_free_rid`\ (\ rid\: :ref:`RID`\ ) |virtual| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -300,7 +304,7 @@ Methods +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :ref:`int` | :ref:`_name_to_tag`\ (\ name\: :ref:`String`\ ) |virtual| |const| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | :ref:`String` | :ref:`_parse_number`\ (\ string\: :ref:`String`, language\: :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| | +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -362,6 +366,10 @@ Methods +-----------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | :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| | @@ -468,9 +476,9 @@ Method Descriptions |void| **_cleanup**\ (\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +This method is called before text server is unregistered. .. rst-class:: classref-item-separator @@ -482,9 +490,9 @@ Method Descriptions :ref:`RID` **_create_font**\ (\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Creates a new, empty font cache entry resource. .. rst-class:: classref-item-separator @@ -496,9 +504,9 @@ Method Descriptions :ref:`RID` **_create_font_linked_variation**\ (\ font_rid\: :ref:`RID`\ ) |virtual| -.. container:: contribute +Optional, implement if font supports extra spacing or baseline offset. - There is currently no description for this method. Please help us by :ref:`contributing one `! +Creates a new variation existing font which is reusing the same glyph cache and font data. .. rst-class:: classref-item-separator @@ -510,9 +518,9 @@ Method Descriptions :ref:`RID` **_create_shaped_text**\ (\ direction\: :ref:`Direction`, orientation\: :ref:`Orientation`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Creates a new buffer for complex text layout, with the given ``direction`` and ``orientation``. .. rst-class:: classref-item-separator @@ -524,9 +532,9 @@ Method Descriptions |void| **_draw_hex_code_box**\ (\ canvas\: :ref:`RID`, size\: :ref:`int`, pos\: :ref:`Vector2`, index\: :ref:`int`, color\: :ref:`Color`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Draws box displaying character hexadecimal code. .. rst-class:: classref-item-separator @@ -538,9 +546,9 @@ Method Descriptions |void| **_font_clear_glyphs**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Removes all rendered glyph information from the cache entry. .. rst-class:: classref-item-separator @@ -552,9 +560,9 @@ Method Descriptions |void| **_font_clear_kerning_map**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Removes all kerning overrides. .. rst-class:: classref-item-separator @@ -566,9 +574,9 @@ Method Descriptions |void| **_font_clear_size_cache**\ (\ font_rid\: :ref:`RID`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Removes all font sizes from the cache entry. .. rst-class:: classref-item-separator @@ -580,9 +588,9 @@ Method Descriptions |void| **_font_clear_textures**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Removes all textures from font cache entry. .. rst-class:: classref-item-separator @@ -594,9 +602,9 @@ Method Descriptions |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| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Draws single glyph into a canvas item at the position, using ``font_rid`` at the size ``size``. .. rst-class:: classref-item-separator @@ -608,9 +616,9 @@ Method Descriptions |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| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Draws single glyph outline of size ``outline_size`` into a canvas item at the position, using ``font_rid`` at the size ``size``. .. rst-class:: classref-item-separator @@ -622,9 +630,9 @@ Method Descriptions :ref:`FontAntialiasing` **_font_get_antialiasing**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns font anti-aliasing mode. .. rst-class:: classref-item-separator @@ -636,9 +644,9 @@ Method Descriptions :ref:`float` **_font_get_ascent**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the font ascent (number of pixels above the baseline). .. rst-class:: classref-item-separator @@ -650,9 +658,9 @@ Method Descriptions :ref:`float` **_font_get_baseline_offset**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns extra baseline offset (as a fraction of font height). .. rst-class:: classref-item-separator @@ -664,9 +672,9 @@ Method Descriptions :ref:`int` **_font_get_char_from_glyph_index**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_index\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns character code associated with ``glyph_index``, or ``0`` if ``glyph_index`` is invalid. .. rst-class:: classref-item-separator @@ -678,9 +686,23 @@ Method Descriptions :ref:`float` **_font_get_descent**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the font descent (number of pixels below the baseline). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__font_get_disable_embedded_bitmaps: + +.. rst-class:: classref-method + +:ref:`bool` **_font_get_disable_embedded_bitmaps**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| + +**Optional.**\ + +Returns whether the font's embedded bitmap loading is disabled. .. rst-class:: classref-item-separator @@ -692,9 +714,9 @@ Method Descriptions :ref:`float` **_font_get_embolden**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns font embolden strength. .. rst-class:: classref-item-separator @@ -706,9 +728,9 @@ Method Descriptions :ref:`int` **_font_get_face_count**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns number of faces in the TrueType / OpenType collection. .. rst-class:: classref-item-separator @@ -720,9 +742,9 @@ Method Descriptions :ref:`int` **_font_get_face_index**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns an active face index in the TrueType / OpenType collection. .. rst-class:: classref-item-separator @@ -734,9 +756,9 @@ Method Descriptions :ref:`int` **_font_get_fixed_size**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns bitmap font fixed size. .. rst-class:: classref-item-separator @@ -748,9 +770,9 @@ Method Descriptions :ref:`FixedSizeScaleMode` **_font_get_fixed_size_scale_mode**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns bitmap font scaling mode. .. rst-class:: classref-item-separator @@ -762,9 +784,9 @@ Method Descriptions :ref:`bool` **_font_get_generate_mipmaps**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if font texture mipmap generation is enabled. .. rst-class:: classref-item-separator @@ -776,9 +798,9 @@ Method Descriptions :ref:`float` **_font_get_global_oversampling**\ (\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the font oversampling factor, shared by all fonts in the TextServer. .. rst-class:: classref-item-separator @@ -790,9 +812,9 @@ Method Descriptions :ref:`Vector2` **_font_get_glyph_advance**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns glyph advance (offset of the next glyph). .. rst-class:: classref-item-separator @@ -804,9 +826,9 @@ Method Descriptions :ref:`Dictionary` **_font_get_glyph_contours**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, index\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns outline contours of the glyph. .. rst-class:: classref-item-separator @@ -818,9 +840,9 @@ Method Descriptions :ref:`int` **_font_get_glyph_index**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, char\: :ref:`int`, variation_selector\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the glyph index of a ``char``, optionally modified by the ``variation_selector``. .. rst-class:: classref-item-separator @@ -832,9 +854,9 @@ Method Descriptions :ref:`PackedInt32Array` **_font_get_glyph_list**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns list of rendered glyphs in the cache entry. .. rst-class:: classref-item-separator @@ -846,9 +868,9 @@ Method Descriptions :ref:`Vector2` **_font_get_glyph_offset**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns glyph offset from the baseline. .. rst-class:: classref-item-separator @@ -860,9 +882,9 @@ Method Descriptions :ref:`Vector2` **_font_get_glyph_size**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns size of the glyph. .. rst-class:: classref-item-separator @@ -874,9 +896,9 @@ Method Descriptions :ref:`int` **_font_get_glyph_texture_idx**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns index of the cache texture containing the glyph. .. rst-class:: classref-item-separator @@ -888,9 +910,9 @@ Method Descriptions :ref:`RID` **_font_get_glyph_texture_rid**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns resource ID of the cache texture containing the glyph. .. rst-class:: classref-item-separator @@ -902,9 +924,9 @@ Method Descriptions :ref:`Vector2` **_font_get_glyph_texture_size**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns size of the cache texture containing the glyph. .. rst-class:: classref-item-separator @@ -916,9 +938,9 @@ Method Descriptions :ref:`Rect2` **_font_get_glyph_uv_rect**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns rectangle in the cache texture containing the glyph. .. rst-class:: classref-item-separator @@ -930,9 +952,9 @@ Method Descriptions :ref:`Hinting` **_font_get_hinting**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the font hinting mode. Used by dynamic fonts only. .. rst-class:: classref-item-separator @@ -944,9 +966,9 @@ Method Descriptions :ref:`Vector2` **_font_get_kerning**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns kerning for the pair of glyphs. .. rst-class:: classref-item-separator @@ -958,9 +980,9 @@ Method Descriptions :ref:`Array`\[:ref:`Vector2i`\] **_font_get_kerning_list**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns list of the kerning overrides. .. rst-class:: classref-item-separator @@ -972,9 +994,9 @@ Method Descriptions :ref:`bool` **_font_get_language_support_override**\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if support override is enabled for the ``language``. .. rst-class:: classref-item-separator @@ -986,9 +1008,9 @@ Method Descriptions :ref:`PackedStringArray` **_font_get_language_support_overrides**\ (\ font_rid\: :ref:`RID`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns list of language support overrides. .. rst-class:: classref-item-separator @@ -1000,9 +1022,9 @@ Method Descriptions :ref:`int` **_font_get_msdf_pixel_range**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the width of the range around the shape between the minimum and maximum representable signed distance. .. rst-class:: classref-item-separator @@ -1014,9 +1036,9 @@ Method Descriptions :ref:`int` **_font_get_msdf_size**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns source font size used to generate MSDF textures. .. rst-class:: classref-item-separator @@ -1028,9 +1050,9 @@ Method Descriptions :ref:`String` **_font_get_name**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns font family name. .. rst-class:: classref-item-separator @@ -1042,9 +1064,9 @@ Method Descriptions :ref:`Dictionary` **_font_get_opentype_feature_overrides**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns font OpenType feature set override. .. rst-class:: classref-item-separator @@ -1056,9 +1078,9 @@ Method Descriptions :ref:`Dictionary` **_font_get_ot_name_strings**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns :ref:`Dictionary` with OpenType font name strings (localized font names, version, description, license information, sample text, etc.). .. rst-class:: classref-item-separator @@ -1070,9 +1092,9 @@ Method Descriptions :ref:`float` **_font_get_oversampling**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns font oversampling factor, if set to ``0.0`` global oversampling factor is used instead. Used by dynamic fonts only. .. rst-class:: classref-item-separator @@ -1084,9 +1106,9 @@ Method Descriptions :ref:`float` **_font_get_scale**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns scaling factor of the color bitmap font. .. rst-class:: classref-item-separator @@ -1098,9 +1120,9 @@ Method Descriptions :ref:`bool` **_font_get_script_support_override**\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if support override is enabled for the ``script``. .. rst-class:: classref-item-separator @@ -1112,9 +1134,9 @@ Method Descriptions :ref:`PackedStringArray` **_font_get_script_support_overrides**\ (\ font_rid\: :ref:`RID`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns list of script support overrides. .. rst-class:: classref-item-separator @@ -1126,9 +1148,9 @@ Method Descriptions :ref:`Array`\[:ref:`Vector2i`\] **_font_get_size_cache_list**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns list of the font sizes in the cache. Each size is :ref:`Vector2i` with font size and outline size. .. rst-class:: classref-item-separator @@ -1140,9 +1162,9 @@ Method Descriptions :ref:`int` **_font_get_spacing**\ (\ font_rid\: :ref:`RID`, spacing\: :ref:`SpacingType`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the spacing for ``spacing`` (see :ref:`SpacingType`) in pixels (not relative to the font size). .. rst-class:: classref-item-separator @@ -1154,9 +1176,9 @@ Method Descriptions :ref:`int` **_font_get_stretch**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns font stretch amount, compared to a normal width. A percentage value between ``50%`` and ``200%``. .. rst-class:: classref-item-separator @@ -1168,9 +1190,9 @@ Method Descriptions |bitfield|\[:ref:`FontStyle`\] **_font_get_style**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns font style flags, see :ref:`FontStyle`. .. rst-class:: classref-item-separator @@ -1182,9 +1204,9 @@ Method Descriptions :ref:`String` **_font_get_style_name**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns font style name. .. rst-class:: classref-item-separator @@ -1196,9 +1218,9 @@ Method Descriptions :ref:`SubpixelPositioning` **_font_get_subpixel_positioning**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns font subpixel glyph positioning mode. .. rst-class:: classref-item-separator @@ -1210,9 +1232,9 @@ Method Descriptions :ref:`String` **_font_get_supported_chars**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns a string containing all the characters available in the font. .. rst-class:: classref-item-separator @@ -1224,9 +1246,9 @@ Method Descriptions :ref:`int` **_font_get_texture_count**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns number of textures used by font cache entry. .. rst-class:: classref-item-separator @@ -1238,9 +1260,9 @@ Method Descriptions :ref:`Image` **_font_get_texture_image**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns font cache texture image data. .. rst-class:: classref-item-separator @@ -1252,9 +1274,9 @@ Method Descriptions :ref:`PackedInt32Array` **_font_get_texture_offsets**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns array containing glyph packing data. .. rst-class:: classref-item-separator @@ -1266,9 +1288,9 @@ Method Descriptions :ref:`Transform2D` **_font_get_transform**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns 2D transform applied to the font outlines. .. rst-class:: classref-item-separator @@ -1280,9 +1302,9 @@ Method Descriptions :ref:`float` **_font_get_underline_position**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns pixel offset of the underline below the baseline. .. rst-class:: classref-item-separator @@ -1294,9 +1316,9 @@ Method Descriptions :ref:`float` **_font_get_underline_thickness**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns thickness of the underline in pixels. .. rst-class:: classref-item-separator @@ -1308,9 +1330,9 @@ Method Descriptions :ref:`Dictionary` **_font_get_variation_coordinates**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns variation coordinates for the specified font cache entry. .. rst-class:: classref-item-separator @@ -1322,9 +1344,9 @@ Method Descriptions :ref:`int` **_font_get_weight**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns weight (boldness) of the font. A value in the ``100...999`` range, normal font weight is ``400``, bold font weight is ``700``. .. rst-class:: classref-item-separator @@ -1336,9 +1358,9 @@ Method Descriptions :ref:`bool` **_font_has_char**\ (\ font_rid\: :ref:`RID`, char\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if a Unicode ``char`` is available in the font. .. rst-class:: classref-item-separator @@ -1350,9 +1372,9 @@ Method Descriptions :ref:`bool` **_font_is_allow_system_fallback**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if system fonts can be automatically used as fallbacks. .. rst-class:: classref-item-separator @@ -1364,9 +1386,9 @@ Method Descriptions :ref:`bool` **_font_is_force_autohinter**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if auto-hinting is supported and preferred over font built-in hinting. .. rst-class:: classref-item-separator @@ -1378,9 +1400,9 @@ Method Descriptions :ref:`bool` **_font_is_language_supported**\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true``, if font supports given language (`ISO 639 `__ code). .. rst-class:: classref-item-separator @@ -1392,9 +1414,9 @@ Method Descriptions :ref:`bool` **_font_is_multichannel_signed_distance_field**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if glyphs of all sizes are rendered using single multichannel signed distance field generated from the dynamic font vector data. .. rst-class:: classref-item-separator @@ -1406,9 +1428,9 @@ Method Descriptions :ref:`bool` **_font_is_script_supported**\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true``, if font supports given script (ISO 15924 code). .. rst-class:: classref-item-separator @@ -1420,9 +1442,9 @@ Method Descriptions |void| **_font_remove_glyph**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Removes specified rendered glyph information from the cache entry. .. rst-class:: classref-item-separator @@ -1434,9 +1456,9 @@ Method Descriptions |void| **_font_remove_kerning**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Removes kerning override for the pair of glyphs. .. rst-class:: classref-item-separator @@ -1448,9 +1470,9 @@ Method Descriptions |void| **_font_remove_language_support_override**\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Remove language support override. .. rst-class:: classref-item-separator @@ -1462,9 +1484,9 @@ Method Descriptions |void| **_font_remove_script_support_override**\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Removes script support override. .. rst-class:: classref-item-separator @@ -1476,9 +1498,9 @@ Method Descriptions |void| **_font_remove_size_cache**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Removes specified font size from the cache entry. .. rst-class:: classref-item-separator @@ -1490,9 +1512,9 @@ Method Descriptions |void| **_font_remove_texture**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Removes specified texture from the cache entry. .. rst-class:: classref-item-separator @@ -1504,9 +1526,9 @@ Method Descriptions |void| **_font_render_glyph**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, index\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Renders specified glyph to the font cache texture. .. rst-class:: classref-item-separator @@ -1518,9 +1540,9 @@ Method Descriptions |void| **_font_render_range**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, start\: :ref:`int`, end\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Renders the range of characters to the font cache texture. .. rst-class:: classref-item-separator @@ -1532,9 +1554,9 @@ Method Descriptions |void| **_font_set_allow_system_fallback**\ (\ font_rid\: :ref:`RID`, allow_system_fallback\: :ref:`bool`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +If set to ``true``, system fonts can be automatically used as fallbacks. .. rst-class:: classref-item-separator @@ -1546,9 +1568,9 @@ Method Descriptions |void| **_font_set_antialiasing**\ (\ font_rid\: :ref:`RID`, antialiasing\: :ref:`FontAntialiasing`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets font anti-aliasing mode. .. rst-class:: classref-item-separator @@ -1560,9 +1582,9 @@ Method Descriptions |void| **_font_set_ascent**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, ascent\: :ref:`float`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets the font ascent (number of pixels above the baseline). .. rst-class:: classref-item-separator @@ -1574,9 +1596,9 @@ Method Descriptions |void| **_font_set_baseline_offset**\ (\ font_rid\: :ref:`RID`, baseline_offset\: :ref:`float`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets extra baseline offset (as a fraction of font height). .. rst-class:: classref-item-separator @@ -1588,9 +1610,9 @@ Method Descriptions |void| **_font_set_data**\ (\ font_rid\: :ref:`RID`, data\: :ref:`PackedByteArray`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets font source data, e.g contents of the dynamic font source file. .. rst-class:: classref-item-separator @@ -1602,9 +1624,9 @@ Method Descriptions |void| **_font_set_data_ptr**\ (\ font_rid\: :ref:`RID`, data_ptr\: ``const uint8_t*``, data_size\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets pointer to the font source data, e.g contents of the dynamic font source file. .. rst-class:: classref-item-separator @@ -1616,9 +1638,23 @@ Method Descriptions |void| **_font_set_descent**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, descent\: :ref:`float`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets the font descent (number of pixels below the baseline). + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__font_set_disable_embedded_bitmaps: + +.. rst-class:: classref-method + +|void| **_font_set_disable_embedded_bitmaps**\ (\ font_rid\: :ref:`RID`, disable_embedded_bitmaps\: :ref:`bool`\ ) |virtual| + +**Optional.**\ + +If set to ``true``, embedded font bitmap loading is disabled. .. rst-class:: classref-item-separator @@ -1630,9 +1666,7 @@ Method Descriptions |void| **_font_set_embolden**\ (\ font_rid\: :ref:`RID`, strength\: :ref:`float`\ ) |virtual| -.. container:: contribute - - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets font embolden strength. If ``strength`` is not equal to zero, emboldens the font outlines. Negative values reduce the outline thickness. .. rst-class:: classref-item-separator @@ -1644,9 +1678,9 @@ Method Descriptions |void| **_font_set_face_index**\ (\ font_rid\: :ref:`RID`, face_index\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets an active face index in the TrueType / OpenType collection. .. rst-class:: classref-item-separator @@ -1658,9 +1692,9 @@ Method Descriptions |void| **_font_set_fixed_size**\ (\ font_rid\: :ref:`RID`, fixed_size\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets bitmap font fixed size. If set to value greater than zero, same cache entry will be used for all font sizes. .. rst-class:: classref-item-separator @@ -1672,9 +1706,9 @@ Method Descriptions |void| **_font_set_fixed_size_scale_mode**\ (\ font_rid\: :ref:`RID`, fixed_size_scale_mode\: :ref:`FixedSizeScaleMode`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets bitmap font scaling mode. This property is used only if ``fixed_size`` is greater than zero. .. rst-class:: classref-item-separator @@ -1686,9 +1720,9 @@ Method Descriptions |void| **_font_set_force_autohinter**\ (\ font_rid\: :ref:`RID`, force_autohinter\: :ref:`bool`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +If set to ``true`` auto-hinting is preferred over font built-in hinting. .. rst-class:: classref-item-separator @@ -1700,9 +1734,9 @@ Method Descriptions |void| **_font_set_generate_mipmaps**\ (\ font_rid\: :ref:`RID`, generate_mipmaps\: :ref:`bool`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +If set to ``true`` font texture mipmap generation is enabled. .. rst-class:: classref-item-separator @@ -1714,9 +1748,9 @@ Method Descriptions |void| **_font_set_global_oversampling**\ (\ oversampling\: :ref:`float`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets oversampling factor, shared by all font in the TextServer. .. rst-class:: classref-item-separator @@ -1728,9 +1762,9 @@ Method Descriptions |void| **_font_set_glyph_advance**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph\: :ref:`int`, advance\: :ref:`Vector2`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets glyph advance (offset of the next glyph). .. rst-class:: classref-item-separator @@ -1742,9 +1776,9 @@ Method Descriptions |void| **_font_set_glyph_offset**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, offset\: :ref:`Vector2`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets glyph offset from the baseline. .. rst-class:: classref-item-separator @@ -1756,9 +1790,9 @@ Method Descriptions |void| **_font_set_glyph_size**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, gl_size\: :ref:`Vector2`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets size of the glyph. .. rst-class:: classref-item-separator @@ -1770,9 +1804,9 @@ Method Descriptions |void| **_font_set_glyph_texture_idx**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, texture_idx\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets index of the cache texture containing the glyph. .. rst-class:: classref-item-separator @@ -1784,9 +1818,9 @@ Method Descriptions |void| **_font_set_glyph_uv_rect**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, glyph\: :ref:`int`, uv_rect\: :ref:`Rect2`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets rectangle in the cache texture containing the glyph. .. rst-class:: classref-item-separator @@ -1798,9 +1832,9 @@ Method Descriptions |void| **_font_set_hinting**\ (\ font_rid\: :ref:`RID`, hinting\: :ref:`Hinting`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets font hinting mode. Used by dynamic fonts only. .. rst-class:: classref-item-separator @@ -1812,9 +1846,9 @@ Method Descriptions |void| **_font_set_kerning**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, glyph_pair\: :ref:`Vector2i`, kerning\: :ref:`Vector2`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets kerning for the pair of glyphs. .. rst-class:: classref-item-separator @@ -1826,9 +1860,9 @@ Method Descriptions |void| **_font_set_language_support_override**\ (\ font_rid\: :ref:`RID`, language\: :ref:`String`, supported\: :ref:`bool`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Adds override for :ref:`_font_is_language_supported`. .. rst-class:: classref-item-separator @@ -1840,9 +1874,9 @@ Method Descriptions |void| **_font_set_msdf_pixel_range**\ (\ font_rid\: :ref:`RID`, msdf_pixel_range\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets the width of the range around the shape between the minimum and maximum representable signed distance. .. rst-class:: classref-item-separator @@ -1854,9 +1888,9 @@ Method Descriptions |void| **_font_set_msdf_size**\ (\ font_rid\: :ref:`RID`, msdf_size\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets source font size used to generate MSDF textures. .. rst-class:: classref-item-separator @@ -1868,9 +1902,9 @@ Method Descriptions |void| **_font_set_multichannel_signed_distance_field**\ (\ font_rid\: :ref:`RID`, msdf\: :ref:`bool`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +If set to ``true``, glyphs of all sizes are rendered using single multichannel signed distance field generated from the dynamic font vector data. MSDF rendering allows displaying the font at any scaling factor without blurriness, and without incurring a CPU cost when the font size changes (since the font no longer needs to be rasterized on the CPU). As a downside, font hinting is not available with MSDF. The lack of font hinting may result in less crisp and less readable fonts at small sizes. .. rst-class:: classref-item-separator @@ -1882,9 +1916,9 @@ Method Descriptions |void| **_font_set_name**\ (\ font_rid\: :ref:`RID`, name\: :ref:`String`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets the font family name. .. rst-class:: classref-item-separator @@ -1896,9 +1930,9 @@ Method Descriptions |void| **_font_set_opentype_feature_overrides**\ (\ font_rid\: :ref:`RID`, overrides\: :ref:`Dictionary`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets font OpenType feature set override. .. rst-class:: classref-item-separator @@ -1910,9 +1944,9 @@ Method Descriptions |void| **_font_set_oversampling**\ (\ font_rid\: :ref:`RID`, oversampling\: :ref:`float`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets font oversampling factor, if set to ``0.0`` global oversampling factor is used instead. Used by dynamic fonts only. .. rst-class:: classref-item-separator @@ -1924,9 +1958,9 @@ Method Descriptions |void| **_font_set_scale**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, scale\: :ref:`float`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets scaling factor of the color bitmap font. .. rst-class:: classref-item-separator @@ -1938,9 +1972,9 @@ Method Descriptions |void| **_font_set_script_support_override**\ (\ font_rid\: :ref:`RID`, script\: :ref:`String`, supported\: :ref:`bool`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Adds override for :ref:`_font_is_script_supported`. .. rst-class:: classref-item-separator @@ -1952,9 +1986,9 @@ Method Descriptions |void| **_font_set_spacing**\ (\ font_rid\: :ref:`RID`, spacing\: :ref:`SpacingType`, value\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets the spacing for ``spacing`` (see :ref:`SpacingType`) to ``value`` in pixels (not relative to the font size). .. rst-class:: classref-item-separator @@ -1966,9 +2000,9 @@ Method Descriptions |void| **_font_set_stretch**\ (\ font_rid\: :ref:`RID`, stretch\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets font stretch amount, compared to a normal width. A percentage value between ``50%`` and ``200%``. .. rst-class:: classref-item-separator @@ -1980,9 +2014,9 @@ Method Descriptions |void| **_font_set_style**\ (\ font_rid\: :ref:`RID`, style\: |bitfield|\[:ref:`FontStyle`\]\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets the font style flags, see :ref:`FontStyle`. .. rst-class:: classref-item-separator @@ -1994,9 +2028,9 @@ Method Descriptions |void| **_font_set_style_name**\ (\ font_rid\: :ref:`RID`, name_style\: :ref:`String`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets the font style name. .. rst-class:: classref-item-separator @@ -2008,9 +2042,9 @@ Method Descriptions |void| **_font_set_subpixel_positioning**\ (\ font_rid\: :ref:`RID`, subpixel_positioning\: :ref:`SubpixelPositioning`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets font subpixel glyph positioning mode. .. rst-class:: classref-item-separator @@ -2022,9 +2056,9 @@ Method Descriptions |void| **_font_set_texture_image**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`, image\: :ref:`Image`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets font cache texture image data. .. rst-class:: classref-item-separator @@ -2036,9 +2070,9 @@ Method Descriptions |void| **_font_set_texture_offsets**\ (\ font_rid\: :ref:`RID`, size\: :ref:`Vector2i`, texture_index\: :ref:`int`, offset\: :ref:`PackedInt32Array`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets array containing glyph packing data. .. rst-class:: classref-item-separator @@ -2050,9 +2084,9 @@ Method Descriptions |void| **_font_set_transform**\ (\ font_rid\: :ref:`RID`, transform\: :ref:`Transform2D`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets 2D transform, applied to the font outlines, can be used for slanting, flipping, and rotating glyphs. .. rst-class:: classref-item-separator @@ -2064,9 +2098,9 @@ Method Descriptions |void| **_font_set_underline_position**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, underline_position\: :ref:`float`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets pixel offset of the underline below the baseline. .. rst-class:: classref-item-separator @@ -2078,9 +2112,9 @@ Method Descriptions |void| **_font_set_underline_thickness**\ (\ font_rid\: :ref:`RID`, size\: :ref:`int`, underline_thickness\: :ref:`float`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets thickness of the underline in pixels. .. rst-class:: classref-item-separator @@ -2092,9 +2126,9 @@ Method Descriptions |void| **_font_set_variation_coordinates**\ (\ font_rid\: :ref:`RID`, variation_coordinates\: :ref:`Dictionary`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets variation coordinates for the specified font cache entry. .. rst-class:: classref-item-separator @@ -2106,9 +2140,9 @@ Method Descriptions |void| **_font_set_weight**\ (\ font_rid\: :ref:`RID`, weight\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets weight (boldness) of the font. A value in the ``100...999`` range, normal font weight is ``400``, bold font weight is ``700``. .. rst-class:: classref-item-separator @@ -2120,9 +2154,9 @@ Method Descriptions :ref:`Dictionary` **_font_supported_feature_list**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the dictionary of the supported OpenType features. .. rst-class:: classref-item-separator @@ -2134,9 +2168,9 @@ Method Descriptions :ref:`Dictionary` **_font_supported_variation_list**\ (\ font_rid\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the dictionary of the supported OpenType variation coordinates. .. rst-class:: classref-item-separator @@ -2146,11 +2180,11 @@ Method Descriptions .. rst-class:: classref-method -:ref:`String` **_format_number**\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| +:ref:`String` **_format_number**\ (\ number\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Converts a number from the Western Arabic (0..9) to the numeral systems used in ``language``. .. rst-class:: classref-item-separator @@ -2162,9 +2196,9 @@ Method Descriptions |void| **_free_rid**\ (\ rid\: :ref:`RID`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Frees an object created by this :ref:`TextServer`. .. rst-class:: classref-item-separator @@ -2176,9 +2210,9 @@ Method Descriptions :ref:`int` **_get_features**\ (\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns text server features, see :ref:`Feature`. .. rst-class:: classref-item-separator @@ -2190,9 +2224,9 @@ Method Descriptions :ref:`Vector2` **_get_hex_code_box_size**\ (\ size\: :ref:`int`, index\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns size of the replacement character (box with character hexadecimal code that is drawn in place of invalid characters). .. rst-class:: classref-item-separator @@ -2204,9 +2238,9 @@ Method Descriptions :ref:`String` **_get_name**\ (\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the name of the server interface. .. rst-class:: classref-item-separator @@ -2218,9 +2252,9 @@ Method Descriptions :ref:`String` **_get_support_data_filename**\ (\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns default TextServer database (e.g. ICU break iterators and dictionaries) filename. .. rst-class:: classref-item-separator @@ -2232,9 +2266,9 @@ Method Descriptions :ref:`String` **_get_support_data_info**\ (\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns TextServer database (e.g. ICU break iterators and dictionaries) description. .. rst-class:: classref-item-separator @@ -2246,9 +2280,9 @@ Method Descriptions :ref:`bool` **_has**\ (\ rid\: :ref:`RID`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if ``rid`` is valid resource owned by this text server. .. rst-class:: classref-item-separator @@ -2260,9 +2294,9 @@ Method Descriptions :ref:`bool` **_has_feature**\ (\ feature\: :ref:`Feature`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if the server supports a feature. .. rst-class:: classref-item-separator @@ -2274,9 +2308,9 @@ Method Descriptions :ref:`int` **_is_confusable**\ (\ string\: :ref:`String`, dict\: :ref:`PackedStringArray`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns index of the first string in ``dict`` which is visually confusable with the ``string``, or ``-1`` if none is found. .. rst-class:: classref-item-separator @@ -2288,9 +2322,9 @@ Method Descriptions :ref:`bool` **_is_locale_right_to_left**\ (\ locale\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if locale is right-to-left. .. rst-class:: classref-item-separator @@ -2302,9 +2336,9 @@ Method Descriptions :ref:`bool` **_is_valid_identifier**\ (\ string\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if ``string`` is a valid identifier. .. rst-class:: classref-item-separator @@ -2316,9 +2350,9 @@ Method Descriptions :ref:`bool` **_load_support_data**\ (\ filename\: :ref:`String`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Loads optional TextServer database (e.g. ICU break iterators and dictionaries). .. rst-class:: classref-item-separator @@ -2330,9 +2364,9 @@ Method Descriptions :ref:`int` **_name_to_tag**\ (\ name\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Converts readable feature, variation, script, or language name to OpenType tag. .. rst-class:: classref-item-separator @@ -2342,11 +2376,11 @@ Method Descriptions .. rst-class:: classref-method -:ref:`String` **_parse_number**\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| +:ref:`String` **_parse_number**\ (\ number\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Converts ``number`` from the numeral systems used in ``language`` to Western Arabic (0..9). .. rst-class:: classref-item-separator @@ -2358,9 +2392,9 @@ Method Descriptions :ref:`Array`\[:ref:`Vector3i`\] **_parse_structured_text**\ (\ parser_type\: :ref:`StructuredTextParser`, args\: :ref:`Array`, text\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Default implementation of the BiDi algorithm override function. See :ref:`StructuredTextParser` for more info. .. rst-class:: classref-item-separator @@ -2372,9 +2406,9 @@ Method Descriptions :ref:`String` **_percent_sign**\ (\ language\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns percent sign used in the ``language``. .. rst-class:: classref-item-separator @@ -2386,9 +2420,9 @@ Method Descriptions :ref:`bool` **_save_support_data**\ (\ filename\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Saves optional TextServer database (e.g. ICU break iterators and dictionaries) to the file. .. rst-class:: classref-item-separator @@ -2400,9 +2434,9 @@ Method Descriptions :ref:`int` **_shaped_get_span_count**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns number of text spans added using :ref:`_shaped_text_add_string` or :ref:`_shaped_text_add_object`. .. rst-class:: classref-item-separator @@ -2414,9 +2448,9 @@ Method Descriptions :ref:`Variant` **_shaped_get_span_meta**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns text span metadata. .. rst-class:: classref-item-separator @@ -2428,9 +2462,9 @@ Method Descriptions |void| **_shaped_set_span_update_font**\ (\ shaped\: :ref:`RID`, index\: :ref:`int`, fonts\: :ref:`Array`\[:ref:`RID`\], size\: :ref:`int`, opentype_features\: :ref:`Dictionary`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Changes text span font, font size, and OpenType features, without changing the text. .. rst-class:: classref-item-separator @@ -2442,9 +2476,9 @@ Method Descriptions :ref:`bool` **_shaped_text_add_object**\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment`, length\: :ref:`int`, baseline\: :ref:`float`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Adds inline object to the text buffer, ``key`` must be unique. In the text, object is represented as ``length`` object replacement characters. .. rst-class:: classref-item-separator @@ -2456,9 +2490,9 @@ Method Descriptions :ref:`bool` **_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| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Adds text span and font to draw it to the text buffer. .. rst-class:: classref-item-separator @@ -2470,9 +2504,9 @@ Method Descriptions |void| **_shaped_text_clear**\ (\ shaped\: :ref:`RID`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Clears text buffer (removes text and inline objects). .. rst-class:: classref-item-separator @@ -2484,9 +2518,9 @@ Method Descriptions :ref:`int` **_shaped_text_closest_character_pos**\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns composite character position closest to the ``pos``. .. rst-class:: classref-item-separator @@ -2498,9 +2532,9 @@ Method Descriptions |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| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +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). .. rst-class:: classref-item-separator @@ -2512,9 +2546,9 @@ Method Descriptions |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| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +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). .. rst-class:: classref-item-separator @@ -2526,9 +2560,9 @@ Method Descriptions :ref:`float` **_shaped_text_fit_to_width**\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, justification_flags\: |bitfield|\[:ref:`JustificationFlag`\]\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Adjusts text width to fit to specified width, returns new text width. .. rst-class:: classref-item-separator @@ -2540,9 +2574,9 @@ Method Descriptions :ref:`float` **_shaped_text_get_ascent**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the text ascent (number of pixels above the baseline for horizontal layout or to the left of baseline for vertical). .. rst-class:: classref-item-separator @@ -2554,9 +2588,9 @@ Method Descriptions |void| **_shaped_text_get_carets**\ (\ shaped\: :ref:`RID`, position\: :ref:`int`, caret\: ``CaretInfo*``\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns shapes of the carets corresponding to the character offset ``position`` in the text. Returned caret shape is 1 pixel wide rectangle. .. rst-class:: classref-item-separator @@ -2568,9 +2602,9 @@ Method Descriptions :ref:`PackedInt32Array` **_shaped_text_get_character_breaks**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns array of the composite character boundaries. .. rst-class:: classref-item-separator @@ -2582,9 +2616,9 @@ Method Descriptions :ref:`int` **_shaped_text_get_custom_ellipsis**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ellipsis character used for text clipping. .. rst-class:: classref-item-separator @@ -2596,9 +2630,9 @@ Method Descriptions :ref:`String` **_shaped_text_get_custom_punctuation**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns custom punctuation character list, used for word breaking. If set to empty string, server defaults are used. .. rst-class:: classref-item-separator @@ -2610,9 +2644,9 @@ Method Descriptions :ref:`float` **_shaped_text_get_descent**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the text descent (number of pixels below the baseline for horizontal layout or to the right of baseline for vertical). .. rst-class:: classref-item-separator @@ -2624,9 +2658,9 @@ Method Descriptions :ref:`Direction` **_shaped_text_get_direction**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns direction of the text. .. rst-class:: classref-item-separator @@ -2638,9 +2672,9 @@ Method Descriptions :ref:`int` **_shaped_text_get_dominant_direction_in_range**\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, end\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns dominant direction of in the range of text. .. rst-class:: classref-item-separator @@ -2652,9 +2686,9 @@ Method Descriptions :ref:`int` **_shaped_text_get_ellipsis_glyph_count**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns number of glyphs in the ellipsis. .. rst-class:: classref-item-separator @@ -2666,9 +2700,9 @@ Method Descriptions ``const Glyph*`` **_shaped_text_get_ellipsis_glyphs**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns array of the glyphs in the ellipsis. .. rst-class:: classref-item-separator @@ -2680,9 +2714,9 @@ Method Descriptions :ref:`int` **_shaped_text_get_ellipsis_pos**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns position of the ellipsis. .. rst-class:: classref-item-separator @@ -2694,9 +2728,9 @@ Method Descriptions :ref:`int` **_shaped_text_get_glyph_count**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns number of glyphs in the buffer. .. rst-class:: classref-item-separator @@ -2708,9 +2742,9 @@ Method Descriptions ``const Glyph*`` **_shaped_text_get_glyphs**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns an array of glyphs in the visual order. .. rst-class:: classref-item-separator @@ -2722,9 +2756,9 @@ Method Descriptions :ref:`Vector2` **_shaped_text_get_grapheme_bounds**\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns composite character's bounds as offsets from the start of the line. .. rst-class:: classref-item-separator @@ -2736,9 +2770,9 @@ Method Descriptions :ref:`Direction` **_shaped_text_get_inferred_direction**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns direction of the text, inferred by the BiDi algorithm. .. rst-class:: classref-item-separator @@ -2750,9 +2784,9 @@ Method Descriptions :ref:`PackedInt32Array` **_shaped_text_get_line_breaks**\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, start\: :ref:`int`, break_flags\: |bitfield|\[:ref:`LineBreakFlag`\]\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Breaks text to the lines and returns character ranges for each line. .. rst-class:: classref-item-separator @@ -2764,9 +2798,37 @@ Method Descriptions :ref:`PackedInt32Array` **_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| -.. container:: contribute +**Optional.**\ + +Breaks text to the lines and columns. Returns character ranges for each segment. + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__shaped_text_get_object_glyph: + +.. rst-class:: classref-method + +:ref:`int` **_shaped_text_get_object_glyph**\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |virtual| |const| + +**Required.**\ + +Returns the glyph index of the inline object. + +.. rst-class:: classref-item-separator + +---- + +.. _class_TextServerExtension_private_method__shaped_text_get_object_range: + +.. rst-class:: classref-method + +:ref:`Vector2i` **_shaped_text_get_object_range**\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |virtual| |const| + +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the character range of the inline object. .. rst-class:: classref-item-separator @@ -2778,9 +2840,9 @@ Method Descriptions :ref:`Rect2` **_shaped_text_get_object_rect**\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns bounding rectangle of the inline object. .. rst-class:: classref-item-separator @@ -2792,9 +2854,9 @@ Method Descriptions :ref:`Array` **_shaped_text_get_objects**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns array of inline objects. .. rst-class:: classref-item-separator @@ -2806,9 +2868,9 @@ Method Descriptions :ref:`Orientation` **_shaped_text_get_orientation**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns text orientation. .. rst-class:: classref-item-separator @@ -2820,9 +2882,9 @@ Method Descriptions :ref:`RID` **_shaped_text_get_parent**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the parent buffer from which the substring originates. .. rst-class:: classref-item-separator @@ -2834,9 +2896,9 @@ Method Descriptions :ref:`bool` **_shaped_text_get_preserve_control**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if text buffer is configured to display control characters. .. rst-class:: classref-item-separator @@ -2848,9 +2910,9 @@ Method Descriptions :ref:`bool` **_shaped_text_get_preserve_invalid**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if text buffer is configured to display hexadecimal codes in place of invalid characters. .. rst-class:: classref-item-separator @@ -2862,9 +2924,9 @@ Method Descriptions :ref:`Vector2i` **_shaped_text_get_range**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns substring buffer character range in the parent buffer. .. rst-class:: classref-item-separator @@ -2876,9 +2938,9 @@ Method Descriptions :ref:`PackedVector2Array` **_shaped_text_get_selection**\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, end\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns selection rectangles for the specified character range. .. rst-class:: classref-item-separator @@ -2890,9 +2952,9 @@ Method Descriptions :ref:`Vector2` **_shaped_text_get_size**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns size of the text. .. rst-class:: classref-item-separator @@ -2904,9 +2966,9 @@ Method Descriptions :ref:`int` **_shaped_text_get_spacing**\ (\ shaped\: :ref:`RID`, spacing\: :ref:`SpacingType`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns extra spacing added between glyphs or lines in pixels. .. rst-class:: classref-item-separator @@ -2918,9 +2980,9 @@ Method Descriptions :ref:`int` **_shaped_text_get_trim_pos**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the position of the overrun trim. .. rst-class:: classref-item-separator @@ -2932,9 +2994,9 @@ Method Descriptions :ref:`float` **_shaped_text_get_underline_position**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns pixel offset of the underline below the baseline. .. rst-class:: classref-item-separator @@ -2946,9 +3008,9 @@ Method Descriptions :ref:`float` **_shaped_text_get_underline_thickness**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns thickness of the underline. .. rst-class:: classref-item-separator @@ -2960,9 +3022,9 @@ Method Descriptions :ref:`float` **_shaped_text_get_width**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns width (for horizontal layout) or height (for vertical) of the text. .. rst-class:: classref-item-separator @@ -2974,9 +3036,9 @@ Method Descriptions :ref:`PackedInt32Array` **_shaped_text_get_word_breaks**\ (\ shaped\: :ref:`RID`, grapheme_flags\: |bitfield|\[:ref:`GraphemeFlag`\]\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Breaks text into words and returns array of character ranges. Use ``grapheme_flags`` to set what characters are used for breaking (see :ref:`GraphemeFlag`). .. rst-class:: classref-item-separator @@ -2988,9 +3050,9 @@ Method Descriptions :ref:`int` **_shaped_text_hit_test_grapheme**\ (\ shaped\: :ref:`RID`, coord\: :ref:`float`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns grapheme index at the specified pixel offset at the baseline, or ``-1`` if none is found. .. rst-class:: classref-item-separator @@ -3002,9 +3064,9 @@ Method Descriptions :ref:`int` **_shaped_text_hit_test_position**\ (\ shaped\: :ref:`RID`, coord\: :ref:`float`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns caret character offset at the specified pixel offset at the baseline. This function always returns a valid position. .. rst-class:: classref-item-separator @@ -3016,9 +3078,9 @@ Method Descriptions :ref:`bool` **_shaped_text_is_ready**\ (\ shaped\: :ref:`RID`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if buffer is successfully shaped. .. rst-class:: classref-item-separator @@ -3030,9 +3092,9 @@ Method Descriptions :ref:`int` **_shaped_text_next_character_pos**\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns composite character end position closest to the ``pos``. .. rst-class:: classref-item-separator @@ -3044,9 +3106,9 @@ Method Descriptions :ref:`int` **_shaped_text_next_grapheme_pos**\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns grapheme end position closest to the ``pos``. .. rst-class:: classref-item-separator @@ -3058,9 +3120,9 @@ Method Descriptions |void| **_shaped_text_overrun_trim_to_width**\ (\ shaped\: :ref:`RID`, width\: :ref:`float`, trim_flags\: |bitfield|\[:ref:`TextOverrunFlag`\]\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Trims text if it exceeds the given width. .. rst-class:: classref-item-separator @@ -3072,9 +3134,9 @@ Method Descriptions :ref:`int` **_shaped_text_prev_character_pos**\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns composite character start position closest to the ``pos``. .. rst-class:: classref-item-separator @@ -3086,9 +3148,9 @@ Method Descriptions :ref:`int` **_shaped_text_prev_grapheme_pos**\ (\ shaped\: :ref:`RID`, pos\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns grapheme start position closest to the ``pos``. .. rst-class:: classref-item-separator @@ -3100,9 +3162,9 @@ Method Descriptions :ref:`bool` **_shaped_text_resize_object**\ (\ shaped\: :ref:`RID`, key\: :ref:`Variant`, size\: :ref:`Vector2`, inline_align\: :ref:`InlineAlignment`, baseline\: :ref:`float`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets new size and alignment of embedded object. .. rst-class:: classref-item-separator @@ -3114,9 +3176,9 @@ Method Descriptions |void| **_shaped_text_set_bidi_override**\ (\ shaped\: :ref:`RID`, override\: :ref:`Array`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Overrides BiDi for the structured text. .. rst-class:: classref-item-separator @@ -3128,9 +3190,9 @@ Method Descriptions |void| **_shaped_text_set_custom_ellipsis**\ (\ shaped\: :ref:`RID`, char\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets ellipsis character used for text clipping. .. rst-class:: classref-item-separator @@ -3142,9 +3204,9 @@ Method Descriptions |void| **_shaped_text_set_custom_punctuation**\ (\ shaped\: :ref:`RID`, punct\: :ref:`String`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets custom punctuation character list, used for word breaking. If set to empty string, server defaults are used. .. rst-class:: classref-item-separator @@ -3156,9 +3218,9 @@ Method Descriptions |void| **_shaped_text_set_direction**\ (\ shaped\: :ref:`RID`, direction\: :ref:`Direction`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets desired text direction. If set to :ref:`TextServer.DIRECTION_AUTO`, direction will be detected based on the buffer contents and current locale. .. rst-class:: classref-item-separator @@ -3170,9 +3232,9 @@ Method Descriptions |void| **_shaped_text_set_orientation**\ (\ shaped\: :ref:`RID`, orientation\: :ref:`Orientation`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets desired text orientation. .. rst-class:: classref-item-separator @@ -3184,9 +3246,9 @@ Method Descriptions |void| **_shaped_text_set_preserve_control**\ (\ shaped\: :ref:`RID`, enabled\: :ref:`bool`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +If set to ``true`` text buffer will display control characters. .. rst-class:: classref-item-separator @@ -3198,9 +3260,9 @@ Method Descriptions |void| **_shaped_text_set_preserve_invalid**\ (\ shaped\: :ref:`RID`, enabled\: :ref:`bool`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +If set to ``true`` text buffer will display invalid characters as hexadecimal codes, otherwise nothing is displayed. .. rst-class:: classref-item-separator @@ -3212,9 +3274,9 @@ Method Descriptions |void| **_shaped_text_set_spacing**\ (\ shaped\: :ref:`RID`, spacing\: :ref:`SpacingType`, value\: :ref:`int`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Sets extra spacing added between glyphs or lines in pixels. .. rst-class:: classref-item-separator @@ -3226,9 +3288,9 @@ Method Descriptions :ref:`bool` **_shaped_text_shape**\ (\ shaped\: :ref:`RID`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Shapes buffer if it's not shaped. Returns ``true`` if the string is shaped successfully. .. rst-class:: classref-item-separator @@ -3240,9 +3302,9 @@ Method Descriptions ``const Glyph*`` **_shaped_text_sort_logical**\ (\ shaped\: :ref:`RID`\ ) |virtual| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns text glyphs in the logical order. .. rst-class:: classref-item-separator @@ -3254,9 +3316,9 @@ Method Descriptions :ref:`RID` **_shaped_text_substr**\ (\ shaped\: :ref:`RID`, start\: :ref:`int`, length\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Required.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns text buffer for the substring of the text in the ``shaped`` text buffer (including inline objects). .. rst-class:: classref-item-separator @@ -3268,9 +3330,9 @@ Method Descriptions :ref:`float` **_shaped_text_tab_align**\ (\ shaped\: :ref:`RID`, tab_stops\: :ref:`PackedFloat32Array`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Aligns shaped text to the given tab-stops. .. rst-class:: classref-item-separator @@ -3282,9 +3344,9 @@ Method Descriptions :ref:`bool` **_shaped_text_update_breaks**\ (\ shaped\: :ref:`RID`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Updates break points in the shaped text. This method is called by default implementation of text breaking functions. .. rst-class:: classref-item-separator @@ -3296,9 +3358,9 @@ Method Descriptions :ref:`bool` **_shaped_text_update_justification_ops**\ (\ shaped\: :ref:`RID`\ ) |virtual| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Updates justification points in the shaped text. This method is called by default implementation of text justification functions. .. rst-class:: classref-item-separator @@ -3310,9 +3372,9 @@ Method Descriptions :ref:`bool` **_spoof_check**\ (\ string\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns ``true`` if ``string`` is likely to be an attempt at confusing the reader. .. rst-class:: classref-item-separator @@ -3324,9 +3386,9 @@ Method Descriptions :ref:`PackedInt32Array` **_string_get_character_breaks**\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns array of the composite character boundaries. .. rst-class:: classref-item-separator @@ -3338,9 +3400,9 @@ Method Descriptions :ref:`PackedInt32Array` **_string_get_word_breaks**\ (\ string\: :ref:`String`, language\: :ref:`String`, chars_per_line\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns an array of the word break boundaries. Elements in the returned array are the offsets of the start and end of words. Therefore the length of the array is always even. .. rst-class:: classref-item-separator @@ -3352,9 +3414,9 @@ Method Descriptions :ref:`String` **_string_to_lower**\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the string converted to lowercase. .. rst-class:: classref-item-separator @@ -3366,9 +3428,9 @@ Method Descriptions :ref:`String` **_string_to_upper**\ (\ string\: :ref:`String`, language\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Returns the string converted to uppercase. .. rst-class:: classref-item-separator @@ -3380,9 +3442,9 @@ Method Descriptions :ref:`String` **_strip_diacritics**\ (\ string\: :ref:`String`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Strips diacritics from the string. .. rst-class:: classref-item-separator @@ -3394,9 +3456,9 @@ Method Descriptions :ref:`String` **_tag_to_name**\ (\ tag\: :ref:`int`\ ) |virtual| |const| -.. container:: contribute +**Optional.**\ - There is currently no description for this method. Please help us by :ref:`contributing one `! +Converts OpenType tag to readable feature, variation, script, or language name. .. |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_time.rst b/classes/class_time.rst index 8455fd4d4fca..de5b71e42d8c 100644 --- a/classes/class_time.rst +++ b/classes/class_time.rst @@ -25,7 +25,7 @@ This class conforms with as many of the ISO 8601 standards as possible. All date Conversion methods assume "the same timezone", and do not handle timezone conversions or DST automatically. Leap seconds are also not handled, they must be done manually if desired. Suffixes such as "Z" are not handled, you need to strip them away manually. -When getting time information from the system, the time can either be in the local timezone or UTC depending on the ``utc`` parameter. However, the :ref:`get_unix_time_from_system` method always returns the time in UTC. +When getting time information from the system, the time can either be in the local timezone or UTC depending on the ``utc`` parameter. However, the :ref:`get_unix_time_from_system` method always uses UTC as it returns the seconds passed since the `Unix epoch `__. \ **Important:** The ``_from_system`` methods use the system clock that the user can manually set. **Never use** this method for precise time calculation since its results are subject to automatic adjustments by the user or the operating system. **Always use** :ref:`get_ticks_usec` or :ref:`get_ticks_msec` for precise time calculation instead, since they are guaranteed to be monotonic (i.e. never decrease). @@ -559,7 +559,7 @@ Converts the given ISO 8601 date and/or time string to a Unix timestamp. The str :ref:`float` **get_unix_time_from_system**\ (\ ) |const| -Returns the current Unix timestamp in seconds based on the system time in UTC. This method is implemented by the operating system and always returns the time in UTC. +Returns the current Unix timestamp in seconds based on the system time in UTC. This method is implemented by the operating system and always returns the time in UTC. The Unix timestamp is the number of seconds passed since 1970-01-01 at 00:00:00, the `Unix epoch `__. \ **Note:** Unlike other methods that use integer timestamps, this method returns the timestamp as a :ref:`float` for sub-second precision. diff --git a/classes/class_viewport.rst b/classes/class_viewport.rst index e10a7f07d77b..11395a689984 100644 --- a/classes/class_viewport.rst +++ b/classes/class_viewport.rst @@ -1781,7 +1781,7 @@ In some cases, debanding may introduce a slightly noticeable dithering pattern. - |void| **set_use_hdr_2d**\ (\ value\: :ref:`bool`\ ) - :ref:`bool` **is_using_hdr_2d**\ (\ ) -If ``true``, 2D rendering will use an high dynamic range (HDR) format framebuffer matching the bit depth of the 3D framebuffer. When using the Forward+ renderer this will be a ``RGBA16`` framebuffer, while when using the Mobile renderer it will be a ``RGB10_A2`` framebuffer. Additionally, 2D rendering will take place in linear color space and will be converted to sRGB space immediately before blitting to the screen (if the Viewport is attached to the screen). Practically speaking, this means that the end result of the Viewport will not be clamped into the ``0-1`` range and can be used in 3D rendering without color space adjustments. This allows 2D rendering to take advantage of effects requiring high dynamic range (e.g. 2D glow) as well as substantially improves the appearance of effects requiring highly detailed gradients. +If ``true``, 2D rendering will use an high dynamic range (HDR) format framebuffer matching the bit depth of the 3D framebuffer. When using the Forward+ renderer this will be an ``RGBA16`` framebuffer, while when using the Mobile renderer it will be an ``RGB10_A2`` framebuffer. Additionally, 2D rendering will take place in linear color space and will be converted to sRGB space immediately before blitting to the screen (if the Viewport is attached to the screen). Practically speaking, this means that the end result of the Viewport will not be clamped into the ``0-1`` range and can be used in 3D rendering without color space adjustments. This allows 2D rendering to take advantage of effects requiring high dynamic range (e.g. 2D glow) as well as substantially improves the appearance of effects requiring highly detailed gradients. \ **Note:** This setting will have no effect when using the GL Compatibility renderer as the GL Compatibility renderer always renders in low dynamic range for performance reasons. diff --git a/classes/class_xmlparser.rst b/classes/class_xmlparser.rst index c851c896a0b1..81b9c95f57cf 100644 --- a/classes/class_xmlparser.rst +++ b/classes/class_xmlparser.rst @@ -23,7 +23,7 @@ Provides a low-level interface for creating parsers for `XML ` method or a buffer with the :ref:`open_buffer` method. Then, the :ref:`read` method must be called to parse the next nodes. Most of the methods take into consideration the currently parsed node. -Here is an example of using **XMLParser** to parse a SVG file (which is based on XML), printing each element and its attributes as a dictionary: +Here is an example of using **XMLParser** to parse an SVG file (which is based on XML), printing each element and its attributes as a dictionary: .. tabs:: diff --git a/classes/index.rst b/classes/index.rst index 10174ff3f9f0..b57a6651c9f6 100644 --- a/classes/index.rst +++ b/classes/index.rst @@ -335,11 +335,14 @@ Resources class_audioeffectstereoenhance class_audiostream class_audiostreamgenerator + class_audiostreaminteractive class_audiostreammicrophone class_audiostreammp3 class_audiostreamoggvorbis + class_audiostreamplaylist class_audiostreampolyphonic class_audiostreamrandomizer + class_audiostreamsynchronized class_audiostreamwav class_basematerial3d class_bitmap @@ -691,9 +694,12 @@ Other objects class_audioserver class_audiostreamgeneratorplayback class_audiostreamplayback + class_audiostreamplaybackinteractive class_audiostreamplaybackoggvorbis + class_audiostreamplaybackplaylist class_audiostreamplaybackpolyphonic class_audiostreamplaybackresampled + class_audiostreamplaybacksynchronized class_callbacktweener class_camerafeed class_cameraserver From 49d3e3e714e9ab81d2a18ed75fd9e1d0b0609403 Mon Sep 17 00:00:00 2001 From: skyace65 Date: Fri, 15 Mar 2024 21:10:15 -0400 Subject: [PATCH 12/58] add more tool script info and add a section --- tutorials/plugins/editor/making_plugins.rst | 2 +- .../plugins/running_code_in_the_editor.rst | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/tutorials/plugins/editor/making_plugins.rst b/tutorials/plugins/editor/making_plugins.rst index 82dcca8d9743..9f5eac2323a5 100644 --- a/tutorials/plugins/editor/making_plugins.rst +++ b/tutorials/plugins/editor/making_plugins.rst @@ -96,7 +96,7 @@ editor, and it must inherit from :ref:`class_EditorPlugin`. .. warning:: In addition to the EditorPlugin script, any other GDScript that your plugin uses - must *also* be a tool. Any GDScript without ``@tool`` imported into the editor + must *also* be a tool. Any GDScript without ``@tool`` used by the editor will act like an empty file! It's important to deal with initialization and clean-up of resources. diff --git a/tutorials/plugins/running_code_in_the_editor.rst b/tutorials/plugins/running_code_in_the_editor.rst index b957d7047532..768c8a7dc094 100644 --- a/tutorials/plugins/running_code_in_the_editor.rst +++ b/tutorials/plugins/running_code_in_the_editor.rst @@ -105,18 +105,20 @@ Here is how a ``_process()`` function might look for you: // Code to execute both in editor and in game. } -.. note:: +Important information +--------------------- - Modifications in the editor are permanent. For example, in the following - case, when we remove the script, the node will keep its rotation. Be careful - to avoid making unwanted modifications. +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! -.. note:: +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 +specify the ``@tool`` annotation. - 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 - 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. Try ``@tool`` out ----------------- From ecc19f61c8c95e3adec5783676f7a930e6dcd801 Mon Sep 17 00:00:00 2001 From: Jan <115667908+miesepeter@users.noreply.github.com> Date: Mon, 18 Mar 2024 20:18:01 +0100 Subject: [PATCH 13/58] Update signal intro with note concerning external editors Included a note concerning external editors, see godotengine/godot#41283 --- getting_started/step_by_step/signals.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/getting_started/step_by_step/signals.rst b/getting_started/step_by_step/signals.rst index c2bb15f792b7..e3086e27346d 100644 --- a/getting_started/step_by_step/signals.rst +++ b/getting_started/step_by_step/signals.rst @@ -139,6 +139,12 @@ methods "_on_node_name_signal_name". Here, it'll be "_on_button_pressed". toggle the mode in the window's bottom-right by clicking the Advanced button. +.. note:: + + If you are using an external editor (such as VS Code) this + automatic code generation might not work. In this case you need to to connect + the signal via code as explained in the next section. + Click the Connect button to complete the signal connection and jump to the Script workspace. You should see the new method with a connection icon in the left margin. From 32be83452e4424c631e1ccd16fab1f9aa824698c Mon Sep 17 00:00:00 2001 From: Bastiaan Olij Date: Mon, 18 Mar 2024 22:22:36 +1100 Subject: [PATCH 14/58] Add a help pages detailing out OpenXR settings --- .../xr/img/openxr_eye_gaze_interaction.webp | Bin 0 -> 8224 bytes tutorials/xr/img/openxr_settings.webp | Bin 0 -> 32282 bytes tutorials/xr/index.rst | 1 + tutorials/xr/openxr_settings.rst | 253 ++++++++++++++++++ 4 files changed, 254 insertions(+) create mode 100644 tutorials/xr/img/openxr_eye_gaze_interaction.webp create mode 100644 tutorials/xr/img/openxr_settings.webp create mode 100644 tutorials/xr/openxr_settings.rst diff --git a/tutorials/xr/img/openxr_eye_gaze_interaction.webp b/tutorials/xr/img/openxr_eye_gaze_interaction.webp new file mode 100644 index 0000000000000000000000000000000000000000..81b683247a53fe30ef159f808613d71918d2a8fe GIT binary patch literal 8224 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 literal 0 HcmV?d00001 diff --git a/tutorials/xr/img/openxr_settings.webp b/tutorials/xr/img/openxr_settings.webp new file mode 100644 index 0000000000000000000000000000000000000000..b6047feef511cb3ef0114bdcd4e9b4ee2a9f7ab3 GIT binary patch literal 32282 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