diff --git a/docs b/docs index bc9ca79c2b..3573f8d3b7 160000 --- a/docs +++ b/docs @@ -1 +1 @@ -Subproject commit bc9ca79c2bc2e7b591323cfe1c161a4822bfb1ff +Subproject commit 3573f8d3b745f135891a8629a384a6213784d8cd diff --git a/sphinx/templates/about/docs_changelog.pot b/sphinx/templates/about/docs_changelog.pot index 21a49912b1..9b052a97f5 100644 --- a/sphinx/templates/about/docs_changelog.pot +++ b/sphinx/templates/about/docs_changelog.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/about/faq.pot b/sphinx/templates/about/faq.pot index eed9ac1df4..0ed689677d 100644 --- a/sphinx/templates/about/faq.pot +++ b/sphinx/templates/about/faq.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -37,7 +37,7 @@ msgid "In short:" msgstr "" #: ../../docs/about/faq.rst:16 -msgid "You are free to download and use Godot for any purpose, personal, non-profit, commercial, or otherwise." +msgid "You are free to download and use Godot for any purpose: personal, non-profit, commercial, or otherwise." msgstr "" #: ../../docs/about/faq.rst:17 diff --git a/sphinx/templates/about/index.pot b/sphinx/templates/about/index.pot index d40245a9ec..9dff04eebb 100644 --- a/sphinx/templates/about/index.pot +++ b/sphinx/templates/about/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/about/introduction.pot b/sphinx/templates/about/introduction.pot index 5335a71151..8f614b3156 100644 --- a/sphinx/templates/about/introduction.pot +++ b/sphinx/templates/about/introduction.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/about/list_of_features.pot b/sphinx/templates/about/list_of_features.pot index db9245e6dd..4cf4e7ba82 100644 --- a/sphinx/templates/about/list_of_features.pot +++ b/sphinx/templates/about/list_of_features.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -93,8 +93,8 @@ msgid "Editor" msgstr "" #: ../../docs/about/list_of_features.rst:45 -#: ../../docs/about/list_of_features.rst:87 -#: ../../docs/about/list_of_features.rst:344 +#: ../../docs/about/list_of_features.rst:90 +#: ../../docs/about/list_of_features.rst:355 msgid "**Features:**" msgstr "" @@ -175,1159 +175,1167 @@ msgid "2D graphics" msgstr "" #: ../../docs/about/list_of_features.rst:80 -#: ../../docs/about/list_of_features.rst:144 +#: ../../docs/about/list_of_features.rst:147 msgid "**Two renderers available:**" msgstr "" #: ../../docs/about/list_of_features.rst:82 -#: ../../docs/about/list_of_features.rst:147 +#: ../../docs/about/list_of_features.rst:149 msgid "OpenGL ES 3.0 renderer (uses OpenGL 3.3 on desktop platforms)." msgstr "" -#: ../../docs/about/list_of_features.rst:83 -#: ../../docs/about/list_of_features.rst:147 +#: ../../docs/about/list_of_features.rst:84 +#: ../../docs/about/list_of_features.rst:151 msgid "High-end visuals. Recommended on desktop platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:85 -#: ../../docs/about/list_of_features.rst:153 +#: ../../docs/about/list_of_features.rst:86 +#: ../../docs/about/list_of_features.rst:154 msgid "OpenGL ES 2.0 renderer (uses OpenGL 2.1 on desktop platforms)." msgstr "" -#: ../../docs/about/list_of_features.rst:85 -#: ../../docs/about/list_of_features.rst:150 +#: ../../docs/about/list_of_features.rst:88 +#: ../../docs/about/list_of_features.rst:156 msgid "Recommended on mobile and Web platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:89 +#: ../../docs/about/list_of_features.rst:92 msgid "Sprite, polygon and line rendering." msgstr "" -#: ../../docs/about/list_of_features.rst:91 +#: ../../docs/about/list_of_features.rst:94 msgid "High-level tools to draw lines and polygons such as Polygon2D and Line2D." msgstr "" -#: ../../docs/about/list_of_features.rst:93 +#: ../../docs/about/list_of_features.rst:96 msgid "AnimatedSprite as a helper for creating animated sprites." msgstr "" -#: ../../docs/about/list_of_features.rst:94 +#: ../../docs/about/list_of_features.rst:97 msgid "Parallax layers." msgstr "" -#: ../../docs/about/list_of_features.rst:96 +#: ../../docs/about/list_of_features.rst:99 msgid "Pseudo-3D support by automatically duplicating a layer several times." msgstr "" -#: ../../docs/about/list_of_features.rst:98 +#: ../../docs/about/list_of_features.rst:101 msgid "2D lighting with normal maps." msgstr "" -#: ../../docs/about/list_of_features.rst:100 +#: ../../docs/about/list_of_features.rst:103 msgid "Hard or soft shadows." msgstr "" -#: ../../docs/about/list_of_features.rst:102 +#: ../../docs/about/list_of_features.rst:105 msgid "Font rendering using bitmaps (BitmapFont) or rasterization using FreeType (DynamicFont)." msgstr "" -#: ../../docs/about/list_of_features.rst:104 +#: ../../docs/about/list_of_features.rst:107 msgid "Bitmap fonts can be exported using tools like BMFont." msgstr "" -#: ../../docs/about/list_of_features.rst:105 -msgid "DynamicFont supports monochrome fonts as well as colored fonts. Supported formats are TTF and OTF." -msgstr "" - -#: ../../docs/about/list_of_features.rst:107 -msgid "DynamicFont supports optional font outlines with adjustable width and color." -msgstr "" - #: ../../docs/about/list_of_features.rst:108 -msgid "Support for font oversampling to keep fonts sharp at higher resolutions." +msgid "DynamicFont supports monochrome fonts as well as colored fonts (e.g. for emoji). Supported formats are TTF, OTF and WOFF1." msgstr "" #: ../../docs/about/list_of_features.rst:110 -msgid "GPU-based particles with support for custom particle shaders." +msgid "DynamicFont supports optional font outlines with adjustable width and color." msgstr "" #: ../../docs/about/list_of_features.rst:111 -#: ../../docs/about/list_of_features.rst:217 -msgid "CPU-based particles." +msgid "Support for font oversampling to keep fonts sharp at higher resolutions." +msgstr "" + +#: ../../docs/about/list_of_features.rst:113 +msgid "GPU-based particles with support for custom particle shaders." msgstr "" #: ../../docs/about/list_of_features.rst:114 -msgid "2D tools" -msgstr "" - -#: ../../docs/about/list_of_features.rst:116 -msgid "2D camera with built-in smoothing and drag margins." +#: ../../docs/about/list_of_features.rst:228 +msgid "CPU-based particles." msgstr "" #: ../../docs/about/list_of_features.rst:117 -msgid "Path2D node to represent a path in 2D space." +msgid "2D tools" msgstr "" #: ../../docs/about/list_of_features.rst:119 -#: ../../docs/about/list_of_features.rst:258 -msgid "Can be drawn in the editor or generated procedurally." +msgid "2D camera with built-in smoothing and drag margins." msgstr "" #: ../../docs/about/list_of_features.rst:120 -msgid "PathFollow2D node to make nodes follow a Path2D." +msgid "Path2D node to represent a path in 2D space." msgstr "" #: ../../docs/about/list_of_features.rst:122 -msgid "2D geometry helper class." +#: ../../docs/about/list_of_features.rst:269 +msgid "Can be drawn in the editor or generated procedurally." msgstr "" #: ../../docs/about/list_of_features.rst:123 -msgid "Line2D node to draw textured 2D lines." +msgid "PathFollow2D node to make nodes follow a Path2D." +msgstr "" + +#: ../../docs/about/list_of_features.rst:125 +msgid "2D geometry helper class." msgstr "" #: ../../docs/about/list_of_features.rst:126 +msgid "Line2D node to draw textured 2D lines." +msgstr "" + +#: ../../docs/about/list_of_features.rst:129 msgid "2D physics" msgstr "" -#: ../../docs/about/list_of_features.rst:128 -#: ../../docs/about/list_of_features.rst:266 +#: ../../docs/about/list_of_features.rst:131 +#: ../../docs/about/list_of_features.rst:277 msgid "**Physics bodies:**" msgstr "" -#: ../../docs/about/list_of_features.rst:130 -#: ../../docs/about/list_of_features.rst:268 +#: ../../docs/about/list_of_features.rst:133 +#: ../../docs/about/list_of_features.rst:279 msgid "Static bodies." msgstr "" -#: ../../docs/about/list_of_features.rst:131 -#: ../../docs/about/list_of_features.rst:269 +#: ../../docs/about/list_of_features.rst:134 +#: ../../docs/about/list_of_features.rst:280 msgid "Rigid bodies." msgstr "" -#: ../../docs/about/list_of_features.rst:132 -#: ../../docs/about/list_of_features.rst:270 +#: ../../docs/about/list_of_features.rst:135 +#: ../../docs/about/list_of_features.rst:281 msgid "Kinematic bodies." msgstr "" -#: ../../docs/about/list_of_features.rst:133 -#: ../../docs/about/list_of_features.rst:272 +#: ../../docs/about/list_of_features.rst:136 +#: ../../docs/about/list_of_features.rst:283 msgid "Joints." msgstr "" -#: ../../docs/about/list_of_features.rst:134 -#: ../../docs/about/list_of_features.rst:275 +#: ../../docs/about/list_of_features.rst:137 +#: ../../docs/about/list_of_features.rst:286 msgid "Areas to detect bodies entering or leaving it." msgstr "" -#: ../../docs/about/list_of_features.rst:136 -#: ../../docs/about/list_of_features.rst:277 +#: ../../docs/about/list_of_features.rst:139 +#: ../../docs/about/list_of_features.rst:288 msgid "**Collision detection:**" msgstr "" -#: ../../docs/about/list_of_features.rst:138 +#: ../../docs/about/list_of_features.rst:141 msgid "Built-in shapes: line, box, circle, capsule." msgstr "" -#: ../../docs/about/list_of_features.rst:139 +#: ../../docs/about/list_of_features.rst:142 msgid "Collision polygons (can be drawn manually or generated from a sprite in the editor)." msgstr "" -#: ../../docs/about/list_of_features.rst:142 +#: ../../docs/about/list_of_features.rst:145 msgid "3D graphics" msgstr "" -#: ../../docs/about/list_of_features.rst:148 +#: ../../docs/about/list_of_features.rst:152 msgid "HDR rendering with sRGB." msgstr "" -#: ../../docs/about/list_of_features.rst:151 +#: ../../docs/about/list_of_features.rst:157 msgid "LDR rendering for greater compatibility." msgstr "" -#: ../../docs/about/list_of_features.rst:152 +#: ../../docs/about/list_of_features.rst:158 msgid "Not all features are available. Features available only when using the OpenGL ES 3.0 renderer are marked *GLES3* below." msgstr "" -#: ../../docs/about/list_of_features.rst:155 +#: ../../docs/about/list_of_features.rst:161 msgid "**Camera:**" msgstr "" -#: ../../docs/about/list_of_features.rst:157 +#: ../../docs/about/list_of_features.rst:163 msgid "Perspective, orthographic and frustum-offset cameras." msgstr "" -#: ../../docs/about/list_of_features.rst:159 +#: ../../docs/about/list_of_features.rst:165 msgid "**Physically-based rendering:**" msgstr "" -#: ../../docs/about/list_of_features.rst:161 +#: ../../docs/about/list_of_features.rst:167 msgid "Follows the Disney PBR model." msgstr "" -#: ../../docs/about/list_of_features.rst:162 +#: ../../docs/about/list_of_features.rst:168 msgid "Uses a roughness-metallic workflow with support for ORM textures." msgstr "" -#: ../../docs/about/list_of_features.rst:163 +#: ../../docs/about/list_of_features.rst:169 msgid "Normal mapping." msgstr "" -#: ../../docs/about/list_of_features.rst:164 +#: ../../docs/about/list_of_features.rst:170 msgid "*GLES3:* Parallax/relief mapping with automatic level of detail based on distance." msgstr "" -#: ../../docs/about/list_of_features.rst:165 +#: ../../docs/about/list_of_features.rst:171 msgid "*GLES3:* Sub-surface scattering and transmittance." msgstr "" -#: ../../docs/about/list_of_features.rst:166 +#: ../../docs/about/list_of_features.rst:172 msgid "*GLES3:* Proximity fade (soft particles)." msgstr "" -#: ../../docs/about/list_of_features.rst:167 +#: ../../docs/about/list_of_features.rst:173 msgid "Distance fade which can use alpha blending or dithering to avoid going through the transparent pipeline." msgstr "" -#: ../../docs/about/list_of_features.rst:169 +#: ../../docs/about/list_of_features.rst:175 msgid "Dithering can be determined on a per-pixel or per-object basis." msgstr "" -#: ../../docs/about/list_of_features.rst:171 +#: ../../docs/about/list_of_features.rst:177 msgid "**Real-time lighting:**" msgstr "" -#: ../../docs/about/list_of_features.rst:173 +#: ../../docs/about/list_of_features.rst:179 msgid "Directional lights (sun/moon). Up to 4 per scene." msgstr "" -#: ../../docs/about/list_of_features.rst:174 +#: ../../docs/about/list_of_features.rst:180 msgid "Omnidirectional lights." msgstr "" -#: ../../docs/about/list_of_features.rst:175 +#: ../../docs/about/list_of_features.rst:181 msgid "Spot lights with adjustable cone angle and attenuation." msgstr "" -#: ../../docs/about/list_of_features.rst:177 +#: ../../docs/about/list_of_features.rst:183 msgid "**Shadow mapping:**" msgstr "" -#: ../../docs/about/list_of_features.rst:179 +#: ../../docs/about/list_of_features.rst:185 msgid "*DirectionalLight:* Orthogonal (fastest), PSSM 2-split and 4-split. Supports blending between splits." msgstr "" -#: ../../docs/about/list_of_features.rst:181 +#: ../../docs/about/list_of_features.rst:187 msgid "*OmniLight:* Dual paraboloid (fast) or cubemap (slower but more accurate). Supports colored projector textures in the form of panoramas." msgstr "" -#: ../../docs/about/list_of_features.rst:183 +#: ../../docs/about/list_of_features.rst:189 msgid "*SpotLight:* Single texture." msgstr "" -#: ../../docs/about/list_of_features.rst:185 +#: ../../docs/about/list_of_features.rst:191 msgid "**Global illumination with indirect lighting:**" msgstr "" -#: ../../docs/about/list_of_features.rst:187 +#: ../../docs/about/list_of_features.rst:193 msgid "Baked lightmaps (fast, but can't be updated at run-time)." msgstr "" -#: ../../docs/about/list_of_features.rst:189 -msgid "Lightmaps are baked on the CPU." -msgstr "" - -#: ../../docs/about/list_of_features.rst:191 -msgid "*GLES3:* GI probes (slower, semi-real-time). Supports reflections." -msgstr "" - -#: ../../docs/about/list_of_features.rst:193 -msgid "**Reflections:**" -msgstr "" - #: ../../docs/about/list_of_features.rst:195 -msgid "*GLES3:* Voxel-based reflections (when using GI probes)." -msgstr "" - -#: ../../docs/about/list_of_features.rst:196 -msgid "Fast baked reflections or slow real-time reflections using ReflectionProbe. Parallax correction can optionally be enabled." +msgid "Supports baking indirect light only or baking both direct and indirect lighting. The bake mode can be adjusted on a per-light basis to allow for hybrid light baking setups." msgstr "" #: ../../docs/about/list_of_features.rst:198 -msgid "*GLES3:* Screen-space reflections." +msgid "Supports lighting dynamic objects using an automatic octree-based system. No manual probe placement is required." msgstr "" -#: ../../docs/about/list_of_features.rst:199 -msgid "Reflection techniques can be mixed together for greater accuracy." +#: ../../docs/about/list_of_features.rst:200 +msgid "Lightmaps are baked on the CPU." msgstr "" -#: ../../docs/about/list_of_features.rst:201 -msgid "**Sky:**" -msgstr "" - -#: ../../docs/about/list_of_features.rst:203 -msgid "Panorama sky (using an HDRI)." +#: ../../docs/about/list_of_features.rst:202 +msgid "*GLES3:* GI probes (slower, semi-real-time). Supports reflections." msgstr "" #: ../../docs/about/list_of_features.rst:204 -msgid "Procedural sky." +msgid "**Reflections:**" msgstr "" #: ../../docs/about/list_of_features.rst:206 -msgid "**Fog:**" +msgid "*GLES3:* Voxel-based reflections (when using GI probes)." msgstr "" -#: ../../docs/about/list_of_features.rst:208 -msgid "Depth fog with an adjustable attenuation curve." +#: ../../docs/about/list_of_features.rst:207 +msgid "Fast baked reflections or slow real-time reflections using ReflectionProbe. Parallax correction can optionally be enabled." msgstr "" #: ../../docs/about/list_of_features.rst:209 -msgid "Height fog (floor or ceiling) with adjustable attenuation." +msgid "*GLES3:* Screen-space reflections." msgstr "" #: ../../docs/about/list_of_features.rst:210 -msgid "Support for automatic depth fog color depending on the camera direction (to match the sun color)." +msgid "Reflection techniques can be mixed together for greater accuracy or scalability." msgstr "" #: ../../docs/about/list_of_features.rst:212 -msgid "Optional transmittance to make lights more visible in the fog." +msgid "**Sky:**" msgstr "" #: ../../docs/about/list_of_features.rst:214 -msgid "**Particles:**" +msgid "Panorama sky (using an HDRI)." msgstr "" -#: ../../docs/about/list_of_features.rst:216 -msgid "*GLES3:* GPU-based particles with support for custom particle shaders." +#: ../../docs/about/list_of_features.rst:215 +msgid "Procedural sky." +msgstr "" + +#: ../../docs/about/list_of_features.rst:217 +msgid "**Fog:**" msgstr "" #: ../../docs/about/list_of_features.rst:219 -msgid "**Post-processing:**" +msgid "Depth fog with an adjustable attenuation curve." +msgstr "" + +#: ../../docs/about/list_of_features.rst:220 +msgid "Height fog (floor or ceiling) with adjustable attenuation." msgstr "" #: ../../docs/about/list_of_features.rst:221 -msgid "Tonemapping (Linear, Reinhard, Filmic, ACES)." -msgstr "" - -#: ../../docs/about/list_of_features.rst:222 -msgid "*GLES3:* Automatic exposure adjustments based on viewport brightness." +msgid "Support for automatic depth fog color depending on the camera direction (to match the sun color)." msgstr "" #: ../../docs/about/list_of_features.rst:223 -msgid "*GLES3:* Near and far depth of field." -msgstr "" - -#: ../../docs/about/list_of_features.rst:224 -msgid "*GLES3:* Screen-space ambient occlusion." +msgid "Optional transmittance to make lights more visible in the fog." msgstr "" #: ../../docs/about/list_of_features.rst:225 -msgid "*GLES3:* Optional debanding to avoid color banding (effective when HDR rendering is enabled)." +msgid "**Particles:**" msgstr "" -#: ../../docs/about/list_of_features.rst:226 -msgid "Glow/bloom with optional bicubic upscaling and several blend modes available: Screen, Soft Light, Add, Replace." +#: ../../docs/about/list_of_features.rst:227 +msgid "*GLES3:* GPU-based particles with support for custom particle shaders." msgstr "" -#: ../../docs/about/list_of_features.rst:228 -msgid "Color correction using an one-dimensional ramp." +#: ../../docs/about/list_of_features.rst:230 +msgid "**Post-processing:**" msgstr "" -#: ../../docs/about/list_of_features.rst:229 -msgid "Brightness, contrast and saturation adjustments." -msgstr "" - -#: ../../docs/about/list_of_features.rst:231 -msgid "**Texture filtering:**" +#: ../../docs/about/list_of_features.rst:232 +msgid "Tonemapping (Linear, Reinhard, Filmic, ACES)." msgstr "" #: ../../docs/about/list_of_features.rst:233 -msgid "Nearest, bilinear, trilinear or anisotropic filtering." +msgid "*GLES3:* Automatic exposure adjustments based on viewport brightness." +msgstr "" + +#: ../../docs/about/list_of_features.rst:234 +msgid "*GLES3:* Near and far depth of field." msgstr "" #: ../../docs/about/list_of_features.rst:235 -msgid "**Texture compression:**" +msgid "*GLES3:* Screen-space ambient occlusion." +msgstr "" + +#: ../../docs/about/list_of_features.rst:236 +msgid "*GLES3:* Optional debanding to avoid color banding (effective when HDR rendering is enabled)." msgstr "" #: ../../docs/about/list_of_features.rst:237 -msgid "*GLES3:* BPTC for high-quality compression (not supported on macOS)." -msgstr "" - -#: ../../docs/about/list_of_features.rst:238 -msgid "*GLES3:* ETC2 (not supported on macOS)." +msgid "Glow/bloom with optional bicubic upscaling and several blend modes available: Screen, Soft Light, Add, Replace." msgstr "" #: ../../docs/about/list_of_features.rst:239 -msgid "ETC1 (recommended when using the GLES2 renderer)." +msgid "Color correction using an one-dimensional ramp." msgstr "" #: ../../docs/about/list_of_features.rst:240 -msgid "*GLES3:* S3TC (not supported on mobile/Web platforms)." +msgid "Brightness, contrast and saturation adjustments." msgstr "" #: ../../docs/about/list_of_features.rst:242 -msgid "**Anti-aliasing:**" +msgid "**Texture filtering:**" msgstr "" #: ../../docs/about/list_of_features.rst:244 -msgid "Multi-sample antialiasing (MSAA)." +msgid "Nearest, bilinear, trilinear or anisotropic filtering." msgstr "" -#: ../../docs/about/list_of_features.rst:245 -msgid "Fast approximate antialiasing (FXAA)." +#: ../../docs/about/list_of_features.rst:246 +msgid "**Texture compression:**" msgstr "" -#: ../../docs/about/list_of_features.rst:247 -msgid "Most of these effects can be adjusted for better performance or to further improve quality. This can be helpful when using Godot for offline rendering." +#: ../../docs/about/list_of_features.rst:248 +msgid "*GLES3:* BPTC for high-quality compression (not supported on macOS)." +msgstr "" + +#: ../../docs/about/list_of_features.rst:249 +msgid "*GLES3:* ETC2 (not supported on macOS)." +msgstr "" + +#: ../../docs/about/list_of_features.rst:250 +msgid "ETC1 (recommended when using the GLES2 renderer)." msgstr "" #: ../../docs/about/list_of_features.rst:251 -msgid "3D tools" +msgid "*GLES3:* S3TC (not supported on mobile/Web platforms)." msgstr "" #: ../../docs/about/list_of_features.rst:253 -msgid "Built-in meshes: cube, cylinder/cone, (hemi)sphere, prism, plane, quad." -msgstr "" - -#: ../../docs/about/list_of_features.rst:254 -msgid "Tools for :ref:`procedural geometry generation `." +msgid "**Anti-aliasing:**" msgstr "" #: ../../docs/about/list_of_features.rst:255 -msgid ":ref:`Constructive solid geometry ` (intended for prototyping)." +msgid "Multi-sample antialiasing (MSAA)." msgstr "" #: ../../docs/about/list_of_features.rst:256 -msgid "Path3D node to represent a path in 3D space." +msgid "Fast approximate antialiasing (FXAA)." msgstr "" -#: ../../docs/about/list_of_features.rst:259 -msgid "PathFollow3D node to make nodes follow a Path3D." +#: ../../docs/about/list_of_features.rst:258 +msgid "Most of these effects can be adjusted for better performance or to further improve quality. This can be helpful when using Godot for offline rendering." msgstr "" -#: ../../docs/about/list_of_features.rst:261 -msgid "3D geometry helper class." +#: ../../docs/about/list_of_features.rst:262 +msgid "3D tools" msgstr "" #: ../../docs/about/list_of_features.rst:264 +msgid "Built-in meshes: cube, cylinder/cone, (hemi)sphere, prism, plane, quad." +msgstr "" + +#: ../../docs/about/list_of_features.rst:265 +msgid "Tools for :ref:`procedural geometry generation `." +msgstr "" + +#: ../../docs/about/list_of_features.rst:266 +msgid ":ref:`Constructive solid geometry ` (intended for prototyping)." +msgstr "" + +#: ../../docs/about/list_of_features.rst:267 +msgid "Path3D node to represent a path in 3D space." +msgstr "" + +#: ../../docs/about/list_of_features.rst:270 +msgid "PathFollow3D node to make nodes follow a Path3D." +msgstr "" + +#: ../../docs/about/list_of_features.rst:272 +msgid "3D geometry helper class." +msgstr "" + +#: ../../docs/about/list_of_features.rst:275 msgid "3D physics" msgstr "" -#: ../../docs/about/list_of_features.rst:271 +#: ../../docs/about/list_of_features.rst:282 msgid "Vehicle bodies (intended for arcade physics, not simulation)." msgstr "" -#: ../../docs/about/list_of_features.rst:273 +#: ../../docs/about/list_of_features.rst:284 msgid "Soft bodies." msgstr "" -#: ../../docs/about/list_of_features.rst:274 +#: ../../docs/about/list_of_features.rst:285 msgid "Ragdolls." msgstr "" -#: ../../docs/about/list_of_features.rst:279 +#: ../../docs/about/list_of_features.rst:290 msgid "Built-in shapes: cuboid, sphere, capsule, cylinder." msgstr "" -#: ../../docs/about/list_of_features.rst:280 +#: ../../docs/about/list_of_features.rst:291 msgid "Generate triangle collision shapes for any mesh from the editor." msgstr "" -#: ../../docs/about/list_of_features.rst:281 +#: ../../docs/about/list_of_features.rst:292 msgid "Generate one or several convex collision shapes for any mesh from the editor." msgstr "" -#: ../../docs/about/list_of_features.rst:284 +#: ../../docs/about/list_of_features.rst:295 msgid "Shaders" msgstr "" -#: ../../docs/about/list_of_features.rst:286 +#: ../../docs/about/list_of_features.rst:297 msgid "*2D:* Custom vertex, fragment, and light shaders." msgstr "" -#: ../../docs/about/list_of_features.rst:287 +#: ../../docs/about/list_of_features.rst:298 msgid "*3D:* Custom vertex, fragment, light, and sky shaders." msgstr "" -#: ../../docs/about/list_of_features.rst:288 +#: ../../docs/about/list_of_features.rst:299 msgid "Text-based shaders using a :ref:`shader language inspired by GLSL `." msgstr "" -#: ../../docs/about/list_of_features.rst:289 +#: ../../docs/about/list_of_features.rst:300 msgid "Visual shader editor." msgstr "" -#: ../../docs/about/list_of_features.rst:291 +#: ../../docs/about/list_of_features.rst:302 msgid "Support for visual shader plugins." msgstr "" -#: ../../docs/about/list_of_features.rst:294 +#: ../../docs/about/list_of_features.rst:305 msgid "Scripting" msgstr "" -#: ../../docs/about/list_of_features.rst:296 +#: ../../docs/about/list_of_features.rst:307 msgid "**General:**" msgstr "" -#: ../../docs/about/list_of_features.rst:298 +#: ../../docs/about/list_of_features.rst:309 msgid "Object-oriented design pattern with scripts extending nodes." msgstr "" -#: ../../docs/about/list_of_features.rst:299 +#: ../../docs/about/list_of_features.rst:310 msgid "Signals and groups for communicating between scripts." msgstr "" -#: ../../docs/about/list_of_features.rst:300 +#: ../../docs/about/list_of_features.rst:311 msgid "Support for :ref:`cross-language scripting `." msgstr "" -#: ../../docs/about/list_of_features.rst:301 +#: ../../docs/about/list_of_features.rst:312 msgid "Many 2D and 3D linear algebra data types such as vectors and transforms." msgstr "" -#: ../../docs/about/list_of_features.rst:303 +#: ../../docs/about/list_of_features.rst:314 msgid ":ref:`GDScript: `" msgstr "" -#: ../../docs/about/list_of_features.rst:305 +#: ../../docs/about/list_of_features.rst:316 msgid ":ref:`High-level interpreted language ` with :ref:`optional static typing `." msgstr "" -#: ../../docs/about/list_of_features.rst:307 +#: ../../docs/about/list_of_features.rst:318 msgid "Syntax inspired by Python." msgstr "" -#: ../../docs/about/list_of_features.rst:308 +#: ../../docs/about/list_of_features.rst:319 msgid "Syntax highlighting is provided on GitHub." msgstr "" -#: ../../docs/about/list_of_features.rst:309 +#: ../../docs/about/list_of_features.rst:320 msgid ":ref:`Use threads ` to perform asynchronous actions or make use of multiple processor cores." msgstr "" -#: ../../docs/about/list_of_features.rst:312 +#: ../../docs/about/list_of_features.rst:323 msgid ":ref:`C#: `" msgstr "" -#: ../../docs/about/list_of_features.rst:314 +#: ../../docs/about/list_of_features.rst:325 msgid "Packaged in a separate binary to keep file sizes and dependencies down." msgstr "" -#: ../../docs/about/list_of_features.rst:315 +#: ../../docs/about/list_of_features.rst:326 msgid "Uses Mono 6.x." msgstr "" -#: ../../docs/about/list_of_features.rst:317 +#: ../../docs/about/list_of_features.rst:328 msgid "Full support for the C# 7.0 syntax and features." msgstr "" -#: ../../docs/about/list_of_features.rst:319 +#: ../../docs/about/list_of_features.rst:330 msgid "Supports all platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:320 +#: ../../docs/about/list_of_features.rst:331 msgid "Using an external editor is recommended to benefit from IDE functionality." msgstr "" -#: ../../docs/about/list_of_features.rst:322 +#: ../../docs/about/list_of_features.rst:333 msgid ":ref:`VisualScript: `" msgstr "" -#: ../../docs/about/list_of_features.rst:324 +#: ../../docs/about/list_of_features.rst:335 msgid ":ref:`Graph-based visual scripting language `." msgstr "" -#: ../../docs/about/list_of_features.rst:325 +#: ../../docs/about/list_of_features.rst:336 msgid "Works best when used for specific purposes (such as level-specific logic) rather than as a language to create entire projects." msgstr "" -#: ../../docs/about/list_of_features.rst:328 +#: ../../docs/about/list_of_features.rst:339 msgid "**GDNative (C, C++, Rust, D, ...):**" msgstr "" -#: ../../docs/about/list_of_features.rst:330 +#: ../../docs/about/list_of_features.rst:341 msgid "When you need it, link to native libraries for higher performance and third-party integrations." msgstr "" -#: ../../docs/about/list_of_features.rst:332 +#: ../../docs/about/list_of_features.rst:343 msgid "For scripting game logic, GDScript or C# are recommended if their performance is suitable." msgstr "" -#: ../../docs/about/list_of_features.rst:335 +#: ../../docs/about/list_of_features.rst:346 msgid "Official bindings for C and C++." msgstr "" -#: ../../docs/about/list_of_features.rst:337 +#: ../../docs/about/list_of_features.rst:348 msgid "Use any build system and language features you wish." msgstr "" -#: ../../docs/about/list_of_features.rst:339 +#: ../../docs/about/list_of_features.rst:350 msgid "Maintained D, Kotlin, Python, Nim, and Rust bindings provided by the community." msgstr "" -#: ../../docs/about/list_of_features.rst:342 +#: ../../docs/about/list_of_features.rst:353 msgid "Audio" msgstr "" -#: ../../docs/about/list_of_features.rst:346 +#: ../../docs/about/list_of_features.rst:357 msgid "Mono, stereo, 5.1 and 7.1 output." msgstr "" -#: ../../docs/about/list_of_features.rst:347 +#: ../../docs/about/list_of_features.rst:358 msgid "Non-positional and positional playback in 2D and 3D." msgstr "" -#: ../../docs/about/list_of_features.rst:349 +#: ../../docs/about/list_of_features.rst:360 msgid "Optional Doppler effect in 2D and 3D." msgstr "" -#: ../../docs/about/list_of_features.rst:351 +#: ../../docs/about/list_of_features.rst:362 msgid "Support for re-routable :ref:`audio buses ` and effects with dozens of effects included." msgstr "" -#: ../../docs/about/list_of_features.rst:353 +#: ../../docs/about/list_of_features.rst:364 msgid "Listener3D node to listen from a position different than the camera in 3D." msgstr "" -#: ../../docs/about/list_of_features.rst:354 +#: ../../docs/about/list_of_features.rst:365 msgid "Audio input to record microphones with real-time access using the AudioEffectCapture class." msgstr "" -#: ../../docs/about/list_of_features.rst:355 +#: ../../docs/about/list_of_features.rst:366 msgid "MIDI input." msgstr "" -#: ../../docs/about/list_of_features.rst:357 +#: ../../docs/about/list_of_features.rst:368 msgid "No support for MIDI output yet." msgstr "" -#: ../../docs/about/list_of_features.rst:359 +#: ../../docs/about/list_of_features.rst:370 msgid "**APIs used:**" msgstr "" -#: ../../docs/about/list_of_features.rst:361 +#: ../../docs/about/list_of_features.rst:372 msgid "*Windows:* WASAPI." msgstr "" -#: ../../docs/about/list_of_features.rst:362 +#: ../../docs/about/list_of_features.rst:373 msgid "*macOS:* CoreAudio." msgstr "" -#: ../../docs/about/list_of_features.rst:363 +#: ../../docs/about/list_of_features.rst:374 msgid "*Linux:* PulseAudio or ALSA." msgstr "" -#: ../../docs/about/list_of_features.rst:366 +#: ../../docs/about/list_of_features.rst:377 msgid "Import" msgstr "" -#: ../../docs/about/list_of_features.rst:368 +#: ../../docs/about/list_of_features.rst:379 msgid "Support for :ref:`custom import plugins `." msgstr "" -#: ../../docs/about/list_of_features.rst:370 +#: ../../docs/about/list_of_features.rst:381 msgid "**Formats:**" msgstr "" -#: ../../docs/about/list_of_features.rst:372 +#: ../../docs/about/list_of_features.rst:383 msgid "*Images:* See :ref:`doc_import_images`." msgstr "" -#: ../../docs/about/list_of_features.rst:373 +#: ../../docs/about/list_of_features.rst:384 msgid "*Audio:*" msgstr "" -#: ../../docs/about/list_of_features.rst:375 +#: ../../docs/about/list_of_features.rst:386 msgid "WAV with optional IMA-ADPCM compression." msgstr "" -#: ../../docs/about/list_of_features.rst:376 +#: ../../docs/about/list_of_features.rst:387 msgid "Ogg Vorbis." msgstr "" -#: ../../docs/about/list_of_features.rst:377 +#: ../../docs/about/list_of_features.rst:388 msgid "MP3." msgstr "" -#: ../../docs/about/list_of_features.rst:379 +#: ../../docs/about/list_of_features.rst:390 msgid "*3D scenes:*" msgstr "" -#: ../../docs/about/list_of_features.rst:381 +#: ../../docs/about/list_of_features.rst:392 msgid "glTF 2.0 *(recommended)*." msgstr "" -#: ../../docs/about/list_of_features.rst:382 +#: ../../docs/about/list_of_features.rst:393 msgid "`ESCN `__ (direct export from Blender)." msgstr "" -#: ../../docs/about/list_of_features.rst:384 +#: ../../docs/about/list_of_features.rst:395 msgid "FBX (experimental)." msgstr "" -#: ../../docs/about/list_of_features.rst:385 +#: ../../docs/about/list_of_features.rst:396 msgid "Collada (.dae)." msgstr "" -#: ../../docs/about/list_of_features.rst:386 +#: ../../docs/about/list_of_features.rst:397 msgid "Wavefront OBJ (static scenes only, can be loaded directly as a mesh)." msgstr "" -#: ../../docs/about/list_of_features.rst:389 +#: ../../docs/about/list_of_features.rst:400 msgid "Input" msgstr "" -#: ../../docs/about/list_of_features.rst:391 +#: ../../docs/about/list_of_features.rst:402 msgid "Input mapping system using hardcoded input events or remappable input actions." msgstr "" -#: ../../docs/about/list_of_features.rst:393 +#: ../../docs/about/list_of_features.rst:404 msgid "Axis values can be mapped to two different actions with a configurable deadzone." msgstr "" -#: ../../docs/about/list_of_features.rst:394 +#: ../../docs/about/list_of_features.rst:405 msgid "Use the same code to support both keyboards and gamepads." msgstr "" -#: ../../docs/about/list_of_features.rst:396 +#: ../../docs/about/list_of_features.rst:407 msgid "Keyboard input." msgstr "" -#: ../../docs/about/list_of_features.rst:398 +#: ../../docs/about/list_of_features.rst:409 msgid "Keys can be mapped in \"physical\" mode to be independent of the keyboard layout." msgstr "" -#: ../../docs/about/list_of_features.rst:400 +#: ../../docs/about/list_of_features.rst:411 msgid "Mouse input." msgstr "" -#: ../../docs/about/list_of_features.rst:402 +#: ../../docs/about/list_of_features.rst:413 msgid "The mouse cursor can be visible, hidden, captured or confined within the window." msgstr "" -#: ../../docs/about/list_of_features.rst:403 +#: ../../docs/about/list_of_features.rst:414 msgid "When captured, raw input will be used on Windows and Linux to sidestep the OS' mouse acceleration settings." msgstr "" -#: ../../docs/about/list_of_features.rst:406 +#: ../../docs/about/list_of_features.rst:417 msgid "Gamepad input (up to 8 simultaneous controllers)." msgstr "" -#: ../../docs/about/list_of_features.rst:407 +#: ../../docs/about/list_of_features.rst:418 msgid "Pen/tablet input with pressure support." msgstr "" -#: ../../docs/about/list_of_features.rst:408 +#: ../../docs/about/list_of_features.rst:419 msgid "Gamepad, keyboard and mouse input support are also available on Android." msgstr "" -#: ../../docs/about/list_of_features.rst:411 +#: ../../docs/about/list_of_features.rst:422 msgid "Navigation" msgstr "" -#: ../../docs/about/list_of_features.rst:413 +#: ../../docs/about/list_of_features.rst:424 msgid "A* algorithm in 2D and 3D." msgstr "" -#: ../../docs/about/list_of_features.rst:414 +#: ../../docs/about/list_of_features.rst:425 msgid "Navigation meshes." msgstr "" -#: ../../docs/about/list_of_features.rst:415 +#: ../../docs/about/list_of_features.rst:427 msgid "Support for dynamic obstacle avoidance planned in Godot 4.0." msgstr "" -#: ../../docs/about/list_of_features.rst:416 +#: ../../docs/about/list_of_features.rst:429 msgid "Generate navigation meshes from the editor." msgstr "" -#: ../../docs/about/list_of_features.rst:419 +#: ../../docs/about/list_of_features.rst:432 msgid "Networking" msgstr "" -#: ../../docs/about/list_of_features.rst:421 +#: ../../docs/about/list_of_features.rst:434 msgid "Low-level TCP networking using StreamPeer and TCP_Server." msgstr "" -#: ../../docs/about/list_of_features.rst:422 +#: ../../docs/about/list_of_features.rst:435 msgid "Low-level UDP networking using PacketPeer and UDPServer." msgstr "" -#: ../../docs/about/list_of_features.rst:423 +#: ../../docs/about/list_of_features.rst:436 msgid "Low-level HTTP requests using HTTPClient." msgstr "" -#: ../../docs/about/list_of_features.rst:424 +#: ../../docs/about/list_of_features.rst:437 msgid "High-level HTTP requests using HTTPRequest." msgstr "" -#: ../../docs/about/list_of_features.rst:426 +#: ../../docs/about/list_of_features.rst:439 msgid "Supports HTTPS out of the box using bundled certificates." msgstr "" -#: ../../docs/about/list_of_features.rst:428 +#: ../../docs/about/list_of_features.rst:441 msgid "High-level multiplayer API using UDP and ENet." msgstr "" -#: ../../docs/about/list_of_features.rst:430 +#: ../../docs/about/list_of_features.rst:443 msgid "Automatic replication using remote procedure calls (RPCs)." msgstr "" -#: ../../docs/about/list_of_features.rst:431 +#: ../../docs/about/list_of_features.rst:444 msgid "Supports unreliable, reliable and ordered transfers." msgstr "" -#: ../../docs/about/list_of_features.rst:433 +#: ../../docs/about/list_of_features.rst:446 msgid "WebSocket client and server, available on all platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:434 +#: ../../docs/about/list_of_features.rst:447 msgid "WebRTC client and server, available on all platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:435 +#: ../../docs/about/list_of_features.rst:448 msgid "Support for UPnP to sidestep the requirement to forward ports when hosting a server behind a NAT." msgstr "" -#: ../../docs/about/list_of_features.rst:439 +#: ../../docs/about/list_of_features.rst:452 msgid "Internationalization" msgstr "" -#: ../../docs/about/list_of_features.rst:441 +#: ../../docs/about/list_of_features.rst:454 msgid "Full support for Unicode including emoji." msgstr "" -#: ../../docs/about/list_of_features.rst:442 +#: ../../docs/about/list_of_features.rst:455 msgid "Store localization strings using :ref:`CSV ` or :ref:`gettext `." msgstr "" -#: ../../docs/about/list_of_features.rst:444 +#: ../../docs/about/list_of_features.rst:457 msgid "Use localized strings in your project automatically in GUI elements or by using the ``tr()`` function." msgstr "" -#: ../../docs/about/list_of_features.rst:446 +#: ../../docs/about/list_of_features.rst:459 msgid "Support for right-to-left typesetting and text shaping planned in Godot 4.0." msgstr "" -#: ../../docs/about/list_of_features.rst:449 +#: ../../docs/about/list_of_features.rst:462 msgid "Windowing and OS integration" msgstr "" -#: ../../docs/about/list_of_features.rst:451 +#: ../../docs/about/list_of_features.rst:464 msgid "Move, resize, minimize, and maximize the window spawned by the project." msgstr "" -#: ../../docs/about/list_of_features.rst:452 +#: ../../docs/about/list_of_features.rst:465 msgid "Change the window title and icon." msgstr "" -#: ../../docs/about/list_of_features.rst:453 +#: ../../docs/about/list_of_features.rst:466 msgid "Request attention (will cause the title bar to blink on most platforms)." msgstr "" -#: ../../docs/about/list_of_features.rst:454 +#: ../../docs/about/list_of_features.rst:467 msgid "Fullscreen mode." msgstr "" -#: ../../docs/about/list_of_features.rst:456 +#: ../../docs/about/list_of_features.rst:469 msgid "Doesn't use exclusive fullscreen, so the screen resolution can't be changed this way. Use a Viewport with a different resolution instead." msgstr "" -#: ../../docs/about/list_of_features.rst:459 +#: ../../docs/about/list_of_features.rst:472 msgid "Borderless window (fullscreen or non-fullscreen)." msgstr "" -#: ../../docs/about/list_of_features.rst:460 +#: ../../docs/about/list_of_features.rst:473 msgid "Ability to keep the window always on top." msgstr "" -#: ../../docs/about/list_of_features.rst:461 +#: ../../docs/about/list_of_features.rst:474 msgid "Transparent window with per-pixel transparency." msgstr "" -#: ../../docs/about/list_of_features.rst:462 +#: ../../docs/about/list_of_features.rst:475 msgid "Global menu integration on macOS." msgstr "" -#: ../../docs/about/list_of_features.rst:463 +#: ../../docs/about/list_of_features.rst:476 msgid "Execute commands in a blocking or non-blocking manner." msgstr "" -#: ../../docs/about/list_of_features.rst:464 +#: ../../docs/about/list_of_features.rst:477 msgid "Open file paths and URLs using default or custom protocol handlers (if registered on the system)." msgstr "" -#: ../../docs/about/list_of_features.rst:465 +#: ../../docs/about/list_of_features.rst:478 msgid "Parse custom command line arguments." msgstr "" -#: ../../docs/about/list_of_features.rst:468 +#: ../../docs/about/list_of_features.rst:481 msgid "Mobile" msgstr "" -#: ../../docs/about/list_of_features.rst:470 +#: ../../docs/about/list_of_features.rst:483 msgid "In-app purchases on Android and iOS." msgstr "" -#: ../../docs/about/list_of_features.rst:471 +#: ../../docs/about/list_of_features.rst:484 msgid "Support for advertisements using third-party modules." msgstr "" -#: ../../docs/about/list_of_features.rst:472 +#: ../../docs/about/list_of_features.rst:485 msgid "Support for subview embedding on Android." msgstr "" -#: ../../docs/about/list_of_features.rst:475 +#: ../../docs/about/list_of_features.rst:488 msgid "XR support (AR and VR)" msgstr "" -#: ../../docs/about/list_of_features.rst:477 +#: ../../docs/about/list_of_features.rst:490 msgid "Support for ARKit on iOS out of the box." msgstr "" -#: ../../docs/about/list_of_features.rst:478 +#: ../../docs/about/list_of_features.rst:491 msgid "Support for the OpenXR and OpenVR APIs." msgstr "" -#: ../../docs/about/list_of_features.rst:479 +#: ../../docs/about/list_of_features.rst:492 msgid "Popular VR headsets like the Oculus Quest and HTC Vive are supported thanks to plugins." msgstr "" -#: ../../docs/about/list_of_features.rst:482 +#: ../../docs/about/list_of_features.rst:495 msgid "GUI system" msgstr "" -#: ../../docs/about/list_of_features.rst:484 +#: ../../docs/about/list_of_features.rst:497 msgid "Godot's GUI is built using the same Control nodes used to make games in Godot. The editor UI can easily be extended in many ways using add-ons." msgstr "" -#: ../../docs/about/list_of_features.rst:487 +#: ../../docs/about/list_of_features.rst:500 msgid "**Nodes:**" msgstr "" -#: ../../docs/about/list_of_features.rst:489 +#: ../../docs/about/list_of_features.rst:502 msgid "Buttons." msgstr "" -#: ../../docs/about/list_of_features.rst:490 +#: ../../docs/about/list_of_features.rst:503 msgid "Checkboxes, check buttons, radio buttons." msgstr "" -#: ../../docs/about/list_of_features.rst:491 +#: ../../docs/about/list_of_features.rst:504 msgid "Text entry using LineEdit (single line) and TextEdit (multiple lines)." msgstr "" -#: ../../docs/about/list_of_features.rst:492 +#: ../../docs/about/list_of_features.rst:505 msgid "Dropdown menus using PopupMenu and OptionButton." msgstr "" -#: ../../docs/about/list_of_features.rst:493 +#: ../../docs/about/list_of_features.rst:506 msgid "Scrollbars." msgstr "" -#: ../../docs/about/list_of_features.rst:494 +#: ../../docs/about/list_of_features.rst:507 msgid "Labels." msgstr "" -#: ../../docs/about/list_of_features.rst:495 +#: ../../docs/about/list_of_features.rst:508 msgid "RichTextLabel for :ref:`text formatted using BBCode `." msgstr "" -#: ../../docs/about/list_of_features.rst:496 +#: ../../docs/about/list_of_features.rst:509 msgid "Trees (can also be used to represent tables)." msgstr "" -#: ../../docs/about/list_of_features.rst:497 +#: ../../docs/about/list_of_features.rst:510 msgid "Containers (horizontal, vertical, grid, center, margin, draggable splitter, ...)." msgstr "" -#: ../../docs/about/list_of_features.rst:498 +#: ../../docs/about/list_of_features.rst:511 msgid "Controls can be rotated and scaled." msgstr "" -#: ../../docs/about/list_of_features.rst:500 +#: ../../docs/about/list_of_features.rst:513 msgid "**Sizing:**" msgstr "" -#: ../../docs/about/list_of_features.rst:502 +#: ../../docs/about/list_of_features.rst:515 msgid "Anchors to keep GUI elements in a specific corner, edge or centered." msgstr "" -#: ../../docs/about/list_of_features.rst:503 +#: ../../docs/about/list_of_features.rst:516 msgid "Containers to place GUI elements automatically following certain rules." msgstr "" -#: ../../docs/about/list_of_features.rst:505 +#: ../../docs/about/list_of_features.rst:518 msgid ":ref:`Stack ` layouts." msgstr "" -#: ../../docs/about/list_of_features.rst:506 +#: ../../docs/about/list_of_features.rst:519 msgid ":ref:`Grid ` layouts." msgstr "" -#: ../../docs/about/list_of_features.rst:507 +#: ../../docs/about/list_of_features.rst:520 msgid ":ref:`Margin ` and :ref:`centered ` layouts." msgstr "" -#: ../../docs/about/list_of_features.rst:509 +#: ../../docs/about/list_of_features.rst:522 msgid ":ref:`Draggable splitter ` layouts." msgstr "" -#: ../../docs/about/list_of_features.rst:511 +#: ../../docs/about/list_of_features.rst:524 msgid "Scale to multiple resolutions using the ``2d`` or ``viewport`` stretch modes." msgstr "" -#: ../../docs/about/list_of_features.rst:512 +#: ../../docs/about/list_of_features.rst:525 msgid "Support any aspect ratio using anchors and the ``expand`` stretch aspect." msgstr "" -#: ../../docs/about/list_of_features.rst:514 +#: ../../docs/about/list_of_features.rst:527 msgid "**Theming:**" msgstr "" -#: ../../docs/about/list_of_features.rst:516 +#: ../../docs/about/list_of_features.rst:529 msgid "Built-in theme editor." msgstr "" -#: ../../docs/about/list_of_features.rst:518 +#: ../../docs/about/list_of_features.rst:531 msgid "Generate a theme based on the current editor theme settings." msgstr "" -#: ../../docs/about/list_of_features.rst:520 +#: ../../docs/about/list_of_features.rst:533 msgid "Procedural vector-based theming using :ref:`class_StyleBoxFlat`." msgstr "" -#: ../../docs/about/list_of_features.rst:522 +#: ../../docs/about/list_of_features.rst:535 msgid "Supports rounded/beveled corners, drop shadows and per-border widths." msgstr "" -#: ../../docs/about/list_of_features.rst:524 +#: ../../docs/about/list_of_features.rst:537 msgid "Texture-based theming using :ref:`class_StyleBoxTexture`." msgstr "" -#: ../../docs/about/list_of_features.rst:526 +#: ../../docs/about/list_of_features.rst:539 msgid "Godot's small distribution size can make it a suitable alternative to frameworks like Electron or Qt." msgstr "" -#: ../../docs/about/list_of_features.rst:530 +#: ../../docs/about/list_of_features.rst:543 msgid "Animation" msgstr "" -#: ../../docs/about/list_of_features.rst:532 +#: ../../docs/about/list_of_features.rst:545 msgid "Direct kinematics and inverse kinematics." msgstr "" -#: ../../docs/about/list_of_features.rst:533 +#: ../../docs/about/list_of_features.rst:546 msgid "Support for animating any property with customizable interpolation." msgstr "" -#: ../../docs/about/list_of_features.rst:534 +#: ../../docs/about/list_of_features.rst:547 msgid "Support for calling methods in animation tracks." msgstr "" -#: ../../docs/about/list_of_features.rst:535 +#: ../../docs/about/list_of_features.rst:548 msgid "Support for playing sounds in animation tracks." msgstr "" -#: ../../docs/about/list_of_features.rst:536 +#: ../../docs/about/list_of_features.rst:549 msgid "Support for Bézier curves in animation." msgstr "" -#: ../../docs/about/list_of_features.rst:539 -msgid "Formats" +#: ../../docs/about/list_of_features.rst:552 +msgid "File formats" msgstr "" -#: ../../docs/about/list_of_features.rst:541 +#: ../../docs/about/list_of_features.rst:554 msgid "Scenes and resources can be saved in :ref:`text-based ` or binary formats." msgstr "" -#: ../../docs/about/list_of_features.rst:543 +#: ../../docs/about/list_of_features.rst:556 msgid "Text-based formats are human-readable and more friendly to version control." msgstr "" -#: ../../docs/about/list_of_features.rst:544 +#: ../../docs/about/list_of_features.rst:557 msgid "Binary formats are faster to save/load for large scenes/resources." msgstr "" -#: ../../docs/about/list_of_features.rst:546 +#: ../../docs/about/list_of_features.rst:559 msgid "Read and write text or binary files using :ref:`class_File`." msgstr "" -#: ../../docs/about/list_of_features.rst:548 +#: ../../docs/about/list_of_features.rst:561 msgid "Can optionally be compressed or encrypted." msgstr "" -#: ../../docs/about/list_of_features.rst:550 +#: ../../docs/about/list_of_features.rst:563 msgid "Read and write :ref:`class_JSON` files." msgstr "" -#: ../../docs/about/list_of_features.rst:551 +#: ../../docs/about/list_of_features.rst:564 msgid "Read and write INI-style configuration files using :ref:`class_ConfigFile`." msgstr "" -#: ../../docs/about/list_of_features.rst:553 +#: ../../docs/about/list_of_features.rst:566 msgid "Can (de)serialize any Godot datatype, including Vector, Color, ..." msgstr "" -#: ../../docs/about/list_of_features.rst:555 +#: ../../docs/about/list_of_features.rst:568 msgid "Read XML files using :ref:`class_XMLParser`." msgstr "" -#: ../../docs/about/list_of_features.rst:556 +#: ../../docs/about/list_of_features.rst:569 msgid "Pack game data into a PCK file (custom format optimized for fast seeking), into a ZIP archive, or directly into the executable for single-file distribution." msgstr "" -#: ../../docs/about/list_of_features.rst:558 +#: ../../docs/about/list_of_features.rst:571 msgid ":ref:`Export additional PCK files` that can be read by the engine to support mods and DLCs." msgstr "" -#: ../../docs/about/list_of_features.rst:562 +#: ../../docs/about/list_of_features.rst:575 msgid "Miscellaneous" msgstr "" -#: ../../docs/about/list_of_features.rst:564 +#: ../../docs/about/list_of_features.rst:577 msgid ":ref:`Low-level access to servers ` which allows bypassing the scene tree's overhead when needed." msgstr "" -#: ../../docs/about/list_of_features.rst:566 +#: ../../docs/about/list_of_features.rst:579 msgid "Command line interface for automation." msgstr "" -#: ../../docs/about/list_of_features.rst:568 +#: ../../docs/about/list_of_features.rst:581 msgid "Export and deploy projects using continuous integration platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:569 +#: ../../docs/about/list_of_features.rst:582 msgid "`Completion scripts `__ are available for Bash, zsh and fish." msgstr "" -#: ../../docs/about/list_of_features.rst:572 +#: ../../docs/about/list_of_features.rst:585 msgid "Support for :ref:`C++ modules ` statically linked into the engine binary." msgstr "" -#: ../../docs/about/list_of_features.rst:574 +#: ../../docs/about/list_of_features.rst:587 msgid "Engine and editor written in C++03." msgstr "" -#: ../../docs/about/list_of_features.rst:576 +#: ../../docs/about/list_of_features.rst:589 msgid "Can be :ref:`compiled ` using GCC, Clang and MSVC. MinGW is also supported." msgstr "" -#: ../../docs/about/list_of_features.rst:578 +#: ../../docs/about/list_of_features.rst:591 msgid "Friendly towards packagers. In most cases, system libraries can be used instead of the ones provided by Godot. The build system doesn't download anything. Builds can be fully reproducible." msgstr "" -#: ../../docs/about/list_of_features.rst:581 +#: ../../docs/about/list_of_features.rst:594 msgid "Godot 4.0 will be written in C++17." msgstr "" -#: ../../docs/about/list_of_features.rst:583 +#: ../../docs/about/list_of_features.rst:596 msgid "Licensed under the permissive MIT license." msgstr "" -#: ../../docs/about/list_of_features.rst:585 +#: ../../docs/about/list_of_features.rst:598 msgid "Open developement process with :ref:`contributions welcome `." msgstr "" -#: ../../docs/about/list_of_features.rst:589 +#: ../../docs/about/list_of_features.rst:602 msgid "The `Godot proposals repository `__ lists features that have been requested by the community and may be implemented in future Godot releases." msgstr "" diff --git a/sphinx/templates/about/release_policy.pot b/sphinx/templates/about/release_policy.pot index 631a127415..dfc2e9c813 100644 --- a/sphinx/templates/about/release_policy.pot +++ b/sphinx/templates/about/release_policy.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -81,162 +81,166 @@ msgid "Stable branches are supported *at minimum* until the next stable branch i msgstr "" #: ../../docs/about/release_policy.rst:77 -msgid "Whenever a new major version is released, we make the previous stable branch a long-term supported release, and do our best to provide fixes for issues encountered by users of that branch who cannot port complex projects to the new major version. This is the case for the 2.1 branch, and will be the case for the latest 3.x stable branch by the time Godot 4.0 is released." +msgid "Whenever a new major version is released, we make the previous stable branch a long-term supported release, and do our best to provide fixes for issues encountered by users of that branch who cannot port complex projects to the new major version. This was the case for the 2.1 branch, and will be the case for the latest 3.x stable branch by the time Godot 4.0 is released." msgstr "" -#: ../../docs/about/release_policy.rst:84 +#: ../../docs/about/release_policy.rst:83 +msgid "In a given minor release series, only the latest patch release receives support. If you experience an issue using an older patch release, please upgrade to the latest patch release of that series and test again before reporting an issue on GitHub." +msgstr "" + +#: ../../docs/about/release_policy.rst:89 msgid "**Version**" msgstr "" -#: ../../docs/about/release_policy.rst:84 +#: ../../docs/about/release_policy.rst:89 msgid "**Release date**" msgstr "" -#: ../../docs/about/release_policy.rst:84 +#: ../../docs/about/release_policy.rst:89 msgid "**Support level**" msgstr "" -#: ../../docs/about/release_policy.rst:86 +#: ../../docs/about/release_policy.rst:91 msgid "Godot 4.0" msgstr "" -#: ../../docs/about/release_policy.rst:86 +#: ../../docs/about/release_policy.rst:91 msgid "~2022 (see below)" msgstr "" -#: ../../docs/about/release_policy.rst:86 +#: ../../docs/about/release_policy.rst:91 msgid "|unstable| *Current focus of development (unstable).*" msgstr "" -#: ../../docs/about/release_policy.rst:88 +#: ../../docs/about/release_policy.rst:93 msgid "Godot 3.4" msgstr "" -#: ../../docs/about/release_policy.rst:88 +#: ../../docs/about/release_policy.rst:93 msgid "Q4 2021" msgstr "" -#: ../../docs/about/release_policy.rst:88 +#: ../../docs/about/release_policy.rst:93 msgid "|supported| *Beta.* Receives new features as well as bug fixes while under development." msgstr "" -#: ../../docs/about/release_policy.rst:91 +#: ../../docs/about/release_policy.rst:96 msgid "Godot 3.3" msgstr "" -#: ../../docs/about/release_policy.rst:91 +#: ../../docs/about/release_policy.rst:96 msgid "April 2021" msgstr "" -#: ../../docs/about/release_policy.rst:91 +#: ../../docs/about/release_policy.rst:96 msgid "|supported| Receives fixes for bugs, security and platform support issues, as well as backwards-compatible usability enhancements." msgstr "" -#: ../../docs/about/release_policy.rst:94 +#: ../../docs/about/release_policy.rst:99 msgid "Godot 3.2" msgstr "" -#: ../../docs/about/release_policy.rst:94 +#: ../../docs/about/release_policy.rst:99 msgid "January 2020" msgstr "" -#: ../../docs/about/release_policy.rst:94 +#: ../../docs/about/release_policy.rst:99 msgid "|eol| No longer supported as fully superseded by the compatible 3.3 release (last update: 3.2.3)." msgstr "" -#: ../../docs/about/release_policy.rst:97 +#: ../../docs/about/release_policy.rst:102 msgid "Godot 3.1" msgstr "" -#: ../../docs/about/release_policy.rst:97 +#: ../../docs/about/release_policy.rst:102 msgid "March 2019" msgstr "" -#: ../../docs/about/release_policy.rst:97 -msgid "|partial| Only critical, security and platform support fixes (last update: 3.1.2)." +#: ../../docs/about/release_policy.rst:102 +msgid "|eol| No longer supported (last update: 3.1.2)." msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:104 msgid "Godot 3.0" msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:104 msgid "January 2018" msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:104 msgid "|eol| No longer supported (last update: 3.0.6)." msgstr "" -#: ../../docs/about/release_policy.rst:102 +#: ../../docs/about/release_policy.rst:106 msgid "Godot 2.1" msgstr "" -#: ../../docs/about/release_policy.rst:102 +#: ../../docs/about/release_policy.rst:106 msgid "July 2016" msgstr "" -#: ../../docs/about/release_policy.rst:102 -msgid "|partial| Only critical, security and platform support fixes (last update: 2.1.6)." +#: ../../docs/about/release_policy.rst:106 +msgid "|eol| No longer supported (last update: 2.1.6)." msgstr "" -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:108 msgid "Godot 2.0" msgstr "" -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:108 msgid "February 2016" msgstr "" -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:108 msgid "|eol| No longer supported (last update: 2.0.4.1)." msgstr "" -#: ../../docs/about/release_policy.rst:107 +#: ../../docs/about/release_policy.rst:110 msgid "Godot 1.1" msgstr "" -#: ../../docs/about/release_policy.rst:107 +#: ../../docs/about/release_policy.rst:110 msgid "May 2015" msgstr "" -#: ../../docs/about/release_policy.rst:107 -#: ../../docs/about/release_policy.rst:109 +#: ../../docs/about/release_policy.rst:110 +#: ../../docs/about/release_policy.rst:112 msgid "|eol| No longer supported." msgstr "" -#: ../../docs/about/release_policy.rst:109 +#: ../../docs/about/release_policy.rst:112 msgid "Godot 1.0" msgstr "" -#: ../../docs/about/release_policy.rst:109 +#: ../../docs/about/release_policy.rst:112 msgid "December 2014" msgstr "" -#: ../../docs/about/release_policy.rst:117 +#: ../../docs/about/release_policy.rst:120 msgid "**Legend:** |supported| Full support – |partial| Partial support – |eol| No support (end of life) – |unstable| Development version" msgstr "" -#: ../../docs/about/release_policy.rst:123 +#: ../../docs/about/release_policy.rst:126 msgid "Pre-release Godot versions aren't intended to be used in production and are provided for testing purposes only." msgstr "" -#: ../../docs/about/release_policy.rst:129 +#: ../../docs/about/release_policy.rst:132 msgid "When is the next release out?" msgstr "" -#: ../../docs/about/release_policy.rst:131 +#: ../../docs/about/release_policy.rst:134 msgid "While Godot contributors aren't working under any deadlines, we have historically had one major or minor release per year, with several maintenance updates between each." msgstr "" -#: ../../docs/about/release_policy.rst:135 +#: ../../docs/about/release_policy.rst:138 msgid "Starting with Godot 3.3, we aim to accelerate our development cycles for minor releases, so you can expect a new minor release every 3 to 6 months." msgstr "" -#: ../../docs/about/release_policy.rst:138 +#: ../../docs/about/release_policy.rst:141 msgid "Maintenance (patch) releases will be released as needed with potentially very short development cycles, to provide users of the current stable branch with the latest bug fixes for their production needs." msgstr "" -#: ../../docs/about/release_policy.rst:142 +#: ../../docs/about/release_policy.rst:145 msgid "As for the upcoming Godot 4.0, we can only say that we aim for a **2022** release, but any closer estimate is likely to be hard to uphold. Alpha builds will be published as soon as the main features for Godot 4.0 are finalized." msgstr "" diff --git a/sphinx/templates/about/troubleshooting.pot b/sphinx/templates/about/troubleshooting.pot index 15129475a4..9e1dd87a75 100644 --- a/sphinx/templates/about/troubleshooting.pot +++ b/sphinx/templates/about/troubleshooting.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/channels.pot b/sphinx/templates/community/channels.pot index 50d6929018..3b4544efa8 100644 --- a/sphinx/templates/community/channels.pot +++ b/sphinx/templates/community/channels.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/best_practices_for_engine_contributors.pot b/sphinx/templates/community/contributing/best_practices_for_engine_contributors.pot index 69fb3cc0fb..d484e4291a 100644 --- a/sphinx/templates/community/contributing/best_practices_for_engine_contributors.pot +++ b/sphinx/templates/community/contributing/best_practices_for_engine_contributors.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -201,7 +201,7 @@ msgid "In real-life scenarios, these use cases will be at most rare and uncommon msgstr "" #: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:195 -msgid "#7: Solutions must be local" +msgid "#7: Prefer local solutions" msgstr "" #: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:197 diff --git a/sphinx/templates/community/contributing/bisecting_regressions.pot b/sphinx/templates/community/contributing/bisecting_regressions.pot index dec6b74fff..6f136add22 100644 --- a/sphinx/templates/community/contributing/bisecting_regressions.pot +++ b/sphinx/templates/community/contributing/bisecting_regressions.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/bug_triage_guidelines.pot b/sphinx/templates/community/contributing/bug_triage_guidelines.pot index 8284b6ed7d..c0035cf243 100644 --- a/sphinx/templates/community/contributing/bug_triage_guidelines.pot +++ b/sphinx/templates/community/contributing/bug_triage_guidelines.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/building_the_manual.pot b/sphinx/templates/community/contributing/building_the_manual.pot index d5eb7aef1c..3f4c0c9b9e 100644 --- a/sphinx/templates/community/contributing/building_the_manual.pot +++ b/sphinx/templates/community/contributing/building_the_manual.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/code_style_guidelines.pot b/sphinx/templates/community/contributing/code_style_guidelines.pot index 9108e15aca..f03f717f07 100644 --- a/sphinx/templates/community/contributing/code_style_guidelines.pot +++ b/sphinx/templates/community/contributing/code_style_guidelines.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -69,7 +69,7 @@ msgid "Using clang-format locally" msgstr "" #: ../../docs/community/contributing/code_style_guidelines.rst:54 -msgid "First of all, you will need to install clang-format. As of now, you need to use **clang-format 8.x** to be compatible with Godot's format. Later versions might be suitable, but previous versions had bugs that will cause formatting changes to the current code base." +msgid "First of all, you will need to install clang-format. As of now, you need to use **clang-format 13** to be compatible with Godot's format. Later versions might be suitable, but previous versions may not support all used options, or format some things differently, leading to style issues in pull requests." msgstr "" #: ../../docs/community/contributing/code_style_guidelines.rst:60 diff --git a/sphinx/templates/community/contributing/docs_writing_guidelines.pot b/sphinx/templates/community/contributing/docs_writing_guidelines.pot index 153fc16d00..b2fb0a3758 100644 --- a/sphinx/templates/community/contributing/docs_writing_guidelines.pot +++ b/sphinx/templates/community/contributing/docs_writing_guidelines.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/documentation_guidelines.pot b/sphinx/templates/community/contributing/documentation_guidelines.pot index 2564ec9e5f..f3a7b347db 100644 --- a/sphinx/templates/community/contributing/documentation_guidelines.pot +++ b/sphinx/templates/community/contributing/documentation_guidelines.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/editor_and_docs_localization.pot b/sphinx/templates/community/contributing/editor_and_docs_localization.pot index 6542412a65..0df91bd64c 100644 --- a/sphinx/templates/community/contributing/editor_and_docs_localization.pot +++ b/sphinx/templates/community/contributing/editor_and_docs_localization.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/index.pot b/sphinx/templates/community/contributing/index.pot index 01feac2dee..5d53fb1db6 100644 --- a/sphinx/templates/community/contributing/index.pot +++ b/sphinx/templates/community/contributing/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/pr_workflow.pot b/sphinx/templates/community/contributing/pr_workflow.pot index 5877de6e72..bc385b73a5 100644 --- a/sphinx/templates/community/contributing/pr_workflow.pot +++ b/sphinx/templates/community/contributing/pr_workflow.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/testing_pull_requests.pot b/sphinx/templates/community/contributing/testing_pull_requests.pot index 475d1e4ac0..1e4936d672 100644 --- a/sphinx/templates/community/contributing/testing_pull_requests.pot +++ b/sphinx/templates/community/contributing/testing_pull_requests.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/updating_the_class_reference.pot b/sphinx/templates/community/contributing/updating_the_class_reference.pot index e2a101f98b..0b764f5561 100644 --- a/sphinx/templates/community/contributing/updating_the_class_reference.pot +++ b/sphinx/templates/community/contributing/updating_the_class_reference.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/community/contributing/ways_to_contribute.pot b/sphinx/templates/community/contributing/ways_to_contribute.pot index d22bccc1c5..e5c39d7586 100644 --- a/sphinx/templates/community/contributing/ways_to_contribute.pot +++ b/sphinx/templates/community/contributing/ways_to_contribute.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -157,7 +157,7 @@ msgid "**Godot version.** This is a must have. Some issues might be relevant in msgstr "" #: ../../docs/community/contributing/ways_to_contribute.rst:176 -msgid "**How to reproduce the bug.** In the majority of cases, bugs are reproducible, i.e. it is possible to trigger them reliably by following some steps. Please always describe those steps as clearly as possible, so that everyone can try to reproduce the issue and confirm it. Ideally, make a demo project that reproduces this issue out of the box, zip it and attach it to the issue (you can do this by drag and drop). Even if you think that the issue is trivial to reproduce, adding a minimal project that lets reproduce it is a big added value. You have to keep in mind that there are thousands of issues in the tracker, and developers can only dedicate little time to each issue." +msgid "**How to reproduce the bug.** In the majority of cases, bugs are reproducible, i.e. it is possible to trigger them reliably by following some steps. Please always describe those steps as clearly as possible, so that everyone can try to reproduce the issue and confirm it. Ideally, make a demo project that reproduces this issue out of the box, zip it and attach it to the issue (you can do this by drag and drop). Even if you think that the issue is trivial to reproduce, adding a minimal project that lets everyone reproduce it is a big added value. You have to keep in mind that there are thousands of issues in the tracker, and developers can only dedicate little time to each issue." msgstr "" #: ../../docs/community/contributing/ways_to_contribute.rst:187 diff --git a/sphinx/templates/community/tutorials.pot b/sphinx/templates/community/tutorials.pot index 3473fdbc1a..b10329c4bb 100644 --- a/sphinx/templates/community/tutorials.pot +++ b/sphinx/templates/community/tutorials.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/compiling_for_android.pot b/sphinx/templates/development/compiling/compiling_for_android.pot index 273d18bc8d..01afe5323c 100644 --- a/sphinx/templates/development/compiling/compiling_for_android.pot +++ b/sphinx/templates/development/compiling/compiling_for_android.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -65,197 +65,193 @@ msgid "Gradle (will be downloaded and installed automatically if missing)." msgstr "" #: ../../docs/development/compiling/compiling_for_android.rst:34 -msgid "JDK 8 (either OpenJDK or Oracle JDK)." +msgid "JDK 11 (either OpenJDK or Oracle JDK)." msgstr "" #: ../../docs/development/compiling/compiling_for_android.rst:36 -msgid "JDK 9 or later are not currently supported." -msgstr "" - -#: ../../docs/development/compiling/compiling_for_android.rst:37 msgid "You can download a build from `ojdkbuild `_." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:39 +#: ../../docs/development/compiling/compiling_for_android.rst:38 msgid "For a general overview of SCons usage for Godot, see :ref:`doc_introduction_to_the_buildsystem`." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:45 +#: ../../docs/development/compiling/compiling_for_android.rst:44 msgid "Setting up the buildsystem" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:47 +#: ../../docs/development/compiling/compiling_for_android.rst:46 msgid "Set the environment variable ``ANDROID_SDK_ROOT`` to point to the Android SDK. If you downloaded the Android command-line tools, this would be the folder where you extracted the contents of the ZIP archive." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:51 +#: ../../docs/development/compiling/compiling_for_android.rst:50 msgid "Install the necessary SDK components in this folder:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:53 +#: ../../docs/development/compiling/compiling_for_android.rst:52 msgid "Accept the SDK component licenses by running the following command where ``android_sdk_path`` is the path to the Android SDK, then answering all the prompts with ``y``:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:60 +#: ../../docs/development/compiling/compiling_for_android.rst:59 msgid "Complete setup by running the following command where ``android_sdk_path`` is the path to the Android SDK." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:66 +#: ../../docs/development/compiling/compiling_for_android.rst:65 msgid "To set the environment variable on Windows, press :kbd:`Windows + R`, type \"control system\", then click on **Advanced system settings** in the left pane, then click on **Environment variables** on the window that appears." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:70 +#: ../../docs/development/compiling/compiling_for_android.rst:69 msgid "To set the environment variable on Linux or macOS, use ``export ANDROID_SDK_ROOT=/path/to/android-sdk`` where ``/path/to/android-sdk`` points to the root of the SDK directories." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:75 +#: ../../docs/development/compiling/compiling_for_android.rst:74 msgid "Building the export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:77 +#: ../../docs/development/compiling/compiling_for_android.rst:76 msgid "Godot needs two export templates for Android: the optimized \"release\" template (``android_release.apk``) and the debug template (``android_debug.apk``). As Google will require all APKs to include ARMv8 (64-bit) libraries starting from August 2019, the commands below will build an APK containing both ARMv7 and ARMv8 libraries." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:83 +#: ../../docs/development/compiling/compiling_for_android.rst:82 msgid "Compiling the standard export templates is done by calling SCons from the Godot root directory with the following arguments:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:86 +#: ../../docs/development/compiling/compiling_for_android.rst:85 msgid "Release template (used when exporting with **Debugging Enabled** unchecked)" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:99 +#: ../../docs/development/compiling/compiling_for_android.rst:98 msgid "The resulting APK will be located at ``bin/android_release.apk``." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:101 +#: ../../docs/development/compiling/compiling_for_android.rst:100 msgid "Debug template (used when exporting with **Debugging Enabled** checked)" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:114 +#: ../../docs/development/compiling/compiling_for_android.rst:113 msgid "The resulting APK will be located at ``bin/android_debug.apk``." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:117 +#: ../../docs/development/compiling/compiling_for_android.rst:116 msgid "Adding support for x86 devices" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:119 +#: ../../docs/development/compiling/compiling_for_android.rst:118 msgid "If you also want to include support for x86 and x86-64 devices, run the SCons command a third and fourth time with the ``android_arch=x86``, and ``android_arch=x86_64`` arguments before building the APK with Gradle. For example, for the release template:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:137 +#: ../../docs/development/compiling/compiling_for_android.rst:136 msgid "This will create a fat binary that works on all platforms. The final APK size of exported projects will depend on the platforms you choose to support when exporting; in other words, unused platforms will be removed from the APK." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:143 +#: ../../docs/development/compiling/compiling_for_android.rst:142 msgid "Cleaning the generated export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:145 +#: ../../docs/development/compiling/compiling_for_android.rst:144 msgid "You can use the following commands to remove the generated export templates:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:157 +#: ../../docs/development/compiling/compiling_for_android.rst:156 msgid "Using the export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:159 +#: ../../docs/development/compiling/compiling_for_android.rst:158 msgid "Godot needs release and debug APKs that were compiled against the same version/commit as the editor. If you are using official binaries for the editor, make sure to install the matching export templates, or build your own from the same version." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:164 +#: ../../docs/development/compiling/compiling_for_android.rst:163 msgid "When exporting your game, Godot opens the APK, changes a few things inside and adds your files." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:168 +#: ../../docs/development/compiling/compiling_for_android.rst:167 msgid "Installing the templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:170 +#: ../../docs/development/compiling/compiling_for_android.rst:169 msgid "The newly-compiled templates (``android_debug.apk`` and ``android_release.apk``) must be copied to Godot's templates folder with their respective names. The templates folder can be located in:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:174 +#: ../../docs/development/compiling/compiling_for_android.rst:173 msgid "Windows: ``%APPDATA%\\Godot\\templates\\\\``" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:175 +#: ../../docs/development/compiling/compiling_for_android.rst:174 msgid "Linux: ``$HOME/.local/share/godot/templates//``" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:176 +#: ../../docs/development/compiling/compiling_for_android.rst:175 msgid "macOS: ``$HOME/Library/Application Support/Godot/templates//``" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:178 +#: ../../docs/development/compiling/compiling_for_android.rst:177 msgid "```` is of the form ``major.minor[.patch].status`` using values from ``version.py`` in your Godot source repository (e.g. ``3.0.5.stable`` or ``3.1.dev``). You also need to write this same version string to a ``version.txt`` file located next to your export templates." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:185 +#: ../../docs/development/compiling/compiling_for_android.rst:184 msgid "However, if you are writing your custom modules or custom C++ code, you might instead want to configure your APKs as custom export templates here:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:191 +#: ../../docs/development/compiling/compiling_for_android.rst:190 msgid "You don't even need to copy them, you can just reference the resulting file in the ``bin\\`` directory of your Godot source folder, so that the next time you build you will automatically have the custom templates referenced." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:197 +#: ../../docs/development/compiling/compiling_for_android.rst:196 msgid "Troubleshooting" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:200 +#: ../../docs/development/compiling/compiling_for_android.rst:199 msgid "Platform doesn't appear in SCons" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:202 +#: ../../docs/development/compiling/compiling_for_android.rst:201 msgid "Double-check that you've set the ``ANDROID_SDK_ROOT`` environment variable. This is required for the platform to appear in SCons' list of detected platforms. See :ref:`Setting up the buildsystem ` for more information." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:209 +#: ../../docs/development/compiling/compiling_for_android.rst:208 msgid "Application not installed" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:211 +#: ../../docs/development/compiling/compiling_for_android.rst:210 msgid "Android might complain the application is not correctly installed. If so:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:214 +#: ../../docs/development/compiling/compiling_for_android.rst:213 msgid "Check that the debug keystore is properly generated." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:215 +#: ../../docs/development/compiling/compiling_for_android.rst:214 msgid "Check that the jarsigner executable is from JDK 8." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:217 +#: ../../docs/development/compiling/compiling_for_android.rst:216 msgid "If it still fails, open a command line and run `logcat `_:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:223 +#: ../../docs/development/compiling/compiling_for_android.rst:222 msgid "Then check the output while the application is installed; the error message should be presented there. Seek assistance if you can't figure it out." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:228 +#: ../../docs/development/compiling/compiling_for_android.rst:227 msgid "Application exits immediately" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:230 +#: ../../docs/development/compiling/compiling_for_android.rst:229 msgid "If the application runs but exits immediately, this might be due to one of the following reasons:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:233 +#: ../../docs/development/compiling/compiling_for_android.rst:232 msgid "Make sure to use export templates that match your editor version; if you use a new Godot version, you *have* to update the templates too." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:235 +#: ../../docs/development/compiling/compiling_for_android.rst:234 msgid "``libgodot_android.so`` is not in ``libs//`` where ```` is the device's architecture." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:237 +#: ../../docs/development/compiling/compiling_for_android.rst:236 msgid "The device's architecture does not match the exported one(s). Make sure your templates were built for that device's architecture, and that the export settings included support for that architecture." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:241 +#: ../../docs/development/compiling/compiling_for_android.rst:240 msgid "In any case, ``adb logcat`` should also show the cause of the error." msgstr "" diff --git a/sphinx/templates/development/compiling/compiling_for_ios.pot b/sphinx/templates/development/compiling/compiling_for_ios.pot index f24d0d135b..b25b014d76 100644 --- a/sphinx/templates/development/compiling/compiling_for_ios.pot +++ b/sphinx/templates/development/compiling/compiling_for_ios.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/compiling_for_osx.pot b/sphinx/templates/development/compiling/compiling_for_osx.pot index 9f0d4d8072..86cc8c18e8 100644 --- a/sphinx/templates/development/compiling/compiling_for_osx.pot +++ b/sphinx/templates/development/compiling/compiling_for_osx.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -101,69 +101,73 @@ msgid "To compile a *headless* build which provides editor functionality to expo msgstr "" #: ../../docs/development/compiling/compiling_for_osx.rst:80 -msgid "To compile a *server* build which is optimized to run dedicated game servers, use::" +msgid "To compile a debug *server* build which can be used with :ref:`remote debugging tools `, use::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:86 +#: ../../docs/development/compiling/compiling_for_osx.rst:85 +msgid "To compile a release *server* build which is optimized to run dedicated game servers, use::" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_osx.rst:91 msgid "Building export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:88 +#: ../../docs/development/compiling/compiling_for_osx.rst:93 msgid "To build macOS export templates, you have to compile with ``tools=no`` (no editor) and respectively for ``target=release`` (release template) and ``target=release_debug``." msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:92 +#: ../../docs/development/compiling/compiling_for_osx.rst:97 msgid "Official templates are universal binaries which support both Intel x86_64 and ARM64 architectures. You can also create export templates that support only one of those two architectures by leaving out the ``lipo`` step below." msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:96 +#: ../../docs/development/compiling/compiling_for_osx.rst:101 msgid "For Intel x86_64::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:101 +#: ../../docs/development/compiling/compiling_for_osx.rst:106 msgid "For ARM64 (Apple M1)::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:106 +#: ../../docs/development/compiling/compiling_for_osx.rst:111 msgid "To support both architectures in a single \"Universal 2\" binary, run the above two commands blocks and then use ``lipo`` to bundle them together::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:112 +#: ../../docs/development/compiling/compiling_for_osx.rst:117 msgid "To create an ``.app`` bundle like in the official builds, you need to use the template located in ``misc/dist/osx_template.app``. The release and debug builds should be placed in ``osx_template.app/Contents/MacOS`` with the names ``godot_osx_release.64`` and ``godot_osx_debug.64`` respectively. You can do so with the following commands (assuming a universal build, otherwise replace the ``.universal`` extension with the one of your arch-specific binaries)::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:125 +#: ../../docs/development/compiling/compiling_for_osx.rst:130 msgid "You can then zip the ``osx_template.app`` folder to reproduce the ``osx.zip`` template from the official Godot distribution::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:131 +#: ../../docs/development/compiling/compiling_for_osx.rst:136 msgid "Cross-compiling for macOS from Linux" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:133 +#: ../../docs/development/compiling/compiling_for_osx.rst:138 msgid "It is possible to compile for macOS in a Linux environment (and maybe also in Windows using the Windows Subsystem for Linux). For that, you'll need to install `OSXCross `__ to be able to use macOS as a target. First, follow the instructions to install it:" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:138 +#: ../../docs/development/compiling/compiling_for_osx.rst:143 msgid "Clone the `OSXCross repository `__ somewhere on your machine (or download a ZIP file and extract it somewhere), e.g.::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:144 +#: ../../docs/development/compiling/compiling_for_osx.rst:149 msgid "Follow the instructions to package the SDK: https://github.com/tpoechtrager/osxcross#packaging-the-sdk" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:146 +#: ../../docs/development/compiling/compiling_for_osx.rst:151 msgid "Follow the instructions to install OSXCross: https://github.com/tpoechtrager/osxcross#installation" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:149 +#: ../../docs/development/compiling/compiling_for_osx.rst:154 msgid "After that, you will need to define the ``OSXCROSS_ROOT`` as the path to the OSXCross installation (the same place where you cloned the repository/extracted the zip), e.g.::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:155 +#: ../../docs/development/compiling/compiling_for_osx.rst:160 msgid "Now you can compile with SCons like you normally would::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:159 +#: ../../docs/development/compiling/compiling_for_osx.rst:164 msgid "If you have an OSXCross SDK version different from the one expected by the SCons buildsystem, you can specify a custom one with the ``osxcross_sdk`` argument::" msgstr "" diff --git a/sphinx/templates/development/compiling/compiling_for_uwp.pot b/sphinx/templates/development/compiling/compiling_for_uwp.pot index 21bc585141..5f22019e4c 100644 --- a/sphinx/templates/development/compiling/compiling_for_uwp.pot +++ b/sphinx/templates/development/compiling/compiling_for_uwp.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/compiling_for_web.pot b/sphinx/templates/development/compiling/compiling_for_web.pot index 5068b76654..b430cf2e06 100644 --- a/sphinx/templates/development/compiling/compiling_for_web.pot +++ b/sphinx/templates/development/compiling/compiling_for_web.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/compiling_for_windows.pot b/sphinx/templates/development/compiling/compiling_for_windows.pot index d457cdfb5b..c6907855d1 100644 --- a/sphinx/templates/development/compiling/compiling_for_windows.pot +++ b/sphinx/templates/development/compiling/compiling_for_windows.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -44,246 +44,242 @@ msgstr "" msgid "`SCons 3.0 `_ build system. If using Visual Studio 2019, you need at least SCons 3.1.1." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:22 -msgid "*Optional* - `yasm `_ (for WebM SIMD optimizations)" -msgstr "" - -#: ../../docs/development/compiling/compiling_for_windows.rst:24 +#: ../../docs/development/compiling/compiling_for_windows.rst:23 msgid "If you have `Scoop `_ installed, you can easily install MinGW and other dependencies using the following command::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:29 +#: ../../docs/development/compiling/compiling_for_windows.rst:28 msgid "If you have `MSYS2 `_ installed, you can easily install MinGW and other dependencies using the following command::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:37 +#: ../../docs/development/compiling/compiling_for_windows.rst:34 msgid "For each MSYS2 MinGW subsystem, you should then run `pip3 install scons` in its shell." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:40 +#: ../../docs/development/compiling/compiling_for_windows.rst:37 msgid "For a general overview of SCons usage for Godot, see :ref:`doc_introduction_to_the_buildsystem`." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:44 +#: ../../docs/development/compiling/compiling_for_windows.rst:41 msgid "Setting up Python" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:46 +#: ../../docs/development/compiling/compiling_for_windows.rst:43 msgid "First you need to install Python 3.5 or newer. Make sure to enable the option to add Python to the ``PATH`` in the Python installer. The SCons installer should then detect and use the existing Python installation." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:51 +#: ../../docs/development/compiling/compiling_for_windows.rst:48 msgid "Setting up SCons" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:53 +#: ../../docs/development/compiling/compiling_for_windows.rst:50 msgid "To install SCons open the command prompt and run the following command." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:55 +#: ../../docs/development/compiling/compiling_for_windows.rst:52 msgid "``python -m pip3 install scons``" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:57 +#: ../../docs/development/compiling/compiling_for_windows.rst:54 msgid "To check whether you have installed Python and SCons correctly, you can type ``python --version`` and ``scons --version`` into a command prompt (``cmd.exe``)." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:61 +#: ../../docs/development/compiling/compiling_for_windows.rst:58 msgid "If the commands above don't work, make sure to add Python to your ``PATH`` environment variable after installing it, then check again. You can do so by running the Python installer again and enabling the option to add Python to the ``PATH``." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:69 +#: ../../docs/development/compiling/compiling_for_windows.rst:66 msgid "Installing Visual Studio caveats" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:71 +#: ../../docs/development/compiling/compiling_for_windows.rst:68 msgid "If installing Visual Studio 2017 or 2019, make sure to enable **C++** in the list of workflows to install." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:74 +#: ../../docs/development/compiling/compiling_for_windows.rst:71 msgid "If installing Visual Studio 2015, make sure to run a **Custom** installation instead of **Typical** and select **C++** as a language there." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:77 +#: ../../docs/development/compiling/compiling_for_windows.rst:74 msgid "If you've already made the mistake of installing Visual Studio without C++ support, run the installer again; it should present you a **Modify** button. Running the installer from *Add/Remove Programs* will only give you a **Repair** option, which won't let you install C++ tools." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:83 +#: ../../docs/development/compiling/compiling_for_windows.rst:80 msgid "Downloading Godot's source" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:85 +#: ../../docs/development/compiling/compiling_for_windows.rst:82 msgid "Godot's source code is `hosted on GitHub `_. Downloading it (cloning) using `Git `_ is recommended." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:88 +#: ../../docs/development/compiling/compiling_for_windows.rst:85 msgid "The tutorial will assume from now on that you placed the source code in ``C:\\godot``." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:93 +#: ../../docs/development/compiling/compiling_for_windows.rst:90 msgid "To prevent slowdowns caused by continuous virus scanning during compilation, add the Godot source folder to the list of exceptions in your antivirus software." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:97 +#: ../../docs/development/compiling/compiling_for_windows.rst:94 msgid "For Windows Defender, hit the :kbd:`Windows` key, type \"Windows Defender Settings\" then hit :kbd:`Enter`. Under **Virus & threat protection**, go to **Virus & threat protection setting** and scroll down to **Exclusions**. Click **Add or remove exclusions** then add the Godot source folder." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:104 +#: ../../docs/development/compiling/compiling_for_windows.rst:101 msgid "Compiling" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:107 +#: ../../docs/development/compiling/compiling_for_windows.rst:104 msgid "Selecting a compiler" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:109 +#: ../../docs/development/compiling/compiling_for_windows.rst:106 msgid "SCons will automatically find and use an existing Visual Studio installation. If you do not have Visual Studio installed, it will attempt to use MinGW instead. If you already have Visual Studio installed and want to use MinGW, pass ``use_mingw=yes`` to the SCons command line. Note that MSVC builds cannot be performed from the MSYS2 or MinGW shells. Use either ``cmd.exe`` or PowerShell instead." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:116 +#: ../../docs/development/compiling/compiling_for_windows.rst:113 msgid "During development, using the Visual Studio compiler is usually a better idea, as it links the Godot binary much faster than MinGW. However, MinGW can produce more optimized binaries using link-time optimization (see below), making it a better choice for production use." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:122 +#: ../../docs/development/compiling/compiling_for_windows.rst:119 msgid "Running SCons" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:124 +#: ../../docs/development/compiling/compiling_for_windows.rst:121 msgid "After opening a command prompt, change to the root directory of the engine source code (using ``cd``) and type::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:129 +#: ../../docs/development/compiling/compiling_for_windows.rst:126 msgid "You can specify a number of CPU threads to use to speed up the build::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:133 +#: ../../docs/development/compiling/compiling_for_windows.rst:130 msgid "In general, it is OK to have at least as many threads compiling Godot as you have cores in your CPU, if not one or two more. Feel free to add the ``-j`` option to any SCons command you see below." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:137 +#: ../../docs/development/compiling/compiling_for_windows.rst:134 msgid "When compiling with multiple CPU threads, SCons may warn about pywin32 being missing. You can safely ignore this warning." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:140 +#: ../../docs/development/compiling/compiling_for_windows.rst:137 msgid "If all goes well, the resulting binary executable will be placed in ``C:\\godot\\bin\\`` with the name ``godot.windows.tools.32.exe`` or ``godot.windows.tools.64.exe``. By default, SCons will build a binary matching your CPU architecture, but this can be overridden using ``bits=64`` or ``bits=32``." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:146 +#: ../../docs/development/compiling/compiling_for_windows.rst:143 msgid "This executable file contains the whole engine and runs without any dependencies. Running it will bring up the Project Manager." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:149 +#: ../../docs/development/compiling/compiling_for_windows.rst:146 msgid "If you are compiling Godot for production use, then you can make the final executable smaller and faster by adding the SCons option ``target=release_debug``." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:153 +#: ../../docs/development/compiling/compiling_for_windows.rst:150 msgid "If you are compiling Godot with MinGW, you can make the binary even smaller and faster by adding the SCons option ``use_lto=yes``. As link-time optimization is a memory-intensive process, this will require about 7 GB of available RAM while compiling." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:158 +#: ../../docs/development/compiling/compiling_for_windows.rst:155 msgid "If you want to use separate editor settings for your own Godot builds and official releases, you can enable :ref:`doc_data_paths_self_contained_mode` by creating a file called ``._sc_`` or ``_sc_`` in the ``bin/`` folder." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:164 +#: ../../docs/development/compiling/compiling_for_windows.rst:161 msgid "Development in Visual Studio or other IDEs" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:166 +#: ../../docs/development/compiling/compiling_for_windows.rst:163 msgid "For most projects, using only scripting is enough but when development in C++ is needed, for creating modules or extending the engine, working with an IDE is usually desirable." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:170 +#: ../../docs/development/compiling/compiling_for_windows.rst:167 msgid "You can create a Visual Studio solution via SCons by running SCons with the ``vsproj=yes`` parameter, like this::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:175 +#: ../../docs/development/compiling/compiling_for_windows.rst:172 msgid "You will be able to open Godot's source in a Visual Studio solution now, and able to build Godot using Visual Studio's **Build** button." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:178 +#: ../../docs/development/compiling/compiling_for_windows.rst:175 msgid "If you need to edit the build commands, they are located in \"Godot\" project settings, NMAKE sheet. SCons is called at the end of the commands. If you make a mistake, copy the command from one of the other build configurations (debug, release_debug, release) or architectures (Win32/x64); they are equivalent." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:185 +#: ../../docs/development/compiling/compiling_for_windows.rst:182 msgid "Cross-compiling for Windows from other operating systems" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:187 +#: ../../docs/development/compiling/compiling_for_windows.rst:184 msgid "If you are a Linux or macOS user, you need to install `MinGW-w64 `__, which typically comes in 32-bit and 64-bit variants. The package names may differ based on your distribution, here are some known ones:" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:193 +#: ../../docs/development/compiling/compiling_for_windows.rst:190 msgid "**Arch Linux**" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:193 +#: ../../docs/development/compiling/compiling_for_windows.rst:190 msgid "Install `mingw-w64-gcc from the AUR`_." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:195 +#: ../../docs/development/compiling/compiling_for_windows.rst:192 msgid "**Debian** / **Ubuntu**" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:199 +#: ../../docs/development/compiling/compiling_for_windows.rst:196 msgid "**Fedora**" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:204 +#: ../../docs/development/compiling/compiling_for_windows.rst:201 msgid "**macOS**" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:208 +#: ../../docs/development/compiling/compiling_for_windows.rst:205 msgid "**Mageia**" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:216 +#: ../../docs/development/compiling/compiling_for_windows.rst:213 msgid "Before attempting the compilation, SCons will check for the following binaries in your ``PATH`` environment variable::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:222 +#: ../../docs/development/compiling/compiling_for_windows.rst:219 msgid "If the binaries are not located in the ``PATH`` (e.g. ``/usr/bin``), you can define the following environment variables to give a hint to the build system::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:229 +#: ../../docs/development/compiling/compiling_for_windows.rst:226 msgid "To make sure you are doing things correctly, executing the following in the shell should result in a working compiler (the version output may differ based on your system)::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:237 +#: ../../docs/development/compiling/compiling_for_windows.rst:234 msgid "Troubleshooting" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:239 +#: ../../docs/development/compiling/compiling_for_windows.rst:236 msgid "Cross-compiling from some Ubuntu versions may lead to `this bug `_, due to a default configuration lacking support for POSIX threading." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:243 +#: ../../docs/development/compiling/compiling_for_windows.rst:240 msgid "You can change that configuration following those instructions, for 64-bit::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:251 +#: ../../docs/development/compiling/compiling_for_windows.rst:248 msgid "And for 32-bit::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:259 +#: ../../docs/development/compiling/compiling_for_windows.rst:256 msgid "Creating Windows export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:261 +#: ../../docs/development/compiling/compiling_for_windows.rst:258 msgid "Windows export templates are created by compiling Godot without the editor, with the following flags::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:269 +#: ../../docs/development/compiling/compiling_for_windows.rst:266 msgid "If you plan on replacing the standard export templates, copy these to the following location, replacing ```` with the version identifier (such as ``3.1.1.stable`` or ``3.2.dev``)::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:275 +#: ../../docs/development/compiling/compiling_for_windows.rst:272 msgid "With the following names::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:282 +#: ../../docs/development/compiling/compiling_for_windows.rst:279 msgid "However, if you are using custom modules or custom engine code, you may instead want to configure your binaries as custom export templates here:" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:288 +#: ../../docs/development/compiling/compiling_for_windows.rst:285 msgid "You don't need to copy them in this case, just reference the resulting files in the ``bin\\`` directory of your Godot source folder, so the next time you build, you will automatically have the custom templates referenced." msgstr "" diff --git a/sphinx/templates/development/compiling/compiling_for_x11.pot b/sphinx/templates/development/compiling/compiling_for_x11.pot index 18f6703906..071897b518 100644 --- a/sphinx/templates/development/compiling/compiling_for_x11.pot +++ b/sphinx/templates/development/compiling/compiling_for_x11.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -169,73 +169,77 @@ msgid "To compile a *headless* build which provides editor functionality to expo msgstr "" #: ../../docs/development/compiling/compiling_for_x11.rst:145 +msgid "To compile a debug *server* build which can be used with :ref:`remote debugging tools `, use::" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:150 msgid "To compile a *server* build which is optimized to run dedicated game servers, use::" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:151 +#: ../../docs/development/compiling/compiling_for_x11.rst:156 msgid "Building export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:153 +#: ../../docs/development/compiling/compiling_for_x11.rst:158 msgid "Linux binaries usually won't run on distributions that are older than the distribution they were built on. If you wish to distribute binaries that work on most distributions, you should build them on an old distribution such as Ubuntu 16.04. You can use a virtual machine or a container to set up a suitable build environment." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:161 +#: ../../docs/development/compiling/compiling_for_x11.rst:166 msgid "To build X11 (Linux, \\*BSD) export templates, run the build system with the following parameters:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:164 +#: ../../docs/development/compiling/compiling_for_x11.rst:169 msgid "(32 bits)" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:171 +#: ../../docs/development/compiling/compiling_for_x11.rst:176 msgid "(64 bits)" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:178 +#: ../../docs/development/compiling/compiling_for_x11.rst:183 msgid "Note that cross-compiling for the opposite bits (64/32) as your host platform is not always straight-forward and might need a chroot environment." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:181 +#: ../../docs/development/compiling/compiling_for_x11.rst:186 msgid "To create standard export templates, the resulting files must be copied to:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:187 +#: ../../docs/development/compiling/compiling_for_x11.rst:192 msgid "and named like this (even for \\*BSD which is seen as \"Linux X11\" by Godot):" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:196 +#: ../../docs/development/compiling/compiling_for_x11.rst:201 msgid "However, if you are writing your custom modules or custom C++ code, you might instead want to configure your binaries as custom export templates here:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:202 +#: ../../docs/development/compiling/compiling_for_x11.rst:207 msgid "You don't even need to copy them, you can just reference the resulting files in the ``bin/`` directory of your Godot source folder, so the next time you build, you automatically have the custom templates referenced." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:207 +#: ../../docs/development/compiling/compiling_for_x11.rst:212 msgid "Using Clang and LLD for faster development" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:209 +#: ../../docs/development/compiling/compiling_for_x11.rst:214 msgid "You can also use Clang and LLD to build Godot. This has two upsides compared to the default GCC + GNU ld setup:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:212 +#: ../../docs/development/compiling/compiling_for_x11.rst:217 msgid "LLD links Godot significantly faster compared to GNU ld or gold. This leads to faster iteration times." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:214 +#: ../../docs/development/compiling/compiling_for_x11.rst:219 msgid "Clang tends to give more useful error messages compared to GCC." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:216 +#: ../../docs/development/compiling/compiling_for_x11.rst:221 msgid "To do so, install Clang and the ``lld`` package from your distribution's package manager then use the following SCons command::" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:221 +#: ../../docs/development/compiling/compiling_for_x11.rst:226 msgid "After the build is completed, a new binary with a ``.llvm`` suffix will be created in the ``bin/`` folder." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:224 +#: ../../docs/development/compiling/compiling_for_x11.rst:229 msgid "It's still recommended to use GCC for production builds as they can be compiled using link-time optimization, making the resulting binaries smaller and faster." msgstr "" diff --git a/sphinx/templates/development/compiling/compiling_with_mono.pot b/sphinx/templates/development/compiling/compiling_with_mono.pot index 0197c4f7dd..0a8a836b3e 100644 --- a/sphinx/templates/development/compiling/compiling_with_mono.pot +++ b/sphinx/templates/development/compiling/compiling_with_mono.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/compiling_with_script_encryption_key.pot b/sphinx/templates/development/compiling/compiling_with_script_encryption_key.pot index 8fcc1438a0..c07589864e 100644 --- a/sphinx/templates/development/compiling/compiling_with_script_encryption_key.pot +++ b/sphinx/templates/development/compiling/compiling_with_script_encryption_key.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/cross-compiling_for_ios_on_linux.pot b/sphinx/templates/development/compiling/cross-compiling_for_ios_on_linux.pot index 330b00123e..922ca5fc12 100644 --- a/sphinx/templates/development/compiling/cross-compiling_for_ios_on_linux.pot +++ b/sphinx/templates/development/compiling/cross-compiling_for_ios_on_linux.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/getting_source.pot b/sphinx/templates/development/compiling/getting_source.pot index 25c514d1dd..b3dd71ce38 100644 --- a/sphinx/templates/development/compiling/getting_source.pot +++ b/sphinx/templates/development/compiling/getting_source.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/index.pot b/sphinx/templates/development/compiling/index.pot index 46f97f0de4..ff4c363172 100644 --- a/sphinx/templates/development/compiling/index.pot +++ b/sphinx/templates/development/compiling/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/introduction_to_the_buildsystem.pot b/sphinx/templates/development/compiling/introduction_to_the_buildsystem.pot index 9cf7b375e8..53c13e404d 100644 --- a/sphinx/templates/development/compiling/introduction_to_the_buildsystem.pot +++ b/sphinx/templates/development/compiling/introduction_to_the_buildsystem.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/compiling/optimizing_for_size.pot b/sphinx/templates/development/compiling/optimizing_for_size.pot index 9fe87657c0..5817c09a35 100644 --- a/sphinx/templates/development/compiling/optimizing_for_size.pot +++ b/sphinx/templates/development/compiling/optimizing_for_size.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -76,38 +76,38 @@ msgstr "" msgid "Alternatively, you can supply a list of disabled modules by creating ``custom.py`` at the root of the source, with the contents similar to the following:" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:117 +#: ../../docs/development/compiling/optimizing_for_size.rst:116 msgid ":ref:`doc_overriding_build_options`." msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:120 +#: ../../docs/development/compiling/optimizing_for_size.rst:119 msgid "Optimizing for size instead of speed" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:122 +#: ../../docs/development/compiling/optimizing_for_size.rst:121 msgid "Godot 3.1 onwards allows compiling using size optimizations (instead of speed). To enable this, set the ``optimize`` flag to ``size``:" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:129 +#: ../../docs/development/compiling/optimizing_for_size.rst:128 msgid "Some platforms such as WebAssembly already use this mode by default." msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:132 +#: ../../docs/development/compiling/optimizing_for_size.rst:131 msgid "Compiling with link-time optimization" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:134 +#: ../../docs/development/compiling/optimizing_for_size.rst:133 msgid "Enabling link-time optimization produces more efficient binaries, both in terms of performance and file size. It works by eliminating duplicate template functions and unused code. It can currently be used with the GCC and MSVC compilers:" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:143 +#: ../../docs/development/compiling/optimizing_for_size.rst:142 msgid "Linking becomes much slower and more RAM consuming with this option, so it should be used only for release builds." msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:147 +#: ../../docs/development/compiling/optimizing_for_size.rst:146 msgid "Stripping binaries" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:149 +#: ../../docs/development/compiling/optimizing_for_size.rst:148 msgid "If you build from source, remember to strip debug symbols from binaries:" msgstr "" diff --git a/sphinx/templates/development/cpp/binding_to_external_libraries.pot b/sphinx/templates/development/cpp/binding_to_external_libraries.pot index fa5d81e5bb..573cabe485 100644 --- a/sphinx/templates/development/cpp/binding_to_external_libraries.pot +++ b/sphinx/templates/development/cpp/binding_to_external_libraries.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/common_engine_methods_and_macros.pot b/sphinx/templates/development/cpp/common_engine_methods_and_macros.pot index fab3cfd613..dd17eb6036 100644 --- a/sphinx/templates/development/cpp/common_engine_methods_and_macros.pot +++ b/sphinx/templates/development/cpp/common_engine_methods_and_macros.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/configuring_an_ide/android_studio.pot b/sphinx/templates/development/cpp/configuring_an_ide/android_studio.pot index 3d9c0389f5..4e3915b5ce 100644 --- a/sphinx/templates/development/cpp/configuring_an_ide/android_studio.pot +++ b/sphinx/templates/development/cpp/configuring_an_ide/android_studio.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/configuring_an_ide/clion.pot b/sphinx/templates/development/cpp/configuring_an_ide/clion.pot index 23fa54f527..f11deae75c 100644 --- a/sphinx/templates/development/cpp/configuring_an_ide/clion.pot +++ b/sphinx/templates/development/cpp/configuring_an_ide/clion.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/configuring_an_ide/code_blocks.pot b/sphinx/templates/development/cpp/configuring_an_ide/code_blocks.pot index 450c453161..80cfbf19eb 100644 --- a/sphinx/templates/development/cpp/configuring_an_ide/code_blocks.pot +++ b/sphinx/templates/development/cpp/configuring_an_ide/code_blocks.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/configuring_an_ide/index.pot b/sphinx/templates/development/cpp/configuring_an_ide/index.pot index ff47d868a1..38a0033765 100644 --- a/sphinx/templates/development/cpp/configuring_an_ide/index.pot +++ b/sphinx/templates/development/cpp/configuring_an_ide/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/configuring_an_ide/kdevelop.pot b/sphinx/templates/development/cpp/configuring_an_ide/kdevelop.pot index 7ec086728e..4a38098e57 100644 --- a/sphinx/templates/development/cpp/configuring_an_ide/kdevelop.pot +++ b/sphinx/templates/development/cpp/configuring_an_ide/kdevelop.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/configuring_an_ide/qt_creator.pot b/sphinx/templates/development/cpp/configuring_an_ide/qt_creator.pot index b76e734c9e..df420fe93d 100644 --- a/sphinx/templates/development/cpp/configuring_an_ide/qt_creator.pot +++ b/sphinx/templates/development/cpp/configuring_an_ide/qt_creator.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/configuring_an_ide/visual_studio.pot b/sphinx/templates/development/cpp/configuring_an_ide/visual_studio.pot index c66a8963eb..34312b1e15 100644 --- a/sphinx/templates/development/cpp/configuring_an_ide/visual_studio.pot +++ b/sphinx/templates/development/cpp/configuring_an_ide/visual_studio.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/configuring_an_ide/visual_studio_code.pot b/sphinx/templates/development/cpp/configuring_an_ide/visual_studio_code.pot index 62c47b19d3..dd3a7146b3 100644 --- a/sphinx/templates/development/cpp/configuring_an_ide/visual_studio_code.pot +++ b/sphinx/templates/development/cpp/configuring_an_ide/visual_studio_code.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/configuring_an_ide/xcode.pot b/sphinx/templates/development/cpp/configuring_an_ide/xcode.pot index e58d7a86b3..4b5ab07ff0 100644 --- a/sphinx/templates/development/cpp/configuring_an_ide/xcode.pot +++ b/sphinx/templates/development/cpp/configuring_an_ide/xcode.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/core_types.pot b/sphinx/templates/development/cpp/core_types.pot index 16d785b289..46b2d2e438 100644 --- a/sphinx/templates/development/cpp/core_types.pot +++ b/sphinx/templates/development/cpp/core_types.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/custom_audiostreams.pot b/sphinx/templates/development/cpp/custom_audiostreams.pot index d8bb3c5e84..21cfbb8fe7 100644 --- a/sphinx/templates/development/cpp/custom_audiostreams.pot +++ b/sphinx/templates/development/cpp/custom_audiostreams.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/custom_godot_servers.pot b/sphinx/templates/development/cpp/custom_godot_servers.pot index faef858f6b..651bd0766f 100644 --- a/sphinx/templates/development/cpp/custom_godot_servers.pot +++ b/sphinx/templates/development/cpp/custom_godot_servers.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/custom_modules_in_cpp.pot b/sphinx/templates/development/cpp/custom_modules_in_cpp.pot index c1ab617a19..e84fa898ba 100644 --- a/sphinx/templates/development/cpp/custom_modules_in_cpp.pot +++ b/sphinx/templates/development/cpp/custom_modules_in_cpp.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/custom_resource_format_loaders.pot b/sphinx/templates/development/cpp/custom_resource_format_loaders.pot index 9f8e807f75..5f4614e9da 100644 --- a/sphinx/templates/development/cpp/custom_resource_format_loaders.pot +++ b/sphinx/templates/development/cpp/custom_resource_format_loaders.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/index.pot b/sphinx/templates/development/cpp/index.pot index c72c1c1258..8a05138653 100644 --- a/sphinx/templates/development/cpp/index.pot +++ b/sphinx/templates/development/cpp/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/inheritance_class_tree.pot b/sphinx/templates/development/cpp/inheritance_class_tree.pot index 67317e4d2f..c72ddca50f 100644 --- a/sphinx/templates/development/cpp/inheritance_class_tree.pot +++ b/sphinx/templates/development/cpp/inheritance_class_tree.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/introduction_to_godot_development.pot b/sphinx/templates/development/cpp/introduction_to_godot_development.pot index 366221fea7..95668b7ab2 100644 --- a/sphinx/templates/development/cpp/introduction_to_godot_development.pot +++ b/sphinx/templates/development/cpp/introduction_to_godot_development.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/object_class.pot b/sphinx/templates/development/cpp/object_class.pot index cb7cf7c75d..f960711305 100644 --- a/sphinx/templates/development/cpp/object_class.pot +++ b/sphinx/templates/development/cpp/object_class.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/using_cpp_profilers.pot b/sphinx/templates/development/cpp/using_cpp_profilers.pot index b5b93de421..b055565aa4 100644 --- a/sphinx/templates/development/cpp/using_cpp_profilers.pot +++ b/sphinx/templates/development/cpp/using_cpp_profilers.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/cpp/variant_class.pot b/sphinx/templates/development/cpp/variant_class.pot index 22122276b6..312908425f 100644 --- a/sphinx/templates/development/cpp/variant_class.pot +++ b/sphinx/templates/development/cpp/variant_class.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/editor/creating_icons.pot b/sphinx/templates/development/editor/creating_icons.pot index 73d844f29f..c71060459b 100644 --- a/sphinx/templates/development/editor/creating_icons.pot +++ b/sphinx/templates/development/editor/creating_icons.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/editor/editor_style_guide.pot b/sphinx/templates/development/editor/editor_style_guide.pot index 96473836b8..eb2d810f27 100644 --- a/sphinx/templates/development/editor/editor_style_guide.pot +++ b/sphinx/templates/development/editor/editor_style_guide.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/editor/index.pot b/sphinx/templates/development/editor/index.pot index 4c0f051168..e2a074f45c 100644 --- a/sphinx/templates/development/editor/index.pot +++ b/sphinx/templates/development/editor/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/editor/introduction_to_editor_development.pot b/sphinx/templates/development/editor/introduction_to_editor_development.pot index 3c351ccea3..f6be5abc1f 100644 --- a/sphinx/templates/development/editor/introduction_to_editor_development.pot +++ b/sphinx/templates/development/editor/introduction_to_editor_development.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -45,7 +45,7 @@ msgid "Technical choices" msgstr "" #: ../../docs/development/editor/introduction_to_editor_development.rst:24 -msgid "The Godot editor is drawn using Godot's renderer and :ref:`UI system `. It does *not* rely on a toolkit such as GTK or Qt. This is similar in spirit to software like Blender. While using toolkits makes it easier to achieve a \"native\" appearance, they are also quite heavy and their licensing is not compatible with Godot's." +msgid "The Godot editor is drawn using Godot's renderer and :ref:`UI system `. It does *not* rely on a toolkit such as GTK or Qt. This is similar in spirit to software like Blender. While using toolkits makes it easier to achieve a \"native\" appearance, they are also quite heavy and their licensing is not compatible with Godot's." msgstr "" #: ../../docs/development/editor/introduction_to_editor_development.rst:30 diff --git a/sphinx/templates/development/file_formats/gdscript_grammar.pot b/sphinx/templates/development/file_formats/gdscript_grammar.pot index 0ee89ec03b..446646386d 100644 --- a/sphinx/templates/development/file_formats/gdscript_grammar.pot +++ b/sphinx/templates/development/file_formats/gdscript_grammar.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/file_formats/index.pot b/sphinx/templates/development/file_formats/index.pot index 0d2074b637..00b60050d8 100644 --- a/sphinx/templates/development/file_formats/index.pot +++ b/sphinx/templates/development/file_formats/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/development/file_formats/tscn.pot b/sphinx/templates/development/file_formats/tscn.pot index 486397e9d2..72487d5a61 100644 --- a/sphinx/templates/development/file_formats/tscn.pot +++ b/sphinx/templates/development/file_formats/tscn.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,412 +21,412 @@ msgid "TSCN file format" msgstr "" #: ../../docs/development/file_formats/tscn.rst:6 -msgid "The TSCN (text scene) file format represents a single scene tree inside Godot. TSCN files have the advantage of being mostly human-readable and easy for version control systems to manage. During import, TSCN files are compiled into binary ``.scn`` files stored inside the .import folder. This reduces the data size and speeds up loading." +msgid "The TSCN (text scene) file format represents a single scene tree inside Godot. Unlike binary SCN files, TSCN files have the advantage of being mostly human-readable and easy for version control systems to manage." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:12 -msgid "The ESCN (exported scene) file format is identical to the TSCN file format, but is used to indicate to Godot that the file has been exported from another program and should not be edited by the user from within Godot." +#: ../../docs/development/file_formats/tscn.rst:10 +msgid "The ESCN (exported scene) file format is identical to the TSCN file format, but is used to indicate to Godot that the file has been exported from another program and should not be edited by the user from within Godot. Unlike SCN and TSCN files, during import, ESCN files are compiled to binary SCN files stored inside the ``.import/`` folder. This reduces the data size and speeds up loading, as binary formats are faster to load compared to text-based formats." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:16 +#: ../../docs/development/file_formats/tscn.rst:18 msgid "For those looking for a complete description, the parsing is handled in the file `resource_format_text.cpp `_ in the ``ResourceFormatLoaderText`` class." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:21 +#: ../../docs/development/file_formats/tscn.rst:23 msgid "File structure" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:23 +#: ../../docs/development/file_formats/tscn.rst:25 msgid "There are five main sections inside the TSCN file:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:25 +#: ../../docs/development/file_formats/tscn.rst:27 msgid "File Descriptor" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:26 -#: ../../docs/development/file_formats/tscn.rst:277 +#: ../../docs/development/file_formats/tscn.rst:28 +#: ../../docs/development/file_formats/tscn.rst:279 msgid "External resources" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:27 -#: ../../docs/development/file_formats/tscn.rst:299 +#: ../../docs/development/file_formats/tscn.rst:29 +#: ../../docs/development/file_formats/tscn.rst:301 msgid "Internal resources" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:28 +#: ../../docs/development/file_formats/tscn.rst:30 msgid "Nodes" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:29 +#: ../../docs/development/file_formats/tscn.rst:31 msgid "Connections" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:31 +#: ../../docs/development/file_formats/tscn.rst:33 msgid "The file descriptor looks like ``[gd_scene load_steps=3 format=2]`` and should be the first entry in the file. The ``load_steps`` parameter is equal to the total amount of resources (internal and external) plus one (for the file itself). If the file has no resources, ``load_steps`` is omitted. The engine will still load the file correctly if ``load_steps`` is incorrect, but this will affect loading bars and any other piece of code relying on that value." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:38 +#: ../../docs/development/file_formats/tscn.rst:40 msgid "These sections should appear in order, but it can be hard to distinguish them. The only difference between them is the first element in the heading for all of the items in the section. For example, the heading of all external resources should start with ``[ext_resource .....]``." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:43 +#: ../../docs/development/file_formats/tscn.rst:45 msgid "A TSCN file may contain single-line comments starting with a semicolon (``;``). However, comments will be discarded when saving the file using the Godot editor." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:47 +#: ../../docs/development/file_formats/tscn.rst:49 msgid "Entries inside the file" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:49 +#: ../../docs/development/file_formats/tscn.rst:51 msgid "A heading looks like ``[ key=value key=value key=value ...]`` where resource_type is one of:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:53 +#: ../../docs/development/file_formats/tscn.rst:55 msgid "``ext_resource``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:54 +#: ../../docs/development/file_formats/tscn.rst:56 msgid "``sub_resource``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:55 +#: ../../docs/development/file_formats/tscn.rst:57 msgid "``node``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:56 +#: ../../docs/development/file_formats/tscn.rst:58 msgid "``connection``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:58 +#: ../../docs/development/file_formats/tscn.rst:60 msgid "Below every heading comes zero or more ``key = value`` pairs. The values can be complex datatypes such as Arrays, Transforms, Colors, and so on. For example, a spatial node looks like:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:69 +#: ../../docs/development/file_formats/tscn.rst:71 msgid "The scene tree" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:71 +#: ../../docs/development/file_formats/tscn.rst:73 msgid "The scene tree is made up of… nodes! The heading of each node consists of its name, parent and (most of the time) a type. For example ``[node type=\"Camera\" name=\"PlayerCamera\" parent=\"Player/Head\"]``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:75 +#: ../../docs/development/file_formats/tscn.rst:77 msgid "Other valid keywords include:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:77 +#: ../../docs/development/file_formats/tscn.rst:79 msgid "``instance``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:78 +#: ../../docs/development/file_formats/tscn.rst:80 msgid "``instance_placeholder``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:79 +#: ../../docs/development/file_formats/tscn.rst:81 msgid "``owner``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:80 +#: ../../docs/development/file_formats/tscn.rst:82 msgid "``index`` (if two nodes have the same name)" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:81 +#: ../../docs/development/file_formats/tscn.rst:83 msgid "``groups``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:83 +#: ../../docs/development/file_formats/tscn.rst:85 msgid "The first node in the file, which is also the scene root, must not have a ``parent=Path/To/Node`` entry in its heading. All scene files should have exactly *one* scene root. If it doesn't, Godot will fail to import the file. The parent path of other nodes should be absolute, but shouldn't contain the scene root's name. If the node is a direct child of the scene root, the path should be ``\".\"``. Here is an example scene tree (but without any node content):" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:99 +#: ../../docs/development/file_formats/tscn.rst:101 msgid "Similar to the internal resource, the document for each node is currently incomplete. Fortunately, it is easy to find out because you can simply save a file with that node in it. Some example nodes are:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:138 +#: ../../docs/development/file_formats/tscn.rst:140 msgid "NodePath" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:140 +#: ../../docs/development/file_formats/tscn.rst:142 msgid "A tree structure is not enough to represent the whole scene. Godot uses a ``NodePath(Path/To/Node)`` structure to refer to another node or attribute of the node anywhere in the scene tree. For instance, MeshInstance uses ``NodePath()`` to point to its skeleton. Likewise, Animation tracks use ``NodePath()`` to point to node properties to animate." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:165 +#: ../../docs/development/file_formats/tscn.rst:167 msgid "Skeleton" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:167 +#: ../../docs/development/file_formats/tscn.rst:169 msgid "The Skeleton node inherits the Spatial node, but also may have a list of bones described in key-value pairs in the format ``bones/Id/Attribute=Value``. The bone attributes consist of:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:171 +#: ../../docs/development/file_formats/tscn.rst:173 msgid "``name``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:172 +#: ../../docs/development/file_formats/tscn.rst:174 msgid "``parent``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:173 +#: ../../docs/development/file_formats/tscn.rst:175 msgid "``rest``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:174 +#: ../../docs/development/file_formats/tscn.rst:176 msgid "``pose``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:175 -#: ../../docs/development/file_formats/tscn.rst:395 +#: ../../docs/development/file_formats/tscn.rst:177 +#: ../../docs/development/file_formats/tscn.rst:397 msgid "``enabled``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:176 +#: ../../docs/development/file_formats/tscn.rst:178 msgid "``bound_children``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:178 +#: ../../docs/development/file_formats/tscn.rst:180 msgid "``name`` must be the first attribute of each bone." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:179 +#: ../../docs/development/file_formats/tscn.rst:181 msgid "``parent`` is the index of parent bone in the bone list, with parent index, the bone list is built to a bone tree." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:181 +#: ../../docs/development/file_formats/tscn.rst:183 msgid "``rest`` is the transform matrix of bone in its \"resting\" position." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:182 +#: ../../docs/development/file_formats/tscn.rst:184 msgid "``pose`` is the pose matrix; use ``rest`` as the basis." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:183 +#: ../../docs/development/file_formats/tscn.rst:185 msgid "``bound_children`` is a list of ``NodePath()`` which point to BoneAttachments belonging to this bone." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:186 +#: ../../docs/development/file_formats/tscn.rst:188 msgid "Here's an example of a skeleton node with two bones:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:207 +#: ../../docs/development/file_formats/tscn.rst:209 msgid "BoneAttachment" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:209 +#: ../../docs/development/file_formats/tscn.rst:211 msgid "BoneAttachment node is an intermediate node to describe some node being parented to a single bone in a Skeleton node. The BoneAttachment has a ``bone_name=NameOfBone`` attribute, and the corresponding bone being the parent has the BoneAttachment node in its ``bound_children`` list." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:214 +#: ../../docs/development/file_formats/tscn.rst:216 msgid "An example of one MeshInstance parented to a bone in Skeleton:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:239 +#: ../../docs/development/file_formats/tscn.rst:241 msgid "AnimationPlayer" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:241 +#: ../../docs/development/file_formats/tscn.rst:243 msgid "AnimationPlayer works as an animation library. It stores animations listed in the format ``anim/Name=SubResource(ResourceId)``; each line refers to an Animation resource. All the animation resources use the root node of AnimationPlayer. The root node is stored as ``root_node=NodePath(Path/To/Node)``." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:261 +#: ../../docs/development/file_formats/tscn.rst:263 msgid "Resources" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:263 +#: ../../docs/development/file_formats/tscn.rst:265 msgid "Resources are components that make up the nodes. For example, a MeshInstance node will have an accompanying ArrayMesh resource. The ArrayMesh resource may be either internal or external to the TSCN file." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:267 +#: ../../docs/development/file_formats/tscn.rst:269 msgid "References to the resources are handled by ``id`` numbers in the resource's heading. External resources and internal resources are referred to with ``ExtResource(id)`` and ``SubResource(id)``, respectively. Because there have different methods to refer to internal and external resources, you can have the same ID for both an internal and external resource." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:273 +#: ../../docs/development/file_formats/tscn.rst:275 msgid "For example, to refer to the resource ``[ext_resource id=3 type=\"PackedScene\" path=....]``, you would use ``ExtResource(3)``." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:279 +#: ../../docs/development/file_formats/tscn.rst:281 msgid "External resources are links to resources not contained within the TSCN file itself. An external resource consists of a path, a type and an ID." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:282 +#: ../../docs/development/file_formats/tscn.rst:284 msgid "Godot always generates absolute paths relative to the resource directory and thus prefixed with ``res://``, but paths relative to the TSCN file's location are also valid." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:286 +#: ../../docs/development/file_formats/tscn.rst:288 msgid "Some example external resources are:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:294 +#: ../../docs/development/file_formats/tscn.rst:296 msgid "Like TSCN files, a TRES file may contain single-line comments starting with a semicolon (``;``). However, comments will be discarded when saving the resource using the Godot editor." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:301 +#: ../../docs/development/file_formats/tscn.rst:303 msgid "A TSCN file can contain meshes, materials and other data. These are contained in the *internal resources* section of the file. The heading for an internal resource looks similar to those of external resources, except that it doesn't have a path. Internal resources also have ``key=value`` pairs under each heading. For example, a capsule collision shape looks like:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:315 +#: ../../docs/development/file_formats/tscn.rst:317 msgid "Some internal resources contain links to other internal resources (such as a mesh having a material). In this case, the referring resource must appear *before* the reference to it. This means that order matters in the file's internal resources section." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:320 +#: ../../docs/development/file_formats/tscn.rst:322 msgid "Unfortunately, documentation on the formats for these subresources isn't complete. Some examples can be found by inspecting saved resource files, but others can only be found by looking through Godot's source." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:325 +#: ../../docs/development/file_formats/tscn.rst:327 msgid "ArrayMesh" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:327 +#: ../../docs/development/file_formats/tscn.rst:329 msgid "ArrayMesh consists of several surfaces, each in the format ``surface\\Index={}``. Each surface is a set of vertices and a material." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:330 +#: ../../docs/development/file_formats/tscn.rst:332 msgid "TSCN files support two surface formats:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:332 +#: ../../docs/development/file_formats/tscn.rst:334 msgid "For the old format, each surface has three essential keys:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:334 +#: ../../docs/development/file_formats/tscn.rst:336 msgid "``primitive``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:335 +#: ../../docs/development/file_formats/tscn.rst:337 msgid "``arrays``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:336 +#: ../../docs/development/file_formats/tscn.rst:338 msgid "``morph_arrays``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:338 +#: ../../docs/development/file_formats/tscn.rst:340 msgid "``primitive`` is an enumerate variable, ``primitive=4`` which is ``PRIMITIVE_TRIANGLES`` is frequently used." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:341 +#: ../../docs/development/file_formats/tscn.rst:343 msgid "``arrays`` is a two-dimensional array, it contains:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:343 +#: ../../docs/development/file_formats/tscn.rst:345 msgid "Vertex positions array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:344 +#: ../../docs/development/file_formats/tscn.rst:346 msgid "Tangents array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:345 +#: ../../docs/development/file_formats/tscn.rst:347 msgid "Vertex colors array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:346 +#: ../../docs/development/file_formats/tscn.rst:348 msgid "UV array 1" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:347 +#: ../../docs/development/file_formats/tscn.rst:349 msgid "UV array 2" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:348 +#: ../../docs/development/file_formats/tscn.rst:350 msgid "Bone indexes array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:349 +#: ../../docs/development/file_formats/tscn.rst:351 msgid "Bone weights array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:350 +#: ../../docs/development/file_formats/tscn.rst:352 msgid "Vertex indexes array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:352 +#: ../../docs/development/file_formats/tscn.rst:354 msgid "``morph_arrays`` is an array of morphs. Each morph is exactly an ``arrays`` without the vertex indexes array." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:355 +#: ../../docs/development/file_formats/tscn.rst:357 msgid "An example of ArrayMesh:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:379 +#: ../../docs/development/file_formats/tscn.rst:381 msgid "Animation" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:381 +#: ../../docs/development/file_formats/tscn.rst:383 msgid "An animation resource consists of tracks. Besides, it has ``length``, ``loop`` and ``step`` applied to all the tracks." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:384 +#: ../../docs/development/file_formats/tscn.rst:386 msgid "``length`` and ``step`` are both durations in seconds." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:386 +#: ../../docs/development/file_formats/tscn.rst:388 msgid "Each track is described by a list of key-value pairs in the format ``tracks/Id/Attribute``. Each track includes:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:389 +#: ../../docs/development/file_formats/tscn.rst:391 msgid "``type``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:390 +#: ../../docs/development/file_formats/tscn.rst:392 msgid "``path``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:391 +#: ../../docs/development/file_formats/tscn.rst:393 msgid "``interp``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:392 +#: ../../docs/development/file_formats/tscn.rst:394 msgid "``keys``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:393 +#: ../../docs/development/file_formats/tscn.rst:395 msgid "``loop_wrap``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:394 +#: ../../docs/development/file_formats/tscn.rst:396 msgid "``imported``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:397 +#: ../../docs/development/file_formats/tscn.rst:399 msgid "The ``type`` must be the first attribute of each track. The value of ``type`` can be:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:400 +#: ../../docs/development/file_formats/tscn.rst:402 msgid "``transform``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:401 +#: ../../docs/development/file_formats/tscn.rst:403 msgid "``value``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:402 +#: ../../docs/development/file_formats/tscn.rst:404 msgid "``method``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:404 +#: ../../docs/development/file_formats/tscn.rst:406 msgid "The ``path`` has the format ``NodePath(Path/To/Node:attribute)``. It's the path to the animated node or attribute, relative to the root node defined in the AnimationPlayer." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:408 +#: ../../docs/development/file_formats/tscn.rst:410 msgid "The ``interp`` is the method to interpolate frames from the keyframes. It is an enum variable with one of the following values:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:411 +#: ../../docs/development/file_formats/tscn.rst:413 msgid "``0`` (constant)" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:412 +#: ../../docs/development/file_formats/tscn.rst:414 msgid "``1`` (linear)" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:413 +#: ../../docs/development/file_formats/tscn.rst:415 msgid "``2`` (cubic)" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:415 +#: ../../docs/development/file_formats/tscn.rst:417 msgid "The ``keys`` correspond to the keyframes. It appears as a ``PoolRealArray()``, but may have a different structure for tracks with different types." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:418 +#: ../../docs/development/file_formats/tscn.rst:420 msgid "A Transform track uses every 12 real numbers in the ``keys`` to describe a keyframe. The first number is the timestamp. The second number is the transition followed by a 3-number translation vector, followed by a 4-number rotation quaternion (X, Y, Z, W) and finally a 3-number scale vector. The default transition in a Transform track is 1.0." msgstr "" diff --git a/sphinx/templates/getting_started/editor/command_line_tutorial.pot b/sphinx/templates/getting_started/editor/command_line_tutorial.pot index ed5c883df5..48192ce383 100644 --- a/sphinx/templates/getting_started/editor/command_line_tutorial.pot +++ b/sphinx/templates/getting_started/editor/command_line_tutorial.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/editor/default_key_mapping.pot b/sphinx/templates/getting_started/editor/default_key_mapping.pot index 53b65d8edb..c0dbc1763b 100644 --- a/sphinx/templates/getting_started/editor/default_key_mapping.pot +++ b/sphinx/templates/getting_started/editor/default_key_mapping.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/editor/external_editor.pot b/sphinx/templates/getting_started/editor/external_editor.pot index 2383c17b54..07c9b15d23 100644 --- a/sphinx/templates/getting_started/editor/external_editor.pot +++ b/sphinx/templates/getting_started/editor/external_editor.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/editor/index.pot b/sphinx/templates/getting_started/editor/index.pot index 495577c949..4fdba85a42 100644 --- a/sphinx/templates/getting_started/editor/index.pot +++ b/sphinx/templates/getting_started/editor/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/editor/unity_to_godot.pot b/sphinx/templates/getting_started/editor/unity_to_godot.pot index d29eb30707..8db0b9090f 100644 --- a/sphinx/templates/getting_started/editor/unity_to_godot.pot +++ b/sphinx/templates/getting_started/editor/unity_to_godot.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/editor/using_the_web_editor.pot b/sphinx/templates/getting_started/editor/using_the_web_editor.pot index e46b7fa9dd..0b780d8261 100644 --- a/sphinx/templates/getting_started/editor/using_the_web_editor.pot +++ b/sphinx/templates/getting_started/editor/using_the_web_editor.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_basics.pot b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_basics.pot index a796e7d8d8..586e185cf9 100644 --- a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_basics.pot +++ b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_basics.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -116,7 +116,7 @@ msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:98 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:114 -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:142 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:146 msgid "In Godot's **Editor → Editor Settings** menu:" msgstr "" @@ -165,149 +165,153 @@ msgid "Install the `C# Tools for Godot `__ for the C# tools plugin to work." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:128 msgid "To configure a project for debugging open the Godot project folder in VS Code. Go to the Run tab and click on **create a launch.json file**. Select **C# Godot** from the dropdown menu. Now, when you start the debugger in VS Code your Godot project will run." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:129 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:133 msgid "Visual Studio (Windows only)" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:131 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:135 msgid "Download and install the latest version of `Visual Studio `__. Visual Studio will include the required SDKs if you have the correct workloads selected, so you don't need to manually install the things listed in the \"Prerequisites\" section." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:137 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:141 msgid "While installing Visual Studio, select these workloads:" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:139 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:143 msgid "Mobile development with .NET" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:140 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:144 msgid ".NET Core cross-platform development" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:144 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:148 msgid "Set **Mono** -> **Editor** -> **External Editor** to **Visual Studio**." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:146 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:150 msgid "Next, you need to download the Godot Visual Studio extension from github `here `__. Double click on the downloaded file and follow the installation process." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:152 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:156 msgid "Creating a C# script" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:154 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:158 msgid "After you successfully set up C# for Godot, you should see the following option when selecting **Attach Script** in the context menu of a node in your scene:" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:159 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:163 msgid "Note that while some specifics change, most concepts work the same when using C# for scripting. If you're new to Godot, you may want to follow the tutorials on :ref:`doc_scripting` at this point. While some places in the documentation still lack C# examples, most concepts can be transferred easily from GDScript." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:166 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:170 msgid "Project setup and workflow" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:168 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:172 msgid "When you create the first C# script, Godot initializes the C# project files for your Godot project. This includes generating a C# solution (``.sln``) and a project file (``.csproj``), as well as some utility files and folders (``.mono`` and ``Properties/AssemblyInfo.cs``). All of these but ``.mono`` are important and should be committed to your version control system. ``.mono`` can be safely added to the ignore list of your VCS. When troubleshooting, it can sometimes help to delete the ``.mono`` folder and let it regenerate." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:178 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:182 msgid "Example" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:180 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:184 msgid "Here's a blank C# script with some comments to demonstrate how it works." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:207 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:211 msgid "As you can see, functions normally in global scope in GDScript like Godot's ``print`` function are available in the ``GD`` class which is part of the ``Godot`` namespace. For a list of methods in the ``GD`` class, see the class reference pages for :ref:`@GDScript ` and :ref:`@GlobalScope `." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:214 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:218 msgid "Keep in mind that the class you wish to attach to your node should have the same name as the ``.cs`` file. Otherwise, you will get the following error and won't be able to run the scene: *\"Cannot find class XXX for script res://XXX.cs\"*" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:220 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:224 msgid "General differences between C# and GDScript" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:222 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:226 msgid "The C# API uses ``PascalCase`` instead of ``snake_case`` in GDScript/C++. Where possible, fields and getters/setters have been converted to properties. In general, the C# Godot API strives to be as idiomatic as is reasonably possible." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:226 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:230 msgid "For more information, see the :ref:`doc_c_sharp_differences` page." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:230 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:234 msgid "You need to (re)build the project assemblies whenever you want to see new exported variables or signals in the editor. This build can be manually triggered by clicking the word **Build** in the top right corner of the editor. You can also click **Mono** at the bottom of the editor window to reveal the Mono panel, then click the **Build Project** button." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:236 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:240 msgid "You will also need to rebuild the project assemblies to apply changes in \"tool\" scripts." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:240 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:244 msgid "Current gotchas and known issues" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:242 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:246 msgid "As C# support is quite new in Godot, there are some growing pains and things that need to be ironed out. Below is a list of the most important issues you should be aware of when diving into C# in Godot, but if in doubt, also take a look over the official `issue tracker for Mono issues `_." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:248 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:252 msgid "Writing editor plugins is possible, but it is currently quite convoluted." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:249 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:253 msgid "State is currently not saved and restored when hot-reloading, with the exception of exported variables." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:251 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:255 msgid "Attached C# scripts should refer to a class that has a class name that matches the file name." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:253 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:257 msgid "There are some methods such as ``Get()``/``Set()``, ``Call()``/``CallDeferred()`` and signal connection method ``Connect()`` that rely on Godot's ``snake_case`` API naming conventions. So when using e.g. ``CallDeferred(\"AddChild\")``, ``AddChild`` will not work because the API is expecting the original ``snake_case`` version ``add_child``. However, you can use any custom properties or methods without this limitation." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:261 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:265 msgid "Exporting Mono projects is supported for desktop platforms (Linux, Windows and macOS), Android, HTML5, and iOS. The only platform not supported yet is UWP." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:265 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:269 msgid "Performance of C# in Godot" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:267 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:271 msgid "According to some preliminary `benchmarks `_, the performance of C# in Godot — while generally in the same order of magnitude — is roughly **~4×** that of GDScript in some naive cases. C++ is still a little faster; the specifics are going to vary according to your use case. GDScript is likely fast enough for most general scripting workloads. C# is faster, but requires some expensive marshalling when talking to Godot." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:275 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:279 msgid "Using NuGet packages in Godot" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:277 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:281 msgid "`NuGet `_ packages can be installed and used with Godot, as with any C# project. Many IDEs are able to add packages directly. They can also be added manually by adding the package reference in the ``.csproj`` file located in the project root:" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:291 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:295 msgid "As of Godot 3.2.3, Godot automatically downloads and sets up newly added NuGet packages the next time it builds the project." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:295 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:299 msgid "Profiling your C# code" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:297 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:301 msgid "`Mono log profiler `_ is available for Linux and macOS. Due to a Mono change, it does not work on Windows currently." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:298 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:302 msgid "External Mono profiler like `JetBrains dotTrace `_ can be used as described `here `_." msgstr "" diff --git a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_differences.pot b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_differences.pot index f48f89eaf0..0aa7113c7f 100644 --- a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_differences.pot +++ b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_differences.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_exports.pot b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_exports.pot new file mode 100644 index 0000000000..2b24c0cec1 --- /dev/null +++ b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_exports.pot @@ -0,0 +1,237 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:4 +msgid "C# Exports" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:7 +msgid "Introduction to exports" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:9 +msgid "In Godot, class members can be exported. This means their value gets saved along with the resource (such as the :ref:`scene `) they're attached to. They will also be available for editing in the property editor. Exporting is done by using the ``[Export]`` attribute." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:22 +msgid "In that example the value ``5`` will be saved, and after building the current project it will be visible in the property editor. This way, artists and game designers can modify values that later influence how the program runs. For this, a special export syntax is provided." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:27 +msgid "Exporting can only be done with built-in types or objects derived from the :ref:`Resource class `." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:31 +msgid "Exporting properties can also be done in GDScript, for information on that see :ref:`doc_gdscript_exports`." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:35 +msgid "Basic use" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:37 +msgid "Exporting can work with and without setting a default value. For int and float ``0`` will then be used as the default." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:45 +msgid "Export works with resource types." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:54 +msgid "There are many resource types that can be used this way, try e.g. the following to list them:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:99 +msgid "Strings as paths" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:101 +msgid "Property hints can be used to export strings as paths" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:103 +msgid "String as a path to a file." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:110 +msgid "String as a path to a directory." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:117 +msgid "String as a path to a file, custom filter provided as hint." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:124 +msgid "Using paths in the global filesystem is also possible, but only in scripts in tool mode." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:127 +msgid "String as a path to a PNG file in the global filesystem." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:134 +msgid "String as a path to a directory in the global filesystem." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:141 +msgid "The multiline annotation tells the editor to show a large input field for editing over multiple lines." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:150 +msgid "Limiting editor input ranges" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:152 +msgid "Using the range property hint allows you to limit what can be input as a value using the editor." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:155 +msgid "Allow integer values from 0 to 20." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:162 +msgid "Allow integer values from -10 to 20." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:169 +msgid "Allow floats from -10 to 20 and snap the value to multiples of 0.2." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:176 +msgid "If you add the hints \"or_greater\" and/or \"or_lesser\" you can go above or below the limits when adjusting the value by typing it instead of using the slider." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:185 +msgid "Allow values 'y = exp(x)' where 'y' varies between 100 and 1000 while snapping to steps of 20. The editor will present a slider for easily editing the value. This only works with floats." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:195 +msgid "Floats with easing hint" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:197 +msgid "Display a visual representation of the 'ease()' function when editing." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:206 +msgid "Colors" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:208 +msgid "Regular color given as red-green-blue-alpha value." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:215 +msgid "Color given as red-green-blue value (alpha will always be 1)." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:223 +msgid "Nodes" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:225 +msgid "Nodes can't be directly exported. Instead you need to export a node path, then use that node path with ``GetNode()``." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:240 +msgid "Resources" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:247 +msgid "In the Inspector, you can then drag and drop a resource file from the FileSystem dock into the variable slot." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:250 +msgid "Opening the inspector dropdown may result in an extremely long list of possible classes to create, however. Therefore, if you specify an extension of Resource such as:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:259 +msgid "The drop-down menu will be limited to AnimationNode and all its inherited classes." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:262 +msgid "It must be noted that even if the script is not being run while in the editor, the exported properties are still editable. This can be used in conjunction with a :ref:`script in \"tool\" mode `." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:267 +msgid "Exporting bit flags" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:269 +msgid "Integers used as bit flags can store multiple ``true``/``false`` (boolean) values in one property. By using the ``Flags`` property hint, they can be set from the editor." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:279 +msgid "You must provide a string description for each flag. In this example, ``Fire`` has value 1, ``Water`` has value 2, ``Earth`` has value 4 and ``Wind`` corresponds to value 8. Usually, constants should be defined accordingly (e.g. ``private const int ElementWind = 8`` and so on)." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:284 +msgid "Export annotations are also provided for the physics and render layers defined in the project settings." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:297 +msgid "Using bit flags requires some understanding of bitwise operations. If in doubt, use boolean variables instead." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:301 +msgid "Exporting arrays" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:303 +msgid "Exported arrays should be initialized empty." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:313 +msgid "You can omit the default value, but then it would be null if not assigned." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:320 +msgid "Arrays with specified types which inherit from resource can be set by drag-and-dropping multiple files from the FileSystem dock." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:330 +msgid "Arrays where the default value includes run-time values can't be exported." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:339 +msgid "Setting exported variables from a tool script" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:341 +msgid "When changing an exported variable's value from a script in :ref:`doc_gdscript_tool_mode`, the value in the inspector won't be updated automatically. To update it, call :ref:`property_list_changed_notify() ` after setting the exported variable's value." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:348 +msgid "Advanced exports" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:350 +msgid "Not every type of export can be provided on the level of the language itself to avoid unnecessary design complexity. The following describes some more or less common exporting features which can be implemented with a low-level API." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:354 +msgid "Before reading further, you should get familiar with the way properties are handled and how they can be customized with :ref:`_set() `, :ref:`_get() `, and :ref:`_get_property_list() ` methods as described in :ref:`doc_accessing_data_or_logic_from_object`." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:361 +msgid "For binding properties using the above methods in C++, see :ref:`doc_binding_properties_using_set_get_property_list`." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:364 +msgid "The script must operate in the ``tool`` mode so the above methods can work from within the editor." +msgstr "" diff --git a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_features.pot b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_features.pot index 936b8fc112..73255fd0b9 100644 --- a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_features.pot +++ b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_features.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_style_guide.pot b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_style_guide.pot index 1eff04d8a3..26cf1c3741 100644 --- a/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_style_guide.pot +++ b/sphinx/templates/getting_started/scripting/c_sharp/c_sharp_style_guide.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/c_sharp/index.pot b/sphinx/templates/getting_started/scripting/c_sharp/index.pot index 127b178552..0f04c4121b 100644 --- a/sphinx/templates/getting_started/scripting/c_sharp/index.pot +++ b/sphinx/templates/getting_started/scripting/c_sharp/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/creating_script_templates.pot b/sphinx/templates/getting_started/scripting/creating_script_templates.pot index e38e459c57..39a5576053 100644 --- a/sphinx/templates/getting_started/scripting/creating_script_templates.pot +++ b/sphinx/templates/getting_started/scripting/creating_script_templates.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -81,7 +81,7 @@ msgid "Depending on whether a particular language implements a way to generate s msgstr "" #: ../../docs/getting_started/scripting/creating_script_templates.rst:52 -msgid "The script templates have the same extension as the regular script files. This may lead to an issue of a script parser treating those templates as actual scripts within a project. To avoid this, make sure to ignore the directory containing them by creating a ``.gdignore`` file. The directory won't be visible throughout the project's filesystem anymore, yet the templates can be modified by an external text editor anytime." +msgid "The script templates have the same extension as the regular script files. This may lead to an issue of a script parser treating those templates as actual scripts within a project. To avoid this, make sure to ignore the directory containing them by creating an empty ``.gdignore`` file. The directory won't be visible throughout the project's filesystem anymore, yet the templates can be modified by an external text editor anytime." msgstr "" #: ../../docs/getting_started/scripting/creating_script_templates.rst:59 diff --git a/sphinx/templates/getting_started/scripting/cross_language_scripting.pot b/sphinx/templates/getting_started/scripting/cross_language_scripting.pot index 35a4c9e569..ca244c2c11 100644 --- a/sphinx/templates/getting_started/scripting/cross_language_scripting.pot +++ b/sphinx/templates/getting_started/scripting/cross_language_scripting.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/gdscript/gdscript_advanced.pot b/sphinx/templates/getting_started/scripting/gdscript/gdscript_advanced.pot index e576c32bd3..46be8a525e 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/gdscript_advanced.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/gdscript_advanced.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -303,7 +303,7 @@ msgid "Yes, we should call it Hulk typing instead." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:516 -msgid "It's possible that the object being hit doesn't have a smash() function. Some dynamically typed languages simply ignore a method call when it doesn't exist (like Objective C), but GDScript is stricter, so checking if the function exists is desirable:" +msgid "It's possible that the object being hit doesn't have a smash() function. Some dynamically typed languages simply ignore a method call when it doesn't exist, but GDScript is stricter, so checking if the function exists is desirable:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:527 diff --git a/sphinx/templates/getting_started/scripting/gdscript/gdscript_basics.pot b/sphinx/templates/getting_started/scripting/gdscript/gdscript_basics.pot index e892e8eadf..d7b1b46dd3 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/gdscript_basics.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/gdscript_basics.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -103,7 +103,7 @@ msgid "else" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:149 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:848 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:873 msgid "for" msgstr "" @@ -112,7 +112,7 @@ msgid "See for_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:151 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:837 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:862 msgid "while" msgstr "" @@ -121,7 +121,7 @@ msgid "See while_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:153 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:883 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:908 msgid "match" msgstr "" @@ -459,1198 +459,1202 @@ msgid "Multiplication / Division / Remainder" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:246 -msgid "These operators have the same behavior as C++. Integer division is truncated rather than returning a fractional number, and the % operator is only available for ints (\"fmod\" for floats)" +msgid "These operators have the same behavior as C++. Integer division is truncated rather than returning a fractional number, and the % operator is only available for ints (\"fmod\" for floats), and is additionally used for Format Strings" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:252 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 msgid "``+``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:252 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 msgid "Addition / Concatenation of arrays" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 msgid "``-``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 msgid "Subtraction" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 msgid "``<<`` ``>>``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 msgid "Bit shifting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 msgid "``&``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 msgid "Bitwise AND" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 msgid "``^``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 msgid "Bitwise XOR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 msgid "``|``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 msgid "Bitwise OR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 msgid "``<`` ``>`` ``==`` ``!=`` ``>=`` ``<=``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 msgid "Comparisons" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:268 msgid "``in``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:268 msgid "Content test" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:268 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:270 msgid "``!`` ``not``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:268 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:270 msgid "Boolean NOT" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:270 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:272 msgid "``and`` ``&&``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:270 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:272 msgid "Boolean AND" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:272 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 msgid "``or`` ``||``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:272 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 msgid "Boolean OR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 msgid "``if x else``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 msgid "Ternary if/else" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 msgid "``as``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 msgid "Type casting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 -msgid "``=`` ``+=`` ``-=`` ``*=`` ``/=`` ``%=`` ``&=`` ``|=``" +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:280 +msgid "``=`` ``+=`` ``-=`` ``*=`` ``/=`` ``%=`` ``&=`` ``|=`` ``<<=`` ``>>=``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:280 msgid "Assignment (lowest priority)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:282 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:284 msgid "Literals" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:285 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 msgid "**Literal**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:285 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 msgid "**Type**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 msgid "``45``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 msgid "Base 10 integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 msgid "``0x8f51``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 msgid "Base 16 (hexadecimal) integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 msgid "``0b101010``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 msgid "Base 2 (binary) integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:295 msgid "``3.14``, ``58.1e-10``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:295 msgid "Floating-point number (real)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:295 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:297 msgid "``\"Hello\"``, ``\"Hi\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:295 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:297 msgid "Strings" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:297 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:299 msgid "``\"\"\"Hello\"\"\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:297 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:299 msgid "Multiline string" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:299 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:301 msgid "``@\"Node/Label\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:299 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:301 msgid ":ref:`class_NodePath` or StringName" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:301 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:303 msgid "``$NodePath``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:301 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:303 msgid "Shorthand for ``get_node(\"NodePath\")``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:304 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:306 msgid "Integers and floats can have their numbers separated with ``_`` to make them more readable. The following ways to write numbers are all valid::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:313 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:315 msgid "Comments" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:315 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:317 msgid "Anything from a ``#`` to the end of the line is ignored and is considered a comment." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:325 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:327 msgid "Built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:327 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:329 msgid "Built-in types are stack-allocated. They are passed as values. This means a copy is created on each assignment or when passing them as arguments to functions. The only exceptions are ``Array``\\ s and ``Dictionaries``, which are passed by reference so they are shared. (Pooled arrays such as ``PoolByteArray`` are still passed as values.)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:334 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:336 msgid "Basic built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:336 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:338 msgid "A variable in GDScript can be assigned to several built-in types." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:339 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:341 msgid "null" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:341 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:343 msgid "``null`` is an empty data type that contains no information and can not be assigned any other value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:345 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:347 msgid ":ref:`bool `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:347 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:349 msgid "Short for \"boolean\", it can only contain ``true`` or ``false``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:350 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:352 msgid ":ref:`int `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:352 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:354 msgid "Short for \"integer\", it stores whole numbers (positive and negative). It is stored as a 64-bit value, equivalent to \"int64_t\" in C++." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:356 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:358 msgid ":ref:`float `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:358 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:360 msgid "Stores real numbers, including decimals, using floating-point values. It is stored as a 64-bit value, equivalent to \"double\" in C++. Note: Currently, data structures such as Vector2, Vector3, and PoolRealArray store 32-bit single-precision \"float\" values." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:364 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:366 msgid ":ref:`String `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:366 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:368 msgid "A sequence of characters in `Unicode format `_. Strings can contain the following escape sequences:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:370 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:372 msgid "**Escape sequence**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:370 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:372 msgid "**Expands to**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:372 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:374 msgid "``\\n``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:372 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:374 msgid "Newline (line feed)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:374 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:376 msgid "``\\t``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:374 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:376 msgid "Horizontal tab character" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:376 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:378 msgid "``\\r``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:376 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:378 msgid "Carriage return" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:378 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:380 msgid "``\\a``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:378 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:380 msgid "Alert (beep/bell)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:380 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:382 msgid "``\\b``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:380 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:382 msgid "Backspace" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:382 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:384 msgid "``\\f``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:382 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:384 msgid "Formfeed page break" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:384 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:386 msgid "``\\v``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:384 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:386 msgid "Vertical tab character" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:386 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:388 msgid "``\\\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:386 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:388 msgid "Double quote" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:388 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:390 msgid "``\\'``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:388 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:390 msgid "Single quote" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:390 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:392 msgid "``\\\\``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:390 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:392 msgid "Backslash" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:392 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:394 msgid "``\\uXXXX``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:392 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:394 msgid "Unicode codepoint ``XXXX`` (hexadecimal, case-insensitive)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:396 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:398 msgid "GDScript also supports :ref:`doc_gdscript_printf`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:399 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:401 msgid "Vector built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:402 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:404 msgid ":ref:`Vector2 `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:404 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:406 msgid "2D vector type containing ``x`` and ``y`` fields. Can also be accessed as an array." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:408 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:410 msgid ":ref:`Rect2 `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:410 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:412 msgid "2D Rectangle type containing two vectors fields: ``position`` and ``size``. Also contains an ``end`` field which is ``position + size``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:414 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:416 msgid ":ref:`Vector3 `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:416 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:418 msgid "3D vector type containing ``x``, ``y`` and ``z`` fields. This can also be accessed as an array." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:420 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:422 msgid ":ref:`Transform2D `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:422 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:424 msgid "3×2 matrix used for 2D transforms." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:425 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:427 msgid ":ref:`Plane `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:427 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:429 msgid "3D Plane type in normalized form that contains a ``normal`` vector field and a ``d`` scalar distance." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:431 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:433 msgid ":ref:`Quat `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:433 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:435 msgid "Quaternion is a datatype used for representing a 3D rotation. It's useful for interpolating rotations." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:437 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:439 msgid ":ref:`AABB `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:439 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:441 msgid "Axis-aligned bounding box (or 3D box) contains 2 vectors fields: ``position`` and ``size``. Also contains an ``end`` field which is ``position + size``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:444 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:446 msgid ":ref:`Basis `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:446 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:448 msgid "3x3 matrix used for 3D rotation and scale. It contains 3 vector fields (``x``, ``y`` and ``z``) and can also be accessed as an array of 3D vectors." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:451 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:453 msgid ":ref:`Transform `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:453 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:455 msgid "3D Transform contains a Basis field ``basis`` and a Vector3 field ``origin``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:457 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:459 msgid "Engine built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:460 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:462 msgid ":ref:`Color `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:462 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:464 msgid "Color data type contains ``r``, ``g``, ``b``, and ``a`` fields. It can also be accessed as ``h``, ``s``, and ``v`` for hue/saturation/value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:466 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:468 msgid ":ref:`NodePath `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:468 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:470 msgid "Compiled path to a node used mainly in the scene system. It can be easily assigned to, and from, a String." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:472 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:474 msgid ":ref:`RID `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:474 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:476 msgid "Resource ID (RID). Servers use generic RIDs to reference opaque data." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:477 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:479 msgid ":ref:`Object `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:479 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:481 msgid "Base class for anything that is not a built-in type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:482 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:484 msgid "Container built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:485 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:487 msgid ":ref:`Array `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:487 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:489 msgid "Generic sequence of arbitrary object types, including other arrays or dictionaries (see below). The array can resize dynamically. Arrays are indexed starting from index ``0``. Negative indices count from the end." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:501 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:503 msgid "GDScript arrays are allocated linearly in memory for speed. Large arrays (more than tens of thousands of elements) may however cause memory fragmentation. If this is a concern, special types of arrays are available. These only accept a single data type. They avoid memory fragmentation and use less memory, but are atomic and tend to run slower than generic arrays. They are therefore only recommended to use for large data sets:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:508 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:510 msgid ":ref:`PoolByteArray `: An array of bytes (integers from 0 to 255)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:509 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:511 msgid ":ref:`PoolIntArray `: An array of integers." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:510 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:512 msgid ":ref:`PoolRealArray `: An array of floats." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:511 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:513 msgid ":ref:`PoolStringArray `: An array of strings." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:512 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:514 msgid ":ref:`PoolVector2Array `: An array of :ref:`Vector2 ` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:513 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:515 msgid ":ref:`PoolVector3Array `: An array of :ref:`Vector3 ` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:514 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:516 msgid ":ref:`PoolColorArray `: An array of :ref:`Color ` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:517 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:519 msgid ":ref:`Dictionary `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:519 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:521 msgid "Associative container which contains values referenced by unique keys." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:532 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:534 msgid "Lua-style table syntax is also supported. Lua-style uses ``=`` instead of ``:`` and doesn't use quotes to mark string keys (making for slightly less to write). However, keys written in this form can't start with a digit (like any GDScript identifier)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:546 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:548 msgid "To add a key to an existing dictionary, access it like an existing key and assign to it::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:562 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:564 msgid "The bracket syntax can be used to access properties of any :ref:`class_Object`, not just Dictionaries. Keep in mind it will cause a script error when attempting to index a non-existing property. To avoid this, use the :ref:`Object.get() ` and :ref:`Object.set() ` methods instead." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:569 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:571 msgid "Data" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:572 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:574 msgid "Variables" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:574 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:576 msgid "Variables can exist as class members or local to functions. They are created with the ``var`` keyword and may, optionally, be assigned a value upon initialization." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:585 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:587 msgid "Variables can optionally have a type specification. When a type is specified, the variable will be forced to have always that same type, and trying to assign an incompatible value will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:589 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:591 msgid "Types are specified in the variable declaration using a ``:`` (colon) symbol after the variable name, followed by the type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:597 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:599 msgid "If the variable is initialized within the declaration, the type can be inferred, so it's possible to omit the type name::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:603 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:605 msgid "Type inference is only possible if the assigned value has a defined type, otherwise it will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:606 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:608 msgid "Valid types are:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:608 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:610 msgid "Built-in types (Array, Vector2, int, String, etc.)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:609 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:611 msgid "Engine classes (Node, Resource, Reference, etc.)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:610 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:612 msgid "Constant names if they contain a script resource (``MyScript`` if you declared ``const MyScript = preload(\"res://my_script.gd\")``)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:611 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:613 msgid "Other classes in the same script, respecting scope (``InnerClass.NestedClass`` if you declared ``class NestedClass`` inside the ``class InnerClass`` in the same scope)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:612 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:614 msgid "Script classes declared with the ``class_name`` keyword." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:615 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:617 msgid "Casting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:617 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:619 msgid "Values assigned to typed variables must have a compatible type. If it's needed to coerce a value to be of a certain type, in particular for object types, you can use the casting operator ``as``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:621 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:623 msgid "Casting between object types results in the same object if the value is of the same type or a subtype of the cast type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:629 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:631 msgid "If the value is not a subtype, the casting operation will result in a ``null`` value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:636 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:638 msgid "For built-in types, they will be forcibly converted if possible, otherwise the engine will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:645 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:647 msgid "Casting is also useful to have better type-safe variables when interacting with the scene tree::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:655 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:657 msgid "Constants" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:657 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:659 msgid "Constants are values you cannot change when the game is running. Their value must be known at compile-time. Using the ``const`` keyword allows you to give a constant value a name. Trying to assign a value to a constant after it's declared will give you an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:662 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:664 msgid "We recommend using constants whenever a value is not meant to change." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:675 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:677 msgid "Although the type of constants is inferred from the assigned value, it's also possible to add explicit type specification::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:681 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:683 msgid "Assigning a value of an incompatible type will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:685 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:687 msgid "Since arrays and dictionaries are passed by reference, constants are \"flat\". This means that if you declare a constant array or dictionary, it can still be modified afterwards. They can't be reassigned with another value though." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:690 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:692 msgid "Enums" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:692 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:694 msgid "Enums are basically a shorthand for constants, and are pretty useful if you want to assign consecutive integers to some constant." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:695 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:697 msgid "If you pass a name to the enum, it will put all the keys inside a constant dictionary of that name." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:698 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:700 msgid "In Godot 3.1 and later, keys in a named enum are not registered as global constants. They should be accessed prefixed by the enum's name (``Name.KEY``); see an example below." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:718 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:720 msgid "Functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:720 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:722 msgid "Functions always belong to a `class `_. The scope priority for variable look-up is: local → class member → global. The ``self`` variable is always available and is provided as an option for accessing class members, but is not always required (and should *not* be sent as the function's first argument, unlike Python)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:733 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:735 msgid "A function can ``return`` at any point. The default return value is ``null``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:735 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:737 msgid "Functions can also have type specification for the arguments and for the return value. Types for arguments can be added in a similar way to variables::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:741 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:743 msgid "If a function argument has a default value, it's possible to infer the type::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:746 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:748 msgid "The return type of the function can be specified after the arguments list using the arrow token (``->``)::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:752 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:754 msgid "Functions that have a return type **must** return a proper value. Setting the type as ``void`` means the function doesn't return anything. Void functions can return early with the ``return`` keyword, but they can't return any value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:761 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:763 msgid "Non-void functions must **always** return a value, so if your code has branching statements (such as an ``if``/``else`` construct), all the possible paths must have a return. E.g., if you have a ``return`` inside an ``if`` block but not after it, the editor will raise an error because if the block is not executed, the function won't have a valid value to return." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:769 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:771 msgid "Referencing functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:771 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:773 msgid "Contrary to Python, functions are *not* first-class objects in GDScript. This means they cannot be stored in variables, passed as an argument to another function or be returned from other functions. This is for performance reasons." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:775 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:777 msgid "To reference a function by name at run-time, (e.g. to store it in a variable, or pass it to another function as an argument) one must use the ``call`` or ``funcref`` helpers::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:789 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:791 msgid "Static functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:791 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:793 msgid "A function can be declared static. When a function is static, it has no access to the instance member variables or ``self``. This is mainly useful to make libraries of helper functions::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:800 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:802 msgid "Statements and control flow" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:802 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:804 msgid "Statements are standard and can be assignments, function calls, control flow structures, etc (see below). ``;`` as a statement separator is entirely optional." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:807 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:809 msgid "if/else/elif" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:809 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:811 msgid "Simple conditions are created by using the ``if``/``else``/``elif`` syntax. Parenthesis around conditions are allowed, but not required. Given the nature of the tab-based indentation, ``elif`` can be used instead of ``else``/``if`` to maintain a level of indentation." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:823 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:825 msgid "Short statements can be written on the same line as the condition::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:830 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:832 msgid "Sometimes, you might want to assign a different initial value based on a boolean expression. In this case, ternary-if expressions come in handy::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:839 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:838 +msgid "Ternary-if expressions can be nested to handle more than 2 cases. When nesting ternary-if expressions, it is recommended to wrap the complete expression over multiple lines to preserve readability::" +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:864 msgid "Simple loops are created by using ``while`` syntax. Loops can be broken using ``break`` or continued using ``continue``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:850 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:875 msgid "To iterate through a range, such as an array or table, a *for* loop is used. When iterating over an array, the current array element is stored in the loop variable. When iterating over a dictionary, the *key* is stored in the loop variable." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:885 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:910 msgid "A ``match`` statement is used to branch execution of a program. It's the equivalent of the ``switch`` statement found in many other languages, but offers some additional features." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:888 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:913 msgid "Basic syntax::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:899 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:924 msgid "**Crash-course for people who are familiar with switch statements**:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:901 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:926 msgid "Replace ``switch`` with ``match``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:902 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:927 msgid "Remove ``case``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:903 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:928 msgid "Remove any ``break``\\ s. If you don't want to ``break`` by default, you can use ``continue`` for a fallthrough." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:904 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:929 msgid "Change ``default`` to a single underscore." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:907 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:932 msgid "**Control flow**:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:909 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:934 msgid "The patterns are matched from top to bottom. If a pattern matches, the first corresponding block will be executed. After that, the execution continues below the ``match`` statement. You can use ``continue`` to stop execution in the current block and check for an additional match in the patterns below it." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:913 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:938 msgid "There are 6 pattern types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:925 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:950 msgid "Constant pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:916 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:941 msgid "Constant primitives, like numbers and strings::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:937 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:962 msgid "Variable pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:928 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:953 msgid "Matches the contents of a variable/enum::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:951 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:976 msgid "Wildcard pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:940 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:965 msgid "This pattern matches everything. It's written as a single underscore." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:942 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:967 msgid "It can be used as the equivalent of the ``default`` in a ``switch`` statement in other languages::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:964 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:989 msgid "Binding pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:954 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:979 msgid "A binding pattern introduces a new variable. Like the wildcard pattern, it matches everything - and also gives that value a name. It's especially useful in array and dictionary patterns::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:985 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1010 msgid "Array pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:967 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:992 msgid "Matches an array. Every single element of the array pattern is a pattern itself, so you can nest them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:969 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:994 msgid "The length of the array is tested first, it has to be the same size as the pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:971 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:996 msgid "**Open-ended array**: An array can be bigger than the pattern by making the last subpattern ``..``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:973 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:998 msgid "Every subpattern has to be comma-separated." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1012 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1037 msgid "Dictionary pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:988 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1013 msgid "Works in the same way as the array pattern. Every key has to be a constant pattern." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:990 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1015 msgid "The size of the dictionary is tested first, it has to be the same size as the pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:992 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1017 msgid "**Open-ended dictionary**: A dictionary can be bigger than the pattern by making the last subpattern ``..``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:994 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1019 msgid "Every subpattern has to be comma separated." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:996 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1021 msgid "If you don't specify a value, then only the existence of the key is checked." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:998 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1023 msgid "A value pattern is separated from the key pattern with a ``:``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1025 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1050 msgid "Multiple patterns" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1015 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1040 msgid "You can also specify multiple patterns separated by a comma. These patterns aren't allowed to have any bindings in them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1028 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1053 msgid "Classes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1030 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1055 msgid "By default, all script files are unnamed classes. In this case, you can only reference them using the file's path, using either a relative or an absolute path. For example, if you name a script file ``character.gd``::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1043 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1068 msgid "Instead, you can give your class a name to register it as a new type in Godot's editor. For that, you use the ``class_name`` keyword. You can add an optional comma followed by a path to an image, to use it as an icon. Your class will then appear with its new icon in the editor::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1057 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1082 msgid "If the script is located in the ``res://addons/`` directory, ``class_name`` will only cause the node to show up in the **Create New Node** dialog if the script is part of an *enabled* editor plugin. See :ref:`doc_making_plugins` for more information." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1062 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1087 msgid "Here's a class file example:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1084 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1109 msgid "Godot's class syntax is compact: it can only contain member variables or functions. You can use static functions, but not static member variables. In the same way, the engine initializes variables every time you create an instance, and this includes arrays and dictionaries. This is in the spirit of thread safety, since scripts can be initialized in separate threads without the user knowing." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1092 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1117 msgid "Inheritance" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1094 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1119 msgid "A class (stored as a file) can inherit from:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1096 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1121 msgid "A global class." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1097 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1122 msgid "Another class file." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1098 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1123 msgid "An inner class inside another class file." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1100 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1125 msgid "Multiple inheritance is not allowed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1102 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1127 msgid "Inheritance uses the ``extends`` keyword::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1114 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1139 msgid "To check if a given instance inherits from a given class, the ``is`` keyword can be used::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1126 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1151 msgid "To call a function in a *parent class* (i.e. one ``extend``-ed in your current class), prepend ``.`` to the function name::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1131 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1156 msgid "This is especially useful because functions in extending classes replace functions with the same name in their parent classes. If you still want to call them, you can prefix them with ``.`` (like the ``super`` keyword in other languages)::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1139 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1164 msgid "Default functions like ``_init``, and most notifications such as ``_enter_tree``, ``_exit_tree``, ``_process``, ``_physics_process``, etc. are called in all parent classes automatically. There is no need to call them explicitly when overloading them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1146 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1171 msgid "Class constructor" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1148 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1173 msgid "The class constructor, called on class instantiation, is named ``_init``. As mentioned earlier, the constructors of parent classes are called automatically when inheriting a class. So, there is usually no need to call ``._init()`` explicitly." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1153 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1178 msgid "Unlike the call of a regular function, like in the above example with ``.some_func``, if the constructor from the inherited class takes arguments, they are passed like this::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1160 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1185 msgid "This is better explained through examples. Consider this scenario::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1183 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1208 msgid "There are a few things to keep in mind here:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1185 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1210 msgid "If the inherited class (``State.gd``) defines a ``_init`` constructor that takes arguments (``e`` in this case), then the inheriting class (``Idle.gd``) *must* define ``_init`` as well and pass appropriate parameters to ``_init`` from ``State.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1188 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1213 msgid "``Idle.gd`` can have a different number of arguments than the parent class ``State.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1189 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1214 msgid "In the example above, ``e`` passed to the ``State.gd`` constructor is the same ``e`` passed in to ``Idle.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1191 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1216 msgid "If ``Idle.gd``'s ``_init`` constructor takes 0 arguments, it still needs to pass some value to the ``State.gd`` parent class, even if it does nothing. This brings us to the fact that you can pass literals in the base constructor as well, not just variables, e.g.::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1201 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1226 msgid "Inner classes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1203 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1228 msgid "A class file can contain inner classes. Inner classes are defined using the ``class`` keyword. They are instanced using the ``ClassName.new()`` function." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1228 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1253 msgid "Classes as resources" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1230 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1255 msgid "Classes stored as files are treated as :ref:`resources `. They must be loaded from disk to access them in other classes. This is done using either the ``load`` or ``preload`` functions (see below). Instancing of a loaded class resource is done by calling the ``new`` function on the class object::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1247 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1272 msgid "Exports" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1251 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1276 msgid "Documentation about exports has been moved to :ref:`doc_gdscript_exports`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1254 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1279 msgid "Setters/getters" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1256 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1281 msgid "It is often useful to know when a class' member variable changes for whatever reason. It may also be desired to encapsulate its access in some way." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1259 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1284 msgid "For this, GDScript provides a *setter/getter* syntax using the ``setget`` keyword. It is used directly after a variable definition:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1266 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1291 msgid "Whenever the value of ``variable`` is modified by an *external* source (i.e. not from local usage in the class), the *setter* function (``setterfunc`` above) will be called. This happens *before* the value is changed. The *setter* must decide what to do with the new value. Vice versa, when ``variable`` is accessed, the *getter* function (``getterfunc`` above) must ``return`` the desired value. Below is an example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1282 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1307 msgid "Either of the *setter* or *getter* functions can be omitted::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1314 msgid "Setters and getters are useful when :ref:`exporting variables ` to the editor in tool scripts or plugins, for validating input." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1292 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1317 msgid "As said, *local* access will *not* trigger the setter and getter. Here is an illustration of this:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1309 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1334 msgid "Tool mode" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1311 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1336 msgid "By default, scripts don't run inside the editor and only the exported properties can be changed. In some cases, it is desired that they do run inside the editor (as long as they don't execute game code or manually avoid doing so). For this, the ``tool`` keyword exists and must be placed at the top of the file::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1325 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1350 msgid "See :ref:`doc_running_code_in_the_editor` for more information." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1327 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1352 msgid "Be cautious when freeing nodes with ``queue_free()`` or ``free()`` in a tool script (especially the script's owner itself). As tool scripts run their code in the editor, misusing them may lead to crashing the editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1333 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1358 msgid "Memory management" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1335 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1360 msgid "If a class inherits from :ref:`class_Reference`, then instances will be freed when no longer in use. No garbage collector exists, just reference counting. By default, all classes that don't define inheritance extend **Reference**. If this is not desired, then a class must inherit :ref:`class_Object` manually and must call ``instance.free()``. To avoid reference cycles that can't be freed, a :ref:`class_WeakRef` function is provided for creating weak references. Here is an example:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1357 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1382 msgid "Alternatively, when not using references, the ``is_instance_valid(instance)`` can be used to check if an object has been freed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1364 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1389 msgid "Signals" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1366 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1391 msgid "Signals are a tool to emit messages from an object that other objects can react to. To create custom signals for a class, use the ``signal`` keyword." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1379 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1404 msgid "Signals are a `Callback `_ mechanism. They also fill the role of Observers, a common programming pattern. For more information, read the `Observer tutorial `_ in the Game Programming Patterns ebook." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1386 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1411 msgid "You can connect these signals to methods the same way you connect built-in signals of nodes like :ref:`class_Button` or :ref:`class_RigidBody`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1389 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1414 msgid "In the example below, we connect the ``health_depleted`` signal from a ``Character`` node to a ``Game`` node. When the ``Character`` node emits the signal, the game node's ``_on_Character_health_depleted`` is called::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1403 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1428 msgid "You can emit as many arguments as you want along with a signal." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1405 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1430 msgid "Here is an example where this is useful. Let's say we want a life bar on screen to react to health changes with an animation, but we want to keep the user interface separate from the player in our scene tree." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1409 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1434 msgid "In our ``Character.gd`` script, we define a ``health_changed`` signal and emit it with :ref:`Object.emit_signal() `, and from a ``Game`` node higher up our scene tree, we connect it to the ``Lifebar`` using the :ref:`Object.connect() ` method::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1450 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1475 msgid "To use signals, your class has to extend the ``Object`` class or any type extending it like ``Node``, ``KinematicBody``, ``Control``..." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1453 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1478 msgid "In the ``Game`` node, we get both the ``Character`` and ``Lifebar`` nodes, then connect the character, that emits the signal, to the receiver, the ``Lifebar`` node in this case." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1467 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1492 msgid "This allows the ``Lifebar`` to react to health changes without coupling it to the ``Character`` node." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1470 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1495 msgid "You can write optional argument names in parentheses after the signal's definition::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1476 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1501 msgid "These arguments show up in the editor's node dock, and Godot can use them to generate callback functions for you. However, you can still emit any number of arguments when you emit signals; it's up to you to emit the correct values." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1482 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1507 msgid "GDScript can bind an array of values to connections between a signal and a method. When the signal is emitted, the callback method receives the bound values. These bound arguments are unique to each connection, and the values will stay the same." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1487 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1512 msgid "You can use this array of values to add extra constant information to the connection if the emitted signal itself doesn't give you access to all the data that you need." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1491 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1516 msgid "Building on the example above, let's say we want to display a log of the damage taken by each character on the screen, like ``Player1 took 22 damage.``. The ``health_changed`` signal doesn't give us the name of the character that took damage. So when we connect the signal to the in-game console, we can add the character's name in the binds array argument::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1505 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1530 msgid "Our ``BattleLog`` node receives each element in the binds array as an extra argument::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1518 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1543 msgid "Coroutines with yield" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1520 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1545 msgid "GDScript offers support for `coroutines `_ via the :ref:`yield` built-in function. Calling ``yield()`` will immediately return from the current function, with the current frozen state of the same function as the return value. Calling ``resume()`` on this resulting object will continue execution and return whatever the function returns. Once resumed, the state object becomes invalid. Here is an example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1541 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1562 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1566 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1587 msgid "Will print::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1547 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1572 msgid "It is also possible to pass values between ``yield()`` and ``resume()``, for example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1568 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1593 msgid "Remember to save the new function state, when using multiple ``yield``\\s::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1583 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1608 msgid "Coroutines & signals" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1585 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1610 msgid "The real strength of using ``yield`` is when combined with signals. ``yield`` can accept two arguments, an object and a signal. When the signal is received, execution will recommence. Here are some examples::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1598 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1623 msgid "Coroutines themselves use the ``completed`` signal when they transition into an invalid state, for example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1610 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1635 msgid "``my_func`` will only continue execution once both buttons have been pressed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1612 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1637 msgid "You can also get the signal's argument once it's emitted by an object:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1619 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1644 msgid "If there is more than one argument, ``yield`` returns an array containing the arguments::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1637 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1662 msgid "If you're unsure whether a function may yield or not, or whether it may yield multiple times, you can yield to the ``completed`` signal conditionally:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1659 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1684 msgid "This ensures that the function returns whatever it was supposed to return regardless of whether coroutines were used internally. Note that using ``while`` would be redundant here as the ``completed`` signal is only emitted when the function didn't yield anymore." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1667 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1692 msgid "`onready` keyword" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1669 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1694 msgid "When using nodes, it's common to desire to keep references to parts of the scene in a variable. As scenes are only warranted to be configured when entering the active scene tree, the sub-nodes can only be obtained when a call to ``Node._ready()`` is made." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1682 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1707 msgid "This can get a little cumbersome, especially when nodes and external references pile up. For this, GDScript has the ``onready`` keyword, that defers initialization of a member variable until ``_ready()`` is called. It can replace the above code with a single line::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1690 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1715 msgid "Assert keyword" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1692 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1717 msgid "The ``assert`` keyword can be used to check conditions in debug builds. These assertions are ignored in non-debug builds. This means that the expression passed as argument won't be evaluated in a project exported in release mode. Due to this, assertions must **not** contain expressions that have side effects. Otherwise, the behavior of the script would vary depending on whether the project is run in a debug build." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1704 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1729 msgid "When running a project from the editor, the project will be paused if an assertion error occurs." msgstr "" diff --git a/sphinx/templates/getting_started/scripting/gdscript/gdscript_exports.pot b/sphinx/templates/getting_started/scripting/gdscript/gdscript_exports.pot index 05d6217eaf..01739d381e 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/gdscript_exports.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/gdscript_exports.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -37,109 +37,109 @@ msgid "One of the fundamental benefits of exporting member variables is to have msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:29 -msgid "Exporting properties can also be done in other languages such as C#. The syntax varies depending on the language." +msgid "Exporting properties can also be done in other languages such as C#. The syntax varies depending on the language. See :ref:`doc_c_sharp_exports` for information on C# exports." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:33 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:34 msgid "Examples" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:136 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:137 msgid "It must be noted that even if the script is not being run while in the editor, the exported properties are still editable. This can be used in conjunction with a :ref:`script in \"tool\" mode `." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:141 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:142 msgid "Exporting bit flags" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:143 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:144 msgid "Integers used as bit flags can store multiple ``true``/``false`` (boolean) values in one property. By using the export hint ``int, FLAGS, ...``, they can be set from the editor::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:150 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:151 msgid "You must provide a string description for each flag. In this example, ``Fire`` has value 1, ``Water`` has value 2, ``Earth`` has value 4 and ``Wind`` corresponds to value 8. Usually, constants should be defined accordingly (e.g. ``const ELEMENT_WIND = 8`` and so on)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:155 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:156 msgid "Export hints are also provided for the physics and render layers defined in the project settings::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:162 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:163 msgid "Using bit flags requires some understanding of bitwise operations. If in doubt, use boolean variables instead." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:166 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:167 msgid "Exporting arrays" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:168 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:169 msgid "Exported arrays can have initializers, but they must be constant expressions." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:170 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:171 msgid "If the exported array specifies a type which inherits from Resource, the array values can be set in the inspector by dragging and dropping multiple files from the FileSystem dock at once." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:208 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:209 msgid "Setting exported variables from a tool script" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:210 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:211 msgid "When changing an exported variable's value from a script in :ref:`doc_gdscript_tool_mode`, the value in the inspector won't be updated automatically. To update it, call :ref:`property_list_changed_notify() ` after setting the exported variable's value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:217 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:218 msgid "Advanced exports" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:219 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:220 msgid "Not every type of export can be provided on the level of the language itself to avoid unnecessary design complexity. The following describes some more or less common exporting features which can be implemented with a low-level API." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:223 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:224 msgid "Before reading further, you should get familiar with the way properties are handled and how they can be customized with :ref:`_set() `, :ref:`_get() `, and :ref:`_get_property_list() ` methods as described in :ref:`doc_accessing_data_or_logic_from_object`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:230 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:231 msgid "For binding properties using the above methods in C++, see :ref:`doc_binding_properties_using_set_get_property_list`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:233 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:234 msgid "The script must operate in the ``tool`` mode so the above methods can work from within the editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:237 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:238 msgid "Adding script categories" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:239 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:240 msgid "For better visual distinguishing of properties, a special script category can be embedded into the inspector to act as a separator. ``Script Variables`` is one example of a built-in category." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:256 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:257 msgid "``name`` is the name of a category to be added to the inspector;" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:258 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:259 msgid "``PROPERTY_USAGE_CATEGORY`` indicates that the property should be treated as a script category specifically, so the type ``TYPE_NIL`` can be ignored as it won't be actually used for the scripting logic, yet it must be defined anyway." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:263 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:264 msgid "Grouping properties" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:265 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:266 msgid "A list of properties with similar names can be grouped." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:279 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:280 msgid "``name`` is the name of a group which is going to be displayed as collapsible list of properties;" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:282 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:283 msgid "every successive property added after the group property will be collapsed and shortened as determined by the prefix defined via the ``hint_string`` key. For instance, ``rotate_speed`` is going to be shortened to ``speed`` in this case." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:286 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:287 msgid "``PROPERTY_USAGE_GROUP`` indicates that the property should be treated as a script group specifically, so the type ``TYPE_NIL`` can be ignored as it won't be actually used for the scripting logic, yet it must be defined anyway." msgstr "" diff --git a/sphinx/templates/getting_started/scripting/gdscript/gdscript_format_string.pot b/sphinx/templates/getting_started/scripting/gdscript/gdscript_format_string.pot index b41d2d3810..eac7389c85 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/gdscript_format_string.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/gdscript_format_string.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/gdscript/gdscript_styleguide.pot b/sphinx/templates/getting_started/scripting/gdscript/gdscript_styleguide.pot index 9aff225c5e..aaa2e612f9 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/gdscript_styleguide.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/gdscript_styleguide.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -82,11 +82,12 @@ msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:201 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:225 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:272 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:302 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:327 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:347 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:373 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:767 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:313 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:350 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:375 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:395 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:421 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:815 msgid "**Good**:" msgstr "" @@ -96,11 +97,12 @@ msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:212 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:231 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:282 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:309 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:334 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:354 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:383 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:773 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:332 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:357 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:382 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:402 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:431 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:833 msgid "**Bad**:" msgstr "" @@ -161,301 +163,325 @@ msgid "The only exception to that rule is the ternary operator:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:297 -msgid "Avoid unnecessary parentheses" +msgid "Format multiline statements for readability" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:299 -msgid "Avoid parentheses in expressions and conditional statements. Unless necessary for order of operations, they only reduce readability." +msgid "When you have particularly long ``if`` statements or nested ternary expressions, wrapping them over multiple lines improves readability. Since continuation lines are still part of the same expression, 2 indent levels should be used instead of one." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:317 -msgid "Boolean operators" +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:303 +msgid "GDScript allows wrapping statements using multiple lines using parentheses or backslashes. Parentheses are favored in this style guide since they make for easier refactoring. With backslashes, you have to ensure that the last line never contains a backslash at the end. With parentheses, you don't have to worry about the last line having a backslash at the end." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:319 -msgid "Prefer the plain English versions of boolean operators, as they are the most accessible:" -msgstr "" - -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:321 -msgid "Use ``and`` instead of ``&&``." -msgstr "" - -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:322 -msgid "Use ``or`` instead of ``||``." -msgstr "" - -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:324 -msgid "You may also use parentheses around boolean operators to clear any ambiguity. This can make long expressions easier to read." -msgstr "" - -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:342 -msgid "Comment spacing" +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:309 +msgid "When wrapping a conditional expression over multiple lines, the ``and``/``or`` keywords should be placed at the beginning of the line continuation, not at the end of the previous line." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:344 -msgid "Regular comments should start with a space, but not code that you comment out. This helps differentiate text comments from disabled code." +msgid "Avoid unnecessary parentheses" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:363 -msgid "In the script editor, to toggle the selected code commented, press :kbd:`Ctrl + K`. This feature adds a single # sign at the start of the selected lines." +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:346 +msgid "Avoid parentheses in expressions and conditional statements. Unless necessary for order of operations or wrapping over multiple lines, they only reduce readability." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:368 -msgid "Whitespace" +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:365 +msgid "Boolean operators" +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:367 +msgid "Prefer the plain English versions of boolean operators, as they are the most accessible:" +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:369 +msgid "Use ``and`` instead of ``&&``." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:370 +msgid "Use ``or`` instead of ``||``." +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:372 +msgid "You may also use parentheses around boolean operators to clear any ambiguity. This can make long expressions easier to read." +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:390 +msgid "Comment spacing" +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:392 +msgid "Regular comments should start with a space, but not code that you comment out. This helps differentiate text comments from disabled code." +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:411 +msgid "In the script editor, to toggle the selected code commented, press :kbd:`Ctrl + K`. This feature adds a single # sign at the start of the selected lines." +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:416 +msgid "Whitespace" +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:418 msgid "Always use one space around operators and after commas. Also, avoid extra spaces in dictionary references and function calls." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:393 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:441 msgid "Don't use spaces to align expressions vertically:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:402 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:450 msgid "Quotes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:404 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:452 msgid "Use double quotes unless single quotes make it possible to escape fewer characters in a given string. See the examples below:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:422 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:470 msgid "Numbers" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:424 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:472 msgid "Don't omit the leading or trailing zero in floating-point numbers. Otherwise, this makes them less readable and harder to distinguish from integers at a glance." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:428 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:441 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:452 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:476 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:489 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:500 msgid "**Good**::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:433 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:445 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:460 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:481 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:493 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:508 msgid "**Bad**::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:438 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:486 msgid "Use lowercase for letters in hexadecimal numbers, as their lower height makes the number easier to read." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:449 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:497 msgid "Take advantage of GDScript's underscores in literals to make large numbers more readable." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:471 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:519 msgid "Naming conventions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:473 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:521 msgid "These naming conventions follow the Godot Engine style. Breaking these will make your code clash with the built-in naming conventions, leading to inconsistent code." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:478 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:526 msgid "File names" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:480 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:528 msgid "Use snake_case for file names. For named classes, convert the PascalCase class name to snake_case::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:493 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:541 msgid "This is consistent with how C++ files are named in Godot's source code. This also avoids case sensitivity issues that can crop up when exporting a project from Windows to other platforms." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:498 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:546 msgid "Classes and nodes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:500 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:548 msgid "Use PascalCase for class and node names:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:506 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:554 msgid "Also use PascalCase when loading a class into a constant or a variable:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:513 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:561 msgid "Functions and variables" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:515 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:563 msgid "Use snake\\_case to name functions and variables:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:522 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:570 msgid "Prepend a single underscore (\\_) to virtual methods functions the user must override, private functions, and private variables:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:531 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:579 msgid "Signals" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:533 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:581 msgid "Use the past tense to name signals:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:541 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:589 msgid "Constants and enums" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:543 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:591 msgid "Write constants with CONSTANT\\_CASE, that is to say in all caps with an underscore (\\_) to separate words:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:550 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:598 msgid "Use PascalCase for enum *names* and CONSTANT\\_CASE for their members, as they are constants:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:564 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:612 msgid "Code order" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:566 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:614 msgid "This first section focuses on code order. For formatting, see :ref:`formatting`. For naming conventions, see :ref:`naming_conventions`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:569 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:617 msgid "We suggest to organize GDScript code this way:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:592 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:640 msgid "We optimized the order to make it easy to read the code from top to bottom, to help developers reading the code for the first time understand how it works, and to avoid errors linked to the order of variable declarations." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:596 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:644 msgid "This code order follows four rules of thumb:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:598 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:646 msgid "Properties and signals come first, followed by methods." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:599 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:647 msgid "Public comes before private." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:600 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:648 msgid "Virtual callbacks come before the class's interface." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:601 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:649 msgid "The object's construction and initialization functions, ``_init`` and ``_ready``, come before functions that modify the object at runtime." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:606 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:654 msgid "Class declaration" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:608 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:656 msgid "If the code is meant to run in the editor, place the ``tool`` keyword on the first line of the script." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:611 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:659 msgid "Follow with the `class_name` if necessary. You can turn a GDScript file into a global type in your project using this feature. For more information, see :ref:`doc_gdscript`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:615 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:663 msgid "Then, add the `extends` keyword if the class extends a built-in type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:617 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:665 msgid "Following that, you should have the class's optional docstring as comments. You can use that to explain the role of your class to your teammates, how it works, and how other developers should use it, for example." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:629 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:677 msgid "Signals and properties" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:631 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:679 msgid "Write signal declarations, followed by properties, that is to say, member variables, after the docstring." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:634 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:682 msgid "Enums should come after signals, as you can use them as export hints for other properties." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:637 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:685 msgid "Then, write constants, exported variables, public, private, and onready variables, in that order." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:662 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:710 msgid "The GDScript compiler evaluates onready variables right before the ``_ready`` callback. You can use that to cache node dependencies, that is to say, to get child nodes in the scene that your class relies on. This is what the example above shows." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:668 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:716 msgid "Member variables" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:670 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:718 msgid "Don't declare member variables if they are only used locally in a method, as it makes the code more difficult to follow. Instead, declare them as local variables in the method's body." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:675 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:723 msgid "Local variables" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:677 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:725 msgid "Declare local variables as close as possible to their first use. This makes it easier to follow the code, without having to scroll too much to find where the variable was declared." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:682 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:730 msgid "Methods and static functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:684 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:732 msgid "After the class's properties come the methods." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:686 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:734 msgid "Start with the ``_init()`` callback method, that the engine will call upon creating the object in memory. Follow with the ``_ready()`` callback, that Godot calls when it adds a node to the scene tree." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:690 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:738 msgid "These functions should come first because they show how the object is initialized." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:693 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:741 msgid "Other built-in virtual callbacks, like ``_unhandled_input()`` and ``_physics_process``, should come next. These control the object's main loop and interactions with the game engine." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:697 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:745 msgid "The rest of the class's interface, public and private methods, come after that, in that order." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:734 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:782 msgid "Static typing" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:736 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:784 msgid "Since Godot 3.1, GDScript supports :ref:`optional static typing`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:739 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:787 msgid "Declared types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:741 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:789 msgid "To declare a variable's type, use ``: ``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:747 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:795 msgid "To declare the return type of a function, use ``-> ``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:754 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:802 msgid "Inferred types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:756 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:804 msgid "In most cases you can let the compiler infer the type, using ``:=``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:762 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:810 msgid "However, in a few cases when context is missing, the compiler falls back to the function's return type. For example, ``get_node()`` cannot infer a type unless the scene or file of the node is loaded in memory. In this case, you should set the type explicitly." msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:821 +msgid "Alternatively, you can use the ``as`` keyword to cast the return type, and that type will be used to infer the type of the var." +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:831 +msgid "This option is also considered more :ref:`type-safe` than the first." +msgstr "" diff --git a/sphinx/templates/getting_started/scripting/gdscript/index.pot b/sphinx/templates/getting_started/scripting/gdscript/index.pot index 9e280cff68..3ef18b5579 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/index.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/gdscript/static_typing.pot b/sphinx/templates/getting_started/scripting/gdscript/static_typing.pot index 1b4ac953bd..b4e141c780 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/static_typing.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/static_typing.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -152,114 +152,114 @@ msgstr "" msgid "If you try to cast with a built-in type and it fails, Godot will throw an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:182 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:184 msgid "Safe lines" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:184 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:186 msgid "You can also use casting to ensure safe lines. Safe lines are a new tool in Godot 3.1 to tell you when ambiguous lines of code are type-safe. As you can mix and match typed and dynamic code, at times, Godot doesn't have enough information to know if an instruction will trigger an error or not at runtime." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:190 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:192 msgid "This happens when you get a child node. Let's take a timer for example: with dynamic code, you can get the node with ``$Timer``. GDScript supports `duck-typing `__, so even if your timer is of type ``Timer``, it is also a ``Node`` and an ``Object``, two classes it extends. With dynamic GDScript, you also don't care about the node's type as long as it has the methods you need to call." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:198 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:200 msgid "You can use casting to tell Godot the type you expect when you get a node: ``($Timer as Timer)``, ``($Player as KinematicBody2D)``, etc. Godot will ensure the type works and if so, the line number will turn green at the left of the script editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:206 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:208 msgid "Unsafe line (line 7) vs Safe Lines (line 6 and 8)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:210 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:212 msgid "You can turn off safe lines or change their color in the editor settings." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:213 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:215 msgid "Define the return type of a function with the arrow ->" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:215 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:217 msgid "To define the return type of a function, write a dash and a right angle bracket ``->`` after its declaration, followed by the return type:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:223 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:225 msgid "The type ``void`` means the function does not return anything. You can use any type, as with variables:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:232 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:234 msgid "You can also use your own nodes as return types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:248 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:250 msgid "Typed or dynamic: stick to one style" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:250 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:252 msgid "Typed GDScript and dynamic GDScript can coexist in the same project. But it's recommended to stick to either style for consistency in your codebase, and for your peers. It's easier for everyone to work together if you follow the same guidelines, and faster to read and understand other people's code." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:256 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:258 msgid "Typed code takes a little more writing, but you get the benefits we discussed above. Here's an example of the same, empty script, in a dynamic style:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:272 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:274 msgid "And with static typing:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:286 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:288 msgid "As you can see, you can also use types with the engine's virtual methods. Signal callbacks, like any methods, can also use types. Here's a ``body_entered`` signal in a dynamic style:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:295 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:297 msgid "And the same callback, with type hints:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:302 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:304 msgid "You're free to replace, e.g. the ``CollisionObject2D``, with your own type, to cast parameters automatically:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:313 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:315 msgid "The ``bullet`` variable could hold any ``CollisionObject2D`` here, but we make sure it is our ``Bullet``, a node we created for our project. If it's anything else, like an ``Area2D``, or any node that doesn't extend ``Bullet``, the ``bullet`` variable will be ``null``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:319 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:321 msgid "Warning system" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:323 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:325 msgid "Documentation about the GDScript warning system has been moved to :ref:`doc_gdscript_warning_system`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:327 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:329 msgid "Cases where you can't specify types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:329 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:331 msgid "To wrap up this introduction, let's cover a few cases where you can't use type hints. All the examples below **will trigger errors**." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:332 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:334 msgid "You can't use Enums as types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:339 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:341 msgid "You can't specify the type of individual members in an array. This will give you an error:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:346 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:348 msgid "You can't force the assignment of types in a ``for`` loop, as each element the ``for`` keyword loops over already has a different type. So you **cannot** write:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:356 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:358 msgid "Two scripts can't depend on each other in a cyclic fashion:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:379 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:381 msgid "Summary" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:381 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:383 msgid "Typed GDScript is a powerful tool. Available as of version 3.1 of Godot, it helps you write more structured code, avoid common errors, and create scalable systems. In the future, static types will also bring you a nice performance boost thanks to upcoming compiler optimizations." msgstr "" diff --git a/sphinx/templates/getting_started/scripting/gdscript/warning_system.pot b/sphinx/templates/getting_started/scripting/gdscript/warning_system.pot index 527fc68dfa..77460269eb 100644 --- a/sphinx/templates/getting_started/scripting/gdscript/warning_system.pot +++ b/sphinx/templates/getting_started/scripting/gdscript/warning_system.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/index.pot b/sphinx/templates/getting_started/scripting/index.pot index 811a9620a8..f603d16819 100644 --- a/sphinx/templates/getting_started/scripting/index.pot +++ b/sphinx/templates/getting_started/scripting/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/visual_script/custom_visualscript_nodes.pot b/sphinx/templates/getting_started/scripting/visual_script/custom_visualscript_nodes.pot index b947274f08..3f7e7138f6 100644 --- a/sphinx/templates/getting_started/scripting/visual_script/custom_visualscript_nodes.pot +++ b/sphinx/templates/getting_started/scripting/visual_script/custom_visualscript_nodes.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/visual_script/getting_started.pot b/sphinx/templates/getting_started/scripting/visual_script/getting_started.pot index cbdfbb5ece..196f359084 100644 --- a/sphinx/templates/getting_started/scripting/visual_script/getting_started.pot +++ b/sphinx/templates/getting_started/scripting/visual_script/getting_started.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/visual_script/index.pot b/sphinx/templates/getting_started/scripting/visual_script/index.pot index 615d65c633..a58044f77c 100644 --- a/sphinx/templates/getting_started/scripting/visual_script/index.pot +++ b/sphinx/templates/getting_started/scripting/visual_script/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/visual_script/nodes_purposes.pot b/sphinx/templates/getting_started/scripting/visual_script/nodes_purposes.pot index c94529119f..2ed0eb3663 100644 --- a/sphinx/templates/getting_started/scripting/visual_script/nodes_purposes.pot +++ b/sphinx/templates/getting_started/scripting/visual_script/nodes_purposes.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/scripting/visual_script/what_is_visual_scripting.pot b/sphinx/templates/getting_started/scripting/visual_script/what_is_visual_scripting.pot index 2f956c318f..b92abf3dd9 100644 --- a/sphinx/templates/getting_started/scripting/visual_script/what_is_visual_scripting.pot +++ b/sphinx/templates/getting_started/scripting/visual_script/what_is_visual_scripting.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/animations.pot b/sphinx/templates/getting_started/step_by_step/animations.pot index 261e5bbccc..41f4b92716 100644 --- a/sphinx/templates/getting_started/step_by_step/animations.pot +++ b/sphinx/templates/getting_started/step_by_step/animations.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/exporting.pot b/sphinx/templates/getting_started/step_by_step/exporting.pot index e50d286972..0e1a00d6e2 100644 --- a/sphinx/templates/getting_started/step_by_step/exporting.pot +++ b/sphinx/templates/getting_started/step_by_step/exporting.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/filesystem.pot b/sphinx/templates/getting_started/step_by_step/filesystem.pot index 584ef6db28..d23835df65 100644 --- a/sphinx/templates/getting_started/step_by_step/filesystem.pot +++ b/sphinx/templates/getting_started/step_by_step/filesystem.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/godot_design_philosophy.pot b/sphinx/templates/getting_started/step_by_step/godot_design_philosophy.pot index 0a78450441..52efe64e89 100644 --- a/sphinx/templates/getting_started/step_by_step/godot_design_philosophy.pot +++ b/sphinx/templates/getting_started/step_by_step/godot_design_philosophy.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/index.pot b/sphinx/templates/getting_started/step_by_step/index.pot index 7596f53134..bd22e420df 100644 --- a/sphinx/templates/getting_started/step_by_step/index.pot +++ b/sphinx/templates/getting_started/step_by_step/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/instancing.pot b/sphinx/templates/getting_started/step_by_step/instancing.pot index e3d55dcdd4..732577077f 100644 --- a/sphinx/templates/getting_started/step_by_step/instancing.pot +++ b/sphinx/templates/getting_started/step_by_step/instancing.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/instancing_continued.pot b/sphinx/templates/getting_started/step_by_step/instancing_continued.pot index adc74ab2c2..2cda0141e7 100644 --- a/sphinx/templates/getting_started/step_by_step/instancing_continued.pot +++ b/sphinx/templates/getting_started/step_by_step/instancing_continued.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/intro_to_the_editor_interface.pot b/sphinx/templates/getting_started/step_by_step/intro_to_the_editor_interface.pot index eb8e6049ab..5c04bcefd7 100644 --- a/sphinx/templates/getting_started/step_by_step/intro_to_the_editor_interface.pot +++ b/sphinx/templates/getting_started/step_by_step/intro_to_the_editor_interface.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/resources.pot b/sphinx/templates/getting_started/step_by_step/resources.pot index 9e5cf99508..ac55069bd3 100644 --- a/sphinx/templates/getting_started/step_by_step/resources.pot +++ b/sphinx/templates/getting_started/step_by_step/resources.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/scene_tree.pot b/sphinx/templates/getting_started/step_by_step/scene_tree.pot index 6089b4c160..2500c5f4b1 100644 --- a/sphinx/templates/getting_started/step_by_step/scene_tree.pot +++ b/sphinx/templates/getting_started/step_by_step/scene_tree.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -105,7 +105,7 @@ msgid "When a node is connected, directly or indirectly, to the root viewport, i msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:95 -msgid "This means that as explained in previous tutorials, it will get the _enter_tree() and _ready() callbacks (as well as _exit_tree())." +msgid "This means that as explained in previous tutorials, it will get the ``_enter_tree()`` and ``_ready()`` callbacks (as well as ``_exit_tree()``)." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:100 diff --git a/sphinx/templates/getting_started/step_by_step/scenes_and_nodes.pot b/sphinx/templates/getting_started/step_by_step/scenes_and_nodes.pot index 5e1b01649d..8642833d60 100644 --- a/sphinx/templates/getting_started/step_by_step/scenes_and_nodes.pot +++ b/sphinx/templates/getting_started/step_by_step/scenes_and_nodes.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/scripting.pot b/sphinx/templates/getting_started/step_by_step/scripting.pot index 133be1d7ca..220886f974 100644 --- a/sphinx/templates/getting_started/step_by_step/scripting.pot +++ b/sphinx/templates/getting_started/step_by_step/scripting.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/scripting_continued.pot b/sphinx/templates/getting_started/step_by_step/scripting_continued.pot index 68f783a5c2..fc0d86fe0c 100644 --- a/sphinx/templates/getting_started/step_by_step/scripting_continued.pot +++ b/sphinx/templates/getting_started/step_by_step/scripting_continued.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/signals.pot b/sphinx/templates/getting_started/step_by_step/signals.pot index 242f6e424a..d61bdf6d01 100644 --- a/sphinx/templates/getting_started/step_by_step/signals.pot +++ b/sphinx/templates/getting_started/step_by_step/signals.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -141,7 +141,7 @@ msgid "The signal arguments show up in the editor's node dock, and Godot can use msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:248 -msgid "To pass values, add them as subsequent arguments to the ``emit_signal`` function:" +msgid "To pass values, add them as the second argument to the ``emit_signal`` function:" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:276 diff --git a/sphinx/templates/getting_started/step_by_step/singletons_autoload.pot b/sphinx/templates/getting_started/step_by_step/singletons_autoload.pot index 5e25835d05..55d97ebab1 100644 --- a/sphinx/templates/getting_started/step_by_step/singletons_autoload.pot +++ b/sphinx/templates/getting_started/step_by_step/singletons_autoload.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/splash_screen.pot b/sphinx/templates/getting_started/step_by_step/splash_screen.pot index 348baa1321..cfbb72bf73 100644 --- a/sphinx/templates/getting_started/step_by_step/splash_screen.pot +++ b/sphinx/templates/getting_started/step_by_step/splash_screen.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/ui_code_a_life_bar.pot b/sphinx/templates/getting_started/step_by_step/ui_code_a_life_bar.pot index 772158604d..393b98c2cc 100644 --- a/sphinx/templates/getting_started/step_by_step/ui_code_a_life_bar.pot +++ b/sphinx/templates/getting_started/step_by_step/ui_code_a_life_bar.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/ui_game_user_interface.pot b/sphinx/templates/getting_started/step_by_step/ui_game_user_interface.pot index b2406ca6e7..04a74af086 100644 --- a/sphinx/templates/getting_started/step_by_step/ui_game_user_interface.pot +++ b/sphinx/templates/getting_started/step_by_step/ui_game_user_interface.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/ui_introduction_to_the_ui_system.pot b/sphinx/templates/getting_started/step_by_step/ui_introduction_to_the_ui_system.pot index 652b194284..77ff03e5c6 100644 --- a/sphinx/templates/getting_started/step_by_step/ui_introduction_to_the_ui_system.pot +++ b/sphinx/templates/getting_started/step_by_step/ui_introduction_to_the_ui_system.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -401,5 +401,5 @@ msgid "A GridContainer with 2 columns. It sizes each column automatically." msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:353 -msgid "Godot's UI system is complex, and has a lot more to offer. To learn how to design more advanced interfaces, head to the :ref:`GUI section ` of the docs." +msgid "Godot's UI system is complex, and has a lot more to offer. To learn how to design more advanced interfaces, head to the :ref:`GUI section ` of the docs." msgstr "" diff --git a/sphinx/templates/getting_started/step_by_step/ui_main_menu.pot b/sphinx/templates/getting_started/step_by_step/ui_main_menu.pot index 150b7d7c5f..787d2a05ca 100644 --- a/sphinx/templates/getting_started/step_by_step/ui_main_menu.pot +++ b/sphinx/templates/getting_started/step_by_step/ui_main_menu.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/step_by_step/your_first_game.pot b/sphinx/templates/getting_started/step_by_step/your_first_game.pot index 55f634432a..37d835a4b8 100644 --- a/sphinx/templates/getting_started/step_by_step/your_first_game.pot +++ b/sphinx/templates/getting_started/step_by_step/your_first_game.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -29,830 +29,826 @@ msgid "This tutorial will guide you through making your first Godot project. You msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:13 -msgid "This project is an introduction to the Godot engine. It assumes that you have some programming experience already. If you're new to programming entirely, you should start here: :ref:`doc_scripting`." +msgid "This project is an introduction to the Godot engine. It assumes that you have some programming experience already. If you're new to programming entirely, you should start here: :ref:`doc_scripting`. If you want to use C# in Godot, please also read :ref:`doc_c_sharp` before continuing." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:18 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:19 msgid "The game is called \"Dodge the Creeps!\". Your character must move and avoid the enemies for as long as possible. Here is a preview of the final result:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:24 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:25 msgid "**Why 2D?** 3D games are much more complex than 2D ones. You should stick to 2D until you have a good understanding of the game development process and how to use Godot." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:29 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:30 msgid "Project setup" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:31 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:32 msgid "Launch Godot and create a new project. Then, download :download:`dodge_assets.zip `. This contains the images and sounds you'll be using to make the game. Unzip these files in your project folder." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:36 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:37 msgid "For this tutorial, we will assume you are familiar with the Godot editor. If you haven't read :ref:`doc_scenes_and_nodes`, do so now for an explanation of setting up a project and using the editor." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:40 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:41 msgid "This game is designed for portrait mode, so we need to adjust the size of the game window. Click on Project -> Project Settings -> Display -> Window and set \"Width\" to ``480`` and \"Height\" to ``720``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:44 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:45 msgid "Also in this section, under the \"Stretch\" options, set ``Mode`` to \"2d\" and ``Aspect`` to \"keep\". This ensures that the game scales consistently on different sized screens." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:49 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:50 msgid "Organizing the project" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:51 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:52 msgid "In this project, we will make 3 independent scenes: ``Player``, ``Mob``, and ``HUD``, which we will combine into the game's ``Main`` scene. In a larger project, it might be useful to create folders to hold the various scenes and their scripts, but for this relatively small game, you can save your scenes and scripts in the project's root folder, identified by ``res://``. You can see your project folders in the FileSystem Dock in the lower left corner:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:62 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:63 msgid "Player scene" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:64 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:65 msgid "The first scene will define the ``Player`` object. One of the benefits of creating a separate Player scene is that we can test it separately, even before we've created other parts of the game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:69 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:70 msgid "Node structure" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:71 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:72 msgid "To begin, we need to choose a root node for the player object. As a general rule, a scene's root node should reflect the object's desired functionality - what the object *is*. Click the \"Other Node\" button and add an :ref:`Area2D ` node to the scene." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:78 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:79 msgid "Godot will display a warning icon next to the node in the scene tree. You can ignore it for now. We will address it later." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:81 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:82 msgid "With ``Area2D`` we can detect objects that overlap or run into the player. Change the node's name to ``Player`` by double-clicking on it. Now that we've set the scene's root node, we can add additional nodes to give it more functionality." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:86 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:87 msgid "Before we add any children to the ``Player`` node, we want to make sure we don't accidentally move or resize them by clicking on them. Select the node and click the icon to the right of the lock; its tooltip says \"Makes sure the object's children are not selectable.\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:93 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:94 msgid "Save the scene. Click Scene -> Save, or press :kbd:`Ctrl + S` on Windows/Linux or :kbd:`Cmd + S` on macOS." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:95 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:96 msgid "For this project, we will be following the Godot naming conventions." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:97 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:98 msgid "**GDScript**: Classes (nodes) use PascalCase, variables and functions use snake_case, and constants use ALL_CAPS (See :ref:`doc_gdscript_styleguide`)." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:101 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:102 msgid "**C#**: Classes, export variables and methods use PascalCase, private fields use _camelCase, local variables and parameters use camelCase (See :ref:`doc_c_sharp_styleguide`). Be careful to type the method names precisely when connecting signals." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:108 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:109 msgid "Sprite animation" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:110 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:111 msgid "Click on the ``Player`` node and add an :ref:`AnimatedSprite ` node as a child. The ``AnimatedSprite`` will handle the appearance and animations for our player. Notice that there is a warning symbol next to the node. An ``AnimatedSprite`` requires a :ref:`SpriteFrames ` resource, which is a list of the animations it can display. To create one, find the ``Frames`` property in the Inspector and click \"[empty]\" -> \"New SpriteFrames\". Click again to open the \"SpriteFrames\" panel:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:121 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:122 msgid "On the left is a list of animations. Click the \"default\" one and rename it to \"walk\". Then click the \"New Animation\" button to create a second animation named \"up\". Find the player images in the \"FileSystem\" tab - they're in the ``art`` folder you unzipped earlier. Drag the two images for each animation, named ``playerGrey_up[1/2]`` and ``playerGrey_walk[1/2]``, into the \"Animation Frames\" side of the panel for the corresponding animation:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:130 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:131 msgid "The player images are a bit too large for the game window, so we need to scale them down. Click on the ``AnimatedSprite`` node and set the ``Scale`` property to ``(0.5, 0.5)``. You can find it in the Inspector under the ``Node2D`` heading." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:137 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:138 msgid "Finally, add a :ref:`CollisionShape2D ` as a child of ``Player``. This will determine the player's \"hitbox\", or the bounds of its collision area. For this character, a ``CapsuleShape2D`` node gives the best fit, so next to \"Shape\" in the Inspector, click \"[empty]\"\" -> \"New CapsuleShape2D\". Using the two size handles, resize the shape to cover the sprite:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:146 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:147 msgid "When you're finished, your ``Player`` scene should look like this:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:150 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:151 msgid "Make sure to save the scene again after these changes." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:153 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:154 msgid "Moving the player" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:155 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:156 msgid "Now we need to add some functionality that we can't get from a built-in node, so we'll add a script. Click the ``Player`` node and click the \"Attach Script\" button:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:161 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:162 msgid "In the script settings window, you can leave the default settings alone. Just click \"Create\":" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:164 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:165 msgid "If you're creating a C# script or other languages, select the language from the `language` drop down menu before hitting create." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:169 -msgid "If this is your first time encountering GDScript, please read :ref:`doc_scripting` before continuing." -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:172 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:170 msgid "Start by declaring the member variables this object will need:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:193 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:191 msgid "Using the ``export`` keyword on the first variable ``speed`` allows us to set its value in the Inspector. This can be handy for values that you want to be able to adjust just like a node's built-in properties. Click on the ``Player`` node and you'll see the property now appears in the \"Script Variables\" section of the Inspector. Remember, if you change the value here, it will override the value written in the script." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:200 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:198 msgid "If you're using C#, you need to (re)build the project assemblies whenever you want to see new export variables or signals. This build can be manually triggered by clicking the word \"Mono\" at the bottom of the editor window to reveal the Mono Panel, then clicking the \"Build Project\" button." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:208 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:206 msgid "The ``_ready()`` function is called when a node enters the scene tree, which is a good time to find the size of the game window:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:224 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:222 msgid "Now we can use the ``_process()`` function to define what the player will do. ``_process()`` is called every frame, so we'll use it to update elements of our game, which we expect will change often. For the player, we need to do the following:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:229 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:227 msgid "Check for input." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:230 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:228 msgid "Move in the given direction." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:231 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:229 msgid "Play the appropriate animation." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:233 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:231 msgid "First, we need to check for input - is the player pressing a key? For this game, we have 4 direction inputs to check. Input actions are defined in the Project Settings under \"Input Map\". Here, you can define custom events and assign different keys, mouse events, or other inputs to them. For this demo, we will use the default events that are assigned to the arrow keys on the keyboard." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:240 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:238 msgid "You can detect whether a key is pressed using ``Input.is_action_pressed()``, which returns ``true`` if it's pressed or ``false`` if it isn't." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:302 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:300 msgid "We start by setting the ``velocity`` to ``(0, 0)`` - by default, the player should not be moving. Then we check each input and add/subtract from the ``velocity`` to obtain a total direction. For example, if you hold ``right`` and ``down`` at the same time, the resulting ``velocity`` vector will be ``(1, 1)``. In this case, since we're adding a horizontal and a vertical movement, the player would move *faster* diagonally than if it just moved horizontally." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:309 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:307 msgid "We can prevent that if we *normalize* the velocity, which means we set its *length* to ``1``, then multiply by the desired speed. This means no more fast diagonal movement." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:313 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:311 msgid "If you've never used vector math before, or need a refresher, you can see an explanation of vector usage in Godot at :ref:`doc_vector_math`. It's good to know but won't be necessary for the rest of this tutorial." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:317 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:315 msgid "We also check whether the player is moving so we can call ``play()`` or ``stop()`` on the AnimatedSprite." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:320 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:318 msgid "``$`` is shorthand for ``get_node()``. So in the code above, ``$AnimatedSprite.play()`` is the same as ``get_node(\"AnimatedSprite\").play()``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:323 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:321 msgid "In GDScript, ``$`` returns the node at the relative path from the current node, or returns ``null`` if the node is not found. Since AnimatedSprite is a child of the current node, we can use ``$AnimatedSprite``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:326 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:324 msgid "Now that we have a movement direction, we can update the player's position. We can also use ``clamp()`` to prevent it from leaving the screen. *Clamping* a value means restricting it to a given range. Add the following to the bottom of the ``_process`` function (make sure it's not indented under the `else`):" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:347 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:345 msgid "The `delta` parameter in the `_process()` function refers to the *frame length* - the amount of time that the previous frame took to complete. Using this value ensures that your movement will remain consistent even if the frame rate changes." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:352 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:350 msgid "Click \"Play Scene\" (``F6``) and confirm you can move the player around the screen in all directions." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:355 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:353 msgid "If you get an error in the \"Debugger\" panel that says" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:357 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:355 msgid "``Attempt to call function 'play' in base 'null instance' on a null instance``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:359 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:357 msgid "this likely means you spelled the name of the AnimatedSprite node wrong. Node names are case-sensitive and ``$NodeName`` must match the name you see in the scene tree." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:364 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:362 msgid "Choosing animations" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:366 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:364 msgid "Now that the player can move, we need to change which animation the AnimatedSprite is playing based on its direction. We have the \"walk\" animation, which shows the player walking to the right. This animation should be flipped horizontally using the ``flip_h`` property for left movement. We also have the \"up\" animation, which should be flipped vertically with ``flip_v`` for downward movement. Let's place this code at the end of the ``_process()`` function:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:401 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:399 msgid "The boolean assignments in the code above are a common shorthand for programmers. Since we're doing a comparison test (boolean) and also *assigning* a boolean value, we can do both at the same time. Consider this code versus the one-line boolean assignment above:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:425 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:423 msgid "Play the scene again and check that the animations are correct in each of the directions." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:428 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:426 msgid "A common mistake here is to type the names of the animations wrong. The animation names in the SpriteFrames panel must match what you type in the code. If you named the animation ``\"Walk\"``, you must also use a capital \"W\" in the code." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:433 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:431 msgid "When you're sure the movement is working correctly, add this line to ``_ready()``, so the player will be hidden when the game starts:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:446 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:444 msgid "Preparing for collisions" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:448 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:446 msgid "We want ``Player`` to detect when it's hit by an enemy, but we haven't made any enemies yet! That's OK, because we're going to use Godot's *signal* functionality to make it work." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:452 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:450 msgid "Add the following at the top of the script, after ``extends Area2D``:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:466 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:464 msgid "This defines a custom signal called \"hit\" that we will have our player emit (send out) when it collides with an enemy. We will use ``Area2D`` to detect the collision. Select the ``Player`` node and click the \"Node\" tab next to the Inspector tab to see the list of signals the player can emit:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:473 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:471 msgid "Notice our custom \"hit\" signal is there as well! Since our enemies are going to be ``RigidBody2D`` nodes, we want the ``body_entered(body: Node)`` signal. This signal will be emitted when a body contacts the player. Click \"Connect..\" and the \"Connect a Signal\" window appears. We don't need to change any of these settings so click \"Connect\" again. Godot will automatically create a function in your player's script." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:482 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:480 msgid "Note the green icon indicating that a signal is connected to this function. Add this code to the function:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:502 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:500 msgid "Each time an enemy hits the player, the signal is going to be emitted. We need to disable the player's collision so that we don't trigger the ``hit`` signal more than once." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:506 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:504 msgid "Disabling the area's collision shape can cause an error if it happens in the middle of the engine's collision processing. Using ``set_deferred()`` tells Godot to wait to disable the shape until it's safe to do so." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:510 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:508 msgid "The last piece is to add a function we can call to reset the player when starting a new game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:531 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:529 msgid "Enemy scene" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:533 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:531 msgid "Now it's time to make the enemies our player will have to dodge. Their behavior will not be very complex: mobs will spawn randomly at the edges of the screen, choose a random direction, and move in a straight line." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:537 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:535 msgid "We'll create a ``Mob`` scene, which we can then *instance* to create any number of independent mobs in the game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:540 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:538 msgid "See :ref:`doc_instancing` to learn more about instancing." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:543 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:541 msgid "Node setup" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:545 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:543 msgid "Click Scene -> New Scene and add the following nodes:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:547 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:545 msgid ":ref:`RigidBody2D ` (named ``Mob``)" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:549 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:547 msgid ":ref:`AnimatedSprite `" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:550 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:548 msgid ":ref:`CollisionShape2D `" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:551 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:549 msgid ":ref:`VisibilityNotifier2D `" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:553 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:551 msgid "Don't forget to set the children so they can't be selected, like you did with the Player scene." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:556 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:554 msgid "In the :ref:`RigidBody2D ` properties, set ``Gravity Scale`` to ``0``, so the mob will not fall downward. In addition, under the ``PhysicsBody2D`` section, click the ``Mask`` property and uncheck the first box. This will ensure the mobs do not collide with each other." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:563 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:561 msgid "Set up the :ref:`AnimatedSprite ` like you did for the player. This time, we have 3 animations: ``fly``, ``swim``, and ``walk``. There are two images for each animation in the art folder." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:567 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:565 msgid "Adjust the \"Speed (FPS)\" to ``3`` for all animations." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:571 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:569 msgid "Set the ``Playing`` property in the Inspector to “On”." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:573 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:571 msgid "We'll select one of these animations randomly so that the mobs will have some variety." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:575 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:573 msgid "Like the player images, these mob images need to be scaled down. Set the ``AnimatedSprite``'s ``Scale`` property to ``(0.75, 0.75)``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:578 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:576 msgid "As in the ``Player`` scene, add a ``CapsuleShape2D`` for the collision. To align the shape with the image, you'll need to set the ``Rotation Degrees`` property to ``90`` (under \"Transform\" in the Inspector)." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:582 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:580 msgid "Save the scene." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:585 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:583 msgid "Enemy script" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:587 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:585 msgid "Add a script to the ``Mob`` and add the following member variables:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:611 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:609 msgid "When we spawn a mob, we'll pick a random value between ``min_speed`` and ``max_speed`` for how fast each mob will move (it would be boring if they were all moving at the same speed)." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:615 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:613 msgid "Now let's look at the rest of the script. In ``_ready()`` we randomly choose one of the three animation types:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:637 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:635 msgid "First, we get the list of animation names from the AnimatedSprite's ``frames`` property. This returns an Array containing all three animation names: ``[\"walk\", \"swim\", \"fly\"]``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:641 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:639 msgid "We then need to pick a random number between ``0`` and ``2`` to select one of these names from the list (array indices start at ``0``). ``randi() % n`` selects a random integer between ``0`` and ``n-1``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:645 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:643 msgid "You must use ``randomize()`` if you want your sequence of \"random\" numbers to be different every time you run the scene. We're going to use ``randomize()`` in our ``Main`` scene, so we won't need it here." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:649 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:647 msgid "The last piece is to make the mobs delete themselves when they leave the screen. Connect the ``screen_exited()`` signal of the ``VisibilityNotifier2D`` node and add this code:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:666 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:664 msgid "This completes the `Mob` scene." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:669 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:667 msgid "Main scene" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:671 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:669 msgid "Now it's time to bring it all together. Create a new scene and add a :ref:`Node ` named ``Main``. Ensure you create a Node, **not** a Node2D. Click the \"Instance\" button and select your saved ``Player.tscn``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:678 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:676 msgid "Now, add the following nodes as children of ``Main``, and name them as shown (values are in seconds):" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:681 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:679 msgid ":ref:`Timer ` (named ``MobTimer``) - to control how often mobs spawn" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:682 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:680 msgid ":ref:`Timer ` (named ``ScoreTimer``) - to increment the score every second" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:683 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:681 msgid ":ref:`Timer ` (named ``StartTimer``) - to give a delay before starting" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:684 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:682 msgid ":ref:`Position2D ` (named ``StartPosition``) - to indicate the player's start position" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:686 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:684 msgid "Set the ``Wait Time`` property of each of the ``Timer`` nodes as follows:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:689 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:687 msgid "``MobTimer``: ``0.5``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:690 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:688 msgid "``ScoreTimer``: ``1``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:691 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:689 msgid "``StartTimer``: ``2``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:693 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:691 msgid "In addition, set the ``One Shot`` property of ``StartTimer`` to \"On\" and set ``Position`` of the ``StartPosition`` node to ``(240, 450)``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:697 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:695 msgid "Spawning mobs" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:699 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:697 msgid "The Main node will be spawning new mobs, and we want them to appear at a random location on the edge of the screen. Add a :ref:`Path2D ` node named ``MobPath`` as a child of ``Main``. When you select ``Path2D``, you will see some new buttons at the top of the editor:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:706 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:704 msgid "Select the middle one (\"Add Point\") and draw the path by clicking to add the points at the corners shown. To have the points snap to the grid, make sure \"Use Grid Snap\" and \"Use Snap\" are both selected. These options can be found to the left of the \"Lock\" button, appearing as a magnet next to some dots and intersecting lines, respectively." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:714 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:712 msgid "Draw the path in *clockwise* order, or your mobs will spawn pointing *outwards* instead of *inwards*!" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:719 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:717 msgid "After placing point ``4`` in the image, click the \"Close Curve\" button and your curve will be complete." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:722 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:720 msgid "Now that the path is defined, add a :ref:`PathFollow2D ` node as a child of ``MobPath`` and name it ``MobSpawnLocation``. This node will automatically rotate and follow the path as it moves, so we can use it to select a random position and direction along the path." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:727 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:725 msgid "Your scene should look like this:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:732 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:730 msgid "Main script" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:734 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:732 msgid "Add a script to ``Main``. At the top of the script, we use ``export (PackedScene)`` to allow us to choose the Mob scene we want to instance." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:774 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:772 msgid "Click the ``Main`` node and you will see the ``Mob`` property in the Inspector under \"Script Variables\"." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:777 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:775 msgid "You can assign this property's value in two ways:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:779 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:777 msgid "Drag ``Mob.tscn`` from the \"FileSystem\" panel and drop it in the ``Mob`` property ." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:781 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:779 msgid "Click the down arrow next to \"[empty]\" and choose \"Load\". Select ``Mob.tscn``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:784 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:782 msgid "Next, select the ``Player`` node in the Scene dock, and access the Node dock on the sidebar. Make sure to have the Signals tab selected in the Node dock." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:787 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:785 msgid "You should see a list of the signals for the ``Player`` node. Find and double-click the ``hit`` signal in the list (or right-click it and select \"Connect...\"). This will open the signal connection dialog. We want to make a new function named ``game_over``, which will handle what needs to happen when a game ends. Type \"game_over\" in the \"Receiver Method\" box at the bottom of the signal connection dialog and click \"Connect\". Add the following code to the new function, as well as a ``new_game`` function that will set everything up for a new game:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:828 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:826 msgid "Now connect the ``timeout()`` signal of each of the Timer nodes (``StartTimer``, ``ScoreTimer`` , and ``MobTimer``) to the main script. ``StartTimer`` will start the other two timers. ``ScoreTimer`` will increment the score by 1." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:855 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:853 msgid "In ``_on_MobTimer_timeout()``, we will create a mob instance, pick a random starting location along the ``Path2D``, and set the mob in motion. The ``PathFollow2D`` node will automatically rotate as it follows the path, so we will use that to select the mob's direction as well as its position." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:861 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:859 msgid "Note that a new instance must be added to the scene using ``add_child()``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:909 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:907 msgid "Why ``PI``? In functions requiring angles, GDScript uses *radians*, not degrees. If you're more comfortable working with degrees, you'll need to use the ``deg2rad()`` and ``rad2deg()`` functions to convert between the two." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:915 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:913 msgid "Testing the scene" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:917 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:915 msgid "Let's test the scene to make sure everything is working. Add this to ``_ready()``:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:934 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:932 msgid "Let's also assign ``Main`` as our \"Main Scene\" - the one that runs automatically when the game launches. Press the \"Play\" button and select ``Main.tscn`` when prompted." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:938 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:936 msgid "You should be able to move the player around, see mobs spawning, and see the player disappear when hit by a mob." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:941 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:939 msgid "When you're sure everything is working, remove the call to ``new_game()`` from ``_ready()``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:945 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:943 msgid "HUD" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:947 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:945 msgid "The final piece our game needs is a UI: an interface to display things like score, a \"game over\" message, and a restart button. Create a new scene, and add a :ref:`CanvasLayer ` node named ``HUD``. \"HUD\" stands for \"heads-up display\", an informational display that appears as an overlay on top of the game view." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:953 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:951 msgid "The :ref:`CanvasLayer ` node lets us draw our UI elements on a layer above the rest of the game, so that the information it displays isn't covered up by any game elements like the player or mobs." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:957 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:955 msgid "The HUD needs to display the following information:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:959 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:957 msgid "Score, changed by ``ScoreTimer``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:960 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:958 msgid "A message, such as \"Game Over\" or \"Get Ready!\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:961 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:959 msgid "A \"Start\" button to begin the game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:963 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:961 msgid "The basic node for UI elements is :ref:`Control `. To create our UI, we'll use two types of :ref:`Control ` nodes: :ref:`Label ` and :ref:`Button `." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:967 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:965 msgid "Create the following as children of the ``HUD`` node:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:969 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:967 msgid ":ref:`Label ` named ``ScoreLabel``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:970 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:968 msgid ":ref:`Label ` named ``Message``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:971 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:969 msgid ":ref:`Button ` named ``StartButton``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:972 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:970 msgid ":ref:`Timer ` named ``MessageTimer``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:974 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:972 msgid "Click on the ``ScoreLabel`` and type a number into the ``Text`` field in the Inspector. The default font for ``Control`` nodes is small and doesn't scale well. There is a font file included in the game assets called \"Xolonium-Regular.ttf\". To use this font, do the following:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:979 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:977 msgid "Under \"Custom Fonts\", choose \"New DynamicFont\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:983 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:981 msgid "Click on the \"DynamicFont\" you added, and under \"Font/Font Data\", choose \"Load\" and select the \"Xolonium-Regular.ttf\" file. You must also set the font's ``Size``. A setting of ``64`` works well." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:989 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:987 msgid "Once you've done this on the ``ScoreLabel``, you can click the down arrow next to the DynamicFont property and choose \"Copy\", then \"Paste\" it in the same place on the other two Control nodes." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:993 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:991 msgid "**Anchors and Margins:** ``Control`` nodes have a position and size, but they also have anchors and margins. Anchors define the origin - the reference point for the edges of the node. Margins update automatically when you move or resize a control node. They represent the distance from the control node's edges to its anchor. See :ref:`doc_design_interfaces_with_the_control_nodes` for more details." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1000 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:998 msgid "Arrange the nodes as shown below. Click the \"Layout\" button to set a Control node's layout:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1005 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1003 msgid "You can drag the nodes to place them manually, or for more precise placement, use the following settings:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1009 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1007 msgid "ScoreLabel" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1011 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1009 msgid "*Layout* : \"Top Wide\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1012 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1010 msgid "*Text* : ``0``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1013 -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1020 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1011 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1018 msgid "*Align* : \"Center\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1016 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1014 msgid "Message" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1018 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1016 msgid "*Layout* : \"HCenter Wide\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1019 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1017 msgid "*Text* : ``Dodge the Creeps!``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1021 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1019 msgid "*Autowrap* : \"On\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1024 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1022 msgid "StartButton" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1026 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1024 msgid "*Text* : ``Start``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1027 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1025 msgid "*Layout* : \"Center Bottom\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1028 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1026 msgid "*Margin* :" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1030 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1028 msgid "Top: ``-200``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1031 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1029 msgid "Bottom: ``-100``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1033 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1031 msgid "On the ``MessageTimer``, set the ``Wait Time`` to ``2`` and set the ``One Shot`` property to \"On\"." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1036 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1034 msgid "Now add this script to ``HUD``:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1055 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1053 msgid "The ``start_game`` signal tells the ``Main`` node that the button has been pressed." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1077 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1075 msgid "This function is called when we want to display a message temporarily, such as \"Get Ready\"." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1111 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1109 msgid "This function is called when the player loses. It will show \"Game Over\" for 2 seconds, then return to the title screen and, after a brief pause, show the \"Start\" button." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1115 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1113 msgid "When you need to pause for a brief time, an alternative to using a Timer node is to use the SceneTree's ``create_timer()`` function. This can be very useful to add delays such as in the above code, where we want to wait some time before showing the \"Start\" button." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1133 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1131 msgid "This function is called by ``Main`` whenever the score changes." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1135 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1133 msgid "Connect the ``timeout()`` signal of ``MessageTimer`` and the ``pressed()`` signal of ``StartButton`` and add the following code to the new functions:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1163 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1161 msgid "Connecting HUD to Main" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1165 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1163 msgid "Now that we're done creating the ``HUD`` scene, go back to ``Main``. Instance the ``HUD`` scene in ``Main`` like you did the ``Player`` scene. The scene tree should look like this, so make sure you didn't miss anything:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1171 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1169 msgid "Now we need to connect the ``HUD`` functionality to our ``Main`` script. This requires a few additions to the ``Main`` scene:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1174 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1172 msgid "In the Node tab, connect the HUD's ``start_game`` signal to the ``new_game()`` function of the Main node by typing \"new_game\" in the \"Receiver Method\" in the \"Connect a Signal\" window. Verify that the green connection icon now appears next to ``func new_game()`` in the script." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1179 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1177 msgid "In ``new_game()``, update the score display and show the \"Get Ready\" message:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1194 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1192 msgid "In ``game_over()`` we need to call the corresponding ``HUD`` function:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1205 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1203 msgid "Finally, add this to ``_on_ScoreTimer_timeout()`` to keep the display in sync with the changing score:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1217 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1215 msgid "Now you're ready to play! Click the \"Play the Project\" button. You will be asked to select a main scene, so choose ``Main.tscn``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1221 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1219 msgid "Removing old creeps" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1223 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1221 msgid "If you play until \"Game Over\" and then start a new game right away, the creeps from the previous game may still be on the screen. It would be better if they all disappeared at the start of a new game. We just need a way to tell *all* the mobs to remove themselves. We can do this with the \"group\" feature." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1228 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1226 msgid "In the ``Mob`` scene, select the root node and click the \"Node\" tab next to the Inspector (the same place where you find the node's signals). Next to \"Signals\", click \"Groups\" and you can type a new group name and click \"Add\"." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1234 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1232 msgid "Now all mobs will be in the \"mobs\" group. We can then add the following line to the ``game_over()`` function in ``Main``:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1247 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1245 msgid "The ``call_group()`` function calls the named function on every node in a group - in this case we are telling every mob to delete itself." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1251 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1249 msgid "Finishing up" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1253 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1251 msgid "We have now completed all the functionality for our game. Below are some remaining steps to add a bit more \"juice\" to improve the game experience. Feel free to expand the gameplay with your own ideas." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1258 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1256 msgid "Background" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1260 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1258 msgid "The default gray background is not very appealing, so let's change its color. One way to do this is to use a :ref:`ColorRect ` node. Make it the first node under ``Main`` so that it will be drawn behind the other nodes. ``ColorRect`` only has one property: ``Color``. Choose a color you like and select \"Layout\" -> \"Full Rect\" so that it covers the screen." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1266 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1264 msgid "You could also add a background image, if you have one, by using a ``TextureRect`` node instead." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1270 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1268 msgid "Sound effects" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1272 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1270 msgid "Sound and music can be the single most effective way to add appeal to the game experience. In your game assets folder, you have two sound files: \"House In a Forest Loop.ogg\" for background music, and \"gameover.wav\" for when the player loses." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1277 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1275 msgid "Add two :ref:`AudioStreamPlayer ` nodes as children of ``Main``. Name one of them ``Music`` and the other ``DeathSound``. On each one, click on the ``Stream`` property, select \"Load\", and choose the corresponding audio file." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1282 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1280 msgid "To play the music, add ``$Music.play()`` in the ``new_game()`` function and ``$Music.stop()`` in the ``game_over()`` function." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1285 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1283 msgid "Finally, add ``$DeathSound.play()`` in the ``game_over()`` function." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1288 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1286 msgid "Keyboard shortcut" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1290 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1288 msgid "Since the game is played with keyboard controls, it would be convenient if we could also start the game by pressing a key on the keyboard. We can do this with the \"Shortcut\" property of the ``Button`` node." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1294 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1292 msgid "In the ``HUD`` scene, select the ``StartButton`` and find its *Shortcut* property in the Inspector. Select \"New Shortcut\" and click on the \"Shortcut\" item. A second *Shortcut* property will appear. Select \"New InputEventAction\" and click the new \"InputEventAction\". Finally, in the *Action* property, type the name ``ui_select``. This is the default input event associated with the spacebar." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1302 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1300 msgid "Now when the start button appears, you can either click it or press :kbd:`Space` to start the game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1306 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1304 msgid "Project files" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1311 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1309 msgid "You can find a completed version of this project at these locations:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1309 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1307 msgid "https://github.com/kidscancode/Godot3_dodge/releases" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1310 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1308 msgid "https://github.com/godotengine/godot-demo-projects" msgstr "" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/animation.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/animation.pot index 55ede77174..33041cd734 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/animation.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/animation.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/index.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/index.pot index 9c7bf16adf..a88a678568 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/index.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/lights.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/lights.pot index 49f344de50..e875c04e9a 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/lights.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/lights.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/material.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/material.pot index 6d341c48f6..73260564a7 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/material.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/material.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/mesh.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/mesh.pot index e4757a17e8..dbc91403d2 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/mesh.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/mesh.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/physics.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/physics.pot index 827c2d1f28..3238913186 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/physics.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/physics.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/escn_exporter/skeleton.pot b/sphinx/templates/getting_started/workflow/assets/escn_exporter/skeleton.pot index afb269fbc2..03b09d8e30 100644 --- a/sphinx/templates/getting_started/workflow/assets/escn_exporter/skeleton.pot +++ b/sphinx/templates/getting_started/workflow/assets/escn_exporter/skeleton.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/exporting_3d_scenes.pot b/sphinx/templates/getting_started/workflow/assets/exporting_3d_scenes.pot new file mode 100644 index 0000000000..cde018a633 --- /dev/null +++ b/sphinx/templates/getting_started/workflow/assets/exporting_3d_scenes.pot @@ -0,0 +1,61 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:4 +msgid "Exporting 3D scenes" +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:7 +msgid "Overview" +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:9 +msgid "In Godot it is possible to export 3D scenes as a glTF 2.0 file. You can export as a glTF binary (``.glb`` file) or glTF embedded with textures (``gltf`` + ``.bin`` + textures). This allows you to create scenes in Godot, such as a CSG mesh blockout for a level, export it to clean it up in a program such as Blender, and then bring it back into Godot." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:17 +msgid "Only Blender 2.83 and newer can import glTF files exported by Godot." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:19 +msgid "To export a scene in the editor go to **Project > Tools > Export GLTF...**" +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:24 +msgid "Limitations" +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:26 +msgid "There are several limitations with glTF export." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:28 +msgid "No support for exporting particles since their implementation varies across engines." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:29 +msgid "ShaderMaterials cannot be exported." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:30 +msgid "No support for exporting 2D scenes." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:31 +msgid "Only supported in editor builds (``tools=yes``)." +msgstr "" diff --git a/sphinx/templates/getting_started/workflow/assets/import_process.pot b/sphinx/templates/getting_started/workflow/assets/import_process.pot index 11c7e1983d..d3d2c896cf 100644 --- a/sphinx/templates/getting_started/workflow/assets/import_process.pot +++ b/sphinx/templates/getting_started/workflow/assets/import_process.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/importing_audio_samples.pot b/sphinx/templates/getting_started/workflow/assets/importing_audio_samples.pot index 127a2af682..6957be73a0 100644 --- a/sphinx/templates/getting_started/workflow/assets/importing_audio_samples.pot +++ b/sphinx/templates/getting_started/workflow/assets/importing_audio_samples.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/importing_images.pot b/sphinx/templates/getting_started/workflow/assets/importing_images.pot index 454f099379..d13672693a 100644 --- a/sphinx/templates/getting_started/workflow/assets/importing_images.pot +++ b/sphinx/templates/getting_started/workflow/assets/importing_images.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -61,323 +61,331 @@ msgid "SVG (``.svg``, ``.svgz``) - SVGs are rasterized using `NanoSVG `__." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:133 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:135 msgid "Flags" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:135 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:137 msgid "There are plenty of settings that can be toggled when importing an image as a texture, depending on the use case." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:138 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:140 msgid "Repeat" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:140 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:142 msgid "This setting is most commonly used in 3D, and is therefore generally disabled in 2D. It sets UV coordinates going beyond the 0,0 - 1,1 range to \"loop\"." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:142 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:144 msgid "Repeating can optionally be set to mirrored mode." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:145 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:147 msgid "Filter" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:147 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:149 msgid "When pixels become larger than the screen pixels, this option enables linear interpolation for them. The result is a smoother (less blocky) texture. This setting can be commonly used in 2D and 3D, but it's usually disabled when making pixel perfect games." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:150 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:152 msgid "Mipmaps" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:152 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:154 msgid "When pixels become smaller than the screen, mipmaps kick in. This helps reduce the grainy effect when shrinking the textures. Keep in mind that, in older hardware (GLES2, mainly mobile), there are some requirements to use mipmaps:" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:155 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:157 msgid "Texture width and height must be powers of 2" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:156 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:158 msgid "Repeat must be enabled" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:158 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:160 msgid "Keep in mind the above when making phone games and applications, want to aim for full compatibility, and need mipmaps." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:160 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:162 msgid "When doing 3D, mipmap should be turned on, as this also improves performance (smaller versions of the texture are used for objects further away)." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:163 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:165 msgid "Anisotropic" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:165 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:167 msgid "When textures are near parallel to the view (like floors), this option makes them have more detail by reducing blurriness." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:168 -msgid "SRGB" -msgstr "" - #: ../../docs/getting_started/workflow/assets/importing_images.rst:170 -msgid "Godot uses Linear colorspace when rendering 3D. Textures mapped to albedo or detail channels need to have this option turned on in order for colors to look correct. When set to \"Detect\" mode, the texture will be marked as SRGB when used in albedo channels." +msgid "sRGB" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:174 -msgid "Process" +#: ../../docs/getting_started/workflow/assets/importing_images.rst:172 +msgid "Godot uses Linear colorspace when rendering 3D. Textures mapped to albedo or detail channels need to have this option turned on in order for colors to look correct. When set to **Detect** mode, the texture will be marked as sRGB when used in albedo channels." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:176 -msgid "Some special processes can be applied to images when imported as textures." -msgstr "" - -#: ../../docs/getting_started/workflow/assets/importing_images.rst:179 -msgid "Fix Alpha Border" +#: ../../docs/getting_started/workflow/assets/importing_images.rst:177 +msgid "Since the texture will have its data modified when sRGB is enabled, this means using the same texture in both 2D and 3D will make the texture display with incorrect colors in either 2D or 3D." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:181 -msgid "This puts pixels of the same surrounding color in transition from transparency to non transparency. It helps mitigate the outline effect when exporting images from Photoshop and the like." +msgid "To work around this, make a copy of the texture on the filesystem and enable sRGB on one of the copies only. Use the copy with sRGB enabled in 3D, and the copy with sRGB disabled in 2D." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:186 -msgid "It's a good idea to leave it on by default, unless specific values are needed." +msgid "Process" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:189 -msgid "Premultiplied Alpha" +#: ../../docs/getting_started/workflow/assets/importing_images.rst:188 +msgid "Some special processes can be applied to images when imported as textures." msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:191 +msgid "Fix Alpha Border" +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_images.rst:193 +msgid "This puts pixels of the same surrounding color in transition from transparency to non transparency. It helps mitigate the outline effect when exporting images from Photoshop and the like." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_images.rst:198 +msgid "It's a good idea to leave it on by default, unless specific values are needed." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_images.rst:201 +msgid "Premultiplied Alpha" +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_images.rst:203 msgid "An alternative to fix darkened borders is to use premultiplied alpha. By enabling this option, the texture will be converted to this format. Keep in mind that a material will need to be created that uses the PREMULT ALPHA blend mode on canvas items that need it." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:195 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:207 msgid "HDR as sRGB" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:197 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:209 msgid "A few HDR files are broken and contain sRGB color data. It is advised not to use them, but, in the worst-case scenario, toggling this option on will make them look right." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:200 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:212 msgid "Invert Color" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:202 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:214 msgid "Reverses the image's color. This is useful, for example, to convert a height map generated by external programs to depth map to use with :ref:`doc_spatial_material`." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:205 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:217 msgid "Svg" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:208 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:220 msgid "Scale" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:210 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:222 msgid "This option only applies to SVG files. It controls the scale of the SVG image. The default scale (1.0) will make the imported SVG match its original design scale." msgstr "" diff --git a/sphinx/templates/getting_started/workflow/assets/importing_scenes.pot b/sphinx/templates/getting_started/workflow/assets/importing_scenes.pot index 57b258b15c..f0557b8ba6 100644 --- a/sphinx/templates/getting_started/workflow/assets/importing_scenes.pot +++ b/sphinx/templates/getting_started/workflow/assets/importing_scenes.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/importing_translations.pot b/sphinx/templates/getting_started/workflow/assets/importing_translations.pot index 08d891f2df..97bf1e1160 100644 --- a/sphinx/templates/getting_started/workflow/assets/importing_translations.pot +++ b/sphinx/templates/getting_started/workflow/assets/importing_translations.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/assets/index.pot b/sphinx/templates/getting_started/workflow/assets/index.pot index 8b1758b702..10ae0a510e 100644 --- a/sphinx/templates/getting_started/workflow/assets/index.pot +++ b/sphinx/templates/getting_started/workflow/assets/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.pot b/sphinx/templates/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.pot index 3d39f12d3a..5f6442f5bb 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/autoloads_versus_internal_nodes.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/data_preferences.pot b/sphinx/templates/getting_started/workflow/best_practices/data_preferences.pot index b07f1fa4b6..8d872f1e4e 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/data_preferences.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/data_preferences.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/godot_interfaces.pot b/sphinx/templates/getting_started/workflow/best_practices/godot_interfaces.pot index b53ff2e79f..709d473906 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/godot_interfaces.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/godot_interfaces.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/godot_notifications.pot b/sphinx/templates/getting_started/workflow/best_practices/godot_notifications.pot index 565b7c5988..27867d437b 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/godot_notifications.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/godot_notifications.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -49,125 +49,117 @@ msgid "``_physics_process(delta)`` : NOTIFICATION_PHYSICS_PROCESS" msgstr "" #: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:26 -msgid "``_input()`` : NOTIFICATION_INPUT" -msgstr "" - -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:28 -msgid "``_unhandled_input()`` : NOTIFICATION_UNHANDLED_INPUT" -msgstr "" - -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:30 msgid "``_draw()`` : NOTIFICATION_DRAW" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:32 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:28 msgid "What users might *not* realize is that notifications exist for types other than Node alone:" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:35 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:31 msgid ":ref:`Object::NOTIFICATION_POSTINITIALIZE `: a callback that triggers during object initialization. Not accessible to scripts." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:38 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:34 msgid ":ref:`Object::NOTIFICATION_PREDELETE `: a callback that triggers before the engine deletes an Object, i.e. a 'destructor'." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:42 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:38 msgid ":ref:`MainLoop::NOTIFICATION_WM_MOUSE_ENTER `: a callback that triggers when the mouse enters the window in the operating system that displays the game content." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:46 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:42 msgid "And many of the callbacks that *do* exist in Nodes don't have any dedicated methods, but are still quite useful." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:49 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:45 msgid ":ref:`Node::NOTIFICATION_PARENTED `: a callback that triggers anytime one adds a child node to another node." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:52 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:48 msgid ":ref:`Node::NOTIFICATION_UNPARENTED `: a callback that triggers anytime one removes a child node from another node." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:56 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:52 msgid ":ref:`Popup::NOTIFICATION_POST_POPUP `: a callback that triggers after a Popup node completes any ``popup*`` method. Note the difference from its ``about_to_show`` signal which triggers *before* its appearance." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:61 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:57 msgid "One can access all these custom notifications from the universal ``_notification`` method." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:65 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:61 msgid "Methods in the documentation labeled as \"virtual\" are also intended to be overridden by scripts." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:68 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:64 msgid "A classic example is the :ref:`_init ` method in Object. While it has no ``NOTIFICATION_*`` equivalent, the engine still calls the method. Most languages (except C#) rely on it as a constructor." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:73 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:69 msgid "So, in which situation should one use each of these notifications or virtual functions?" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:77 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:73 msgid "_process vs. _physics_process vs. \\*_input" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:79 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:75 msgid "Use ``_process`` when one needs a framerate-dependent deltatime between frames. If code that updates object data needs to update as often as possible, this is the right place. Recurring logic checks and data caching often execute here, but it comes down to the frequency at which one needs the evaluations to update. If they don't need to execute every frame, then implementing a Timer-yield-timeout loop is another option." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:97 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:93 msgid "Use ``_physics_process`` when one needs a framerate-independent deltatime between frames. If code needs consistent updates over time, regardless of how fast or slow time advances, this is the right place. Recurring kinematic and object transform operations should execute here." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:102 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:98 msgid "While it is possible, to achieve the best performance, one should avoid making input checks during these callbacks. ``_process`` and ``_physics_process`` will trigger at every opportunity (they do not \"rest\" by default). In contrast, ``*_input`` callbacks will trigger only on frames in which the engine has actually detected the input." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:108 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:104 msgid "One can check for input actions within the input callbacks just the same. If one wants to use delta time, one can fetch it from the related deltatime methods as needed." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:156 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:152 msgid "_init vs. initialization vs. export" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:158 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:154 msgid "If the script initializes its own node subtree, without a scene, that code should execute here. Other property or SceneTree-independent initializations should also run here. This triggers before ``_ready`` or ``_enter_tree``, but after a script creates and initializes its properties." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:163 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:159 msgid "Scripts have three types of property assignments that can occur during instantiation:" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:210 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:206 msgid "When instantiating a scene, property values will set up according to the following sequence:" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:213 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:209 msgid "**Initial value assignment:** instantiation will assign either the initialization value or the init assignment value. Init assignments take priority over initialization values." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:217 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:213 msgid "**Exported value assignment:** If instancing from a scene rather than a script, Godot will assign the exported value to replace the initial value defined in the script." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:221 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:217 msgid "As a result, instantiating a script versus a scene will affect both the initialization *and* the number of times the engine calls the setter." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:225 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:221 msgid "_ready vs. _enter_tree vs. NOTIFICATION_PARENTED" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:227 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:223 msgid "When instantiating a scene connected to the first executed scene, Godot will instantiate nodes down the tree (making ``_init`` calls) and build the tree going downwards from the root. This causes ``_enter_tree`` calls to cascade down the tree. Once the tree is complete, leaf nodes call ``_ready``. A node will call this method once all child nodes have finished calling theirs. This then causes a reverse cascade going up back to the tree's root." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:234 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:230 msgid "When instantiating a script or a standalone scene, nodes are not added to the SceneTree upon creation, so no ``_enter_tree`` callbacks trigger. Instead, only the ``_init`` call occurs. When the scene is added to the SceneTree, the ``_enter_tree`` and ``_ready`` calls occur." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:239 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:235 msgid "If one needs to trigger behavior that occurs as nodes parent to another, regardless of whether it occurs as part of the main/active scene or not, one can use the :ref:`PARENTED ` notification. For example, here is a snippet that connects a node's method to a custom signal on the parent node without failing. Useful on data-centric nodes that one might create at runtime." msgstr "" diff --git a/sphinx/templates/getting_started/workflow/best_practices/index.pot b/sphinx/templates/getting_started/workflow/best_practices/index.pot index 059e2a839d..8768bec821 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/index.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/introduction_best_practices.pot b/sphinx/templates/getting_started/workflow/best_practices/introduction_best_practices.pot index e37a051a0c..66a5dda3a1 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/introduction_best_practices.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/introduction_best_practices.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/logic_preferences.pot b/sphinx/templates/getting_started/workflow/best_practices/logic_preferences.pot index 72f43984dc..ee7766e6e0 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/logic_preferences.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/logic_preferences.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/node_alternatives.pot b/sphinx/templates/getting_started/workflow/best_practices/node_alternatives.pot index 0ac089f8bb..88b703a45a 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/node_alternatives.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/node_alternatives.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/scene_organization.pot b/sphinx/templates/getting_started/workflow/best_practices/scene_organization.pot index c883f18b7f..f36d7859de 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/scene_organization.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/scene_organization.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/scenes_versus_scripts.pot b/sphinx/templates/getting_started/workflow/best_practices/scenes_versus_scripts.pot index 9cfe8ee536..a1b1e7d78f 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/scenes_versus_scripts.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/scenes_versus_scripts.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/best_practices/what_are_godot_classes.pot b/sphinx/templates/getting_started/workflow/best_practices/what_are_godot_classes.pot index c1dcc16439..e3ed2c45e8 100644 --- a/sphinx/templates/getting_started/workflow/best_practices/what_are_godot_classes.pot +++ b/sphinx/templates/getting_started/workflow/best_practices/what_are_godot_classes.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/android_custom_build.pot b/sphinx/templates/getting_started/workflow/export/android_custom_build.pot index f6beb7a3a2..a8c5281db7 100644 --- a/sphinx/templates/getting_started/workflow/export/android_custom_build.pot +++ b/sphinx/templates/getting_started/workflow/export/android_custom_build.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/changing_application_icon_for_windows.pot b/sphinx/templates/getting_started/workflow/export/changing_application_icon_for_windows.pot index 46ecfad605..9c91a5b48c 100644 --- a/sphinx/templates/getting_started/workflow/export/changing_application_icon_for_windows.pot +++ b/sphinx/templates/getting_started/workflow/export/changing_application_icon_for_windows.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_for_android.pot b/sphinx/templates/getting_started/workflow/export/exporting_for_android.pot index bc864eb53c..683dfa2d9f 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_for_android.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_for_android.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -81,11 +81,11 @@ msgid "If you are using Linux, **do not use an Android SDK provided by your dist msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:40 -msgid "Install OpenJDK 8" +msgid "Install OpenJDK 11" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:42 -msgid "Download and install `OpenJDK 8 `__." +msgid "Download and install `OpenJDK 11 `__." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:45 diff --git a/sphinx/templates/getting_started/workflow/export/exporting_for_dedicated_servers.pot b/sphinx/templates/getting_started/workflow/export/exporting_for_dedicated_servers.pot index 11f4f5b4ca..e920c0e008 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_for_dedicated_servers.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_for_dedicated_servers.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_for_ios.pot b/sphinx/templates/getting_started/workflow/export/exporting_for_ios.pot index 69a281a2da..31a7c52075 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_for_ios.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_for_ios.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_for_pc.pot b/sphinx/templates/getting_started/workflow/export/exporting_for_pc.pot index 496cb77ec6..252dbc6cef 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_for_pc.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_for_pc.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_for_uwp.pot b/sphinx/templates/getting_started/workflow/export/exporting_for_uwp.pot index 6670008f87..3e2fb07aad 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_for_uwp.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_for_uwp.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_for_web.pot b/sphinx/templates/getting_started/workflow/export/exporting_for_web.pot index 933aad2220..a22d34a746 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_for_web.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_for_web.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_pcks.pot b/sphinx/templates/getting_started/workflow/export/exporting_pcks.pot index ae22651969..653841f345 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_pcks.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_pcks.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/exporting_projects.pot b/sphinx/templates/getting_started/workflow/export/exporting_projects.pot index 29de579c04..f0af7cb733 100644 --- a/sphinx/templates/getting_started/workflow/export/exporting_projects.pot +++ b/sphinx/templates/getting_started/workflow/export/exporting_projects.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -48,146 +48,142 @@ msgstr "" msgid "Finally, Godot has a simple but efficient system for :ref:`creating DLCs as extra package files `." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:39 -msgid "Godot does not support loading PCK files larger than 2 GB yet. If your exported project data is larger than 2 GB, you will need to split it into several PCK files by :ref:`exporting additional PCKs ` and loading them at run-time." -msgstr "" - -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:45 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:38 msgid "On mobile" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:47 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:40 msgid "The same scenario on mobile platforms is a little worse. To distribute a project on those devices, a binary for each of those platforms is built, then added to a native project together with the game data." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:52 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:45 msgid "This can be troublesome because it means that the developer must be familiarized with the SDK of each platform before even being able to export. While learning each SDK is always encouraged, it can be frustrating to be forced to do it at an undesired time." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:57 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:50 msgid "There is also another problem with this approach: different devices prefer some data in different formats to run. The main example of this is texture compression. All PC hardware uses S3TC (BC) compression and that has been standardized for more than a decade, but mobile devices use different formats for texture compression, such as PVRTC (iOS) or ETC (Android)." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:65 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:58 msgid "Export menu" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:67 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:60 msgid "After many attempts at different export workflows, the current one has proven to work the best. At the time of this writing, not all platforms are supported yet, but the supported platforms continue to grow." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:71 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:64 msgid "To open the export menu, click the **Export** button:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:75 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:68 msgid "The export menu will open. However, it will be completely empty. This is because we need to add an export preset." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:80 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:73 msgid "To create an export preset, click the **Add…** button at the top of the export menu. This will open a drop-down list of platforms to choose from for an export preset." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:86 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:79 msgid "The default options are often enough to export, so tweaking them is usually not necessary. However, many platforms require additional tools (SDKs) to be installed to be able to export. Additionally, Godot needs export templates installed to create packages. The export menu will complain when something is missing and will not allow the user to export for that platform until they resolve it:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:95 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:88 msgid "At that time, the user is expected to come back to the documentation and follow instructions on how to properly set up that platform." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:99 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:92 msgid "Export templates" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:101 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:94 msgid "Apart from setting up the platform, the export templates must be installed to be able to export projects. They can be obtained as a TPZ file (which is a renamed ZIP archive) from the `download page of the website `_." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:106 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:99 msgid "Once downloaded, they can be installed using the **Install Export Templates** option in the editor:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:114 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:107 msgid "Export mode" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:116 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:109 msgid "When exporting, Godot makes a list of all the files to export and then creates the package. There are 3 different modes for exporting:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:119 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:112 msgid "Export all resources in the project" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:120 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:113 msgid "Export selected scenes (and dependencies)" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:121 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:114 msgid "Export selected resources (and dependencies)" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:125 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:118 msgid "**Export all resources in the project** will export every resource in the project. **Export selected scenes** and **Export selected resources** gives you a list of the scenes or resources in the project, and you have to select every scene or resource you want to export." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:133 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:126 msgid "Exporting from the command line" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:135 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:128 msgid "In production, it is useful to automate builds, and Godot supports this with the ``--export`` and ``--export-debug`` command line parameters. Exporting from the command line still requires an export preset to define the export parameters. A basic invocation of the command would be:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:144 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:137 msgid "This will export to ``some_name.exe``, assuming there is a preset called \"Windows Desktop\" and the template can be found. The output path is relative to the project path or absolute; it does not respect the directory the command was invoked from." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:149 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:142 msgid "You can also configure it to export only the PCK or ZIP file, allowing a single export to be used with multiple Godot executables. This takes place if the target name ends with ``.pck`` or ``.zip``." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:153 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:146 msgid "It is often useful to combine the ``--export`` flag with the ``--path`` flag, and to create a dedicated export preset for automated export:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:161 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:154 msgid "PCK versus ZIP pack file formats" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:163 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:156 msgid "Each format has its upsides and downsides. PCK is the default and recommended format for most use cases, but you may want to use a ZIP archive instead depending on your needs." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:167 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:160 msgid "**PCK format:**" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:169 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:162 msgid "Uncompressed format. Larger file size, but faster to read/write." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:170 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:163 msgid "Not readable and writable using tools normally present on the user's operating system, even though there are `third-party tools `__ to extract and create PCK files." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:175 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:168 msgid "**ZIP format:**" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:177 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:170 msgid "Compressed format. Smaller file size, but slower to read/write." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:178 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:171 msgid "Readable and writable using tools normally present on the user's operating system. This can be useful to make modding easier (see also :ref:`doc_exporting_pcks`)." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:183 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:176 msgid "Due to a `known bug `__, when using a ZIP file as a pack file, the exported binary will not try to use it automatically. Therefore, you have to create a *launcher script* that the player can double-click or run from a terminal to launch the project::" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:195 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:188 msgid "Save the launcher script and place it in the same folder as the exported binary. On Linux, make sure to give executable permissions to the launcher script using the command ``chmod +x launch.sh``." msgstr "" diff --git a/sphinx/templates/getting_started/workflow/export/feature_tags.pot b/sphinx/templates/getting_started/workflow/export/feature_tags.pot index 13c6e69971..0211488a95 100644 --- a/sphinx/templates/getting_started/workflow/export/feature_tags.pot +++ b/sphinx/templates/getting_started/workflow/export/feature_tags.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/index.pot b/sphinx/templates/getting_started/workflow/export/index.pot index 7aaefbaba1..1fcea1a1b4 100644 --- a/sphinx/templates/getting_started/workflow/export/index.pot +++ b/sphinx/templates/getting_started/workflow/export/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/export/one-click_deploy.pot b/sphinx/templates/getting_started/workflow/export/one-click_deploy.pot index ef4723ca5f..afc9d637a8 100644 --- a/sphinx/templates/getting_started/workflow/export/one-click_deploy.pot +++ b/sphinx/templates/getting_started/workflow/export/one-click_deploy.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/index.pot b/sphinx/templates/getting_started/workflow/index.pot index 6e2663783d..f20d99b8fd 100644 --- a/sphinx/templates/getting_started/workflow/index.pot +++ b/sphinx/templates/getting_started/workflow/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/project_setup/index.pot b/sphinx/templates/getting_started/workflow/project_setup/index.pot index 0021ad9809..189dbc4b02 100644 --- a/sphinx/templates/getting_started/workflow/project_setup/index.pot +++ b/sphinx/templates/getting_started/workflow/project_setup/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/getting_started/workflow/project_setup/project_organization.pot b/sphinx/templates/getting_started/workflow/project_setup/project_organization.pot index 8b015fe9f9..0326e85a99 100644 --- a/sphinx/templates/getting_started/workflow/project_setup/project_organization.pot +++ b/sphinx/templates/getting_started/workflow/project_setup/project_organization.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -93,29 +93,29 @@ msgid "To create a file whose name starts with a dot on Windows, you can use a t msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:87 -msgid "Once the folder is ignored, resources in that folder can't be loaded anymore using the ``load()`` and ``preload()`` methods." +msgid "Once the folder is ignored, resources in that folder can't be loaded anymore using the ``load()`` and ``preload()`` methods. Ignoring a folder will also automatically hide it from the FileSystem dock, which can be useful to reduce clutter." msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:90 -msgid "Ignoring a folder will also automatically hide it from the FileSystem dock, which can be useful to reduce clutter." +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:91 +msgid "Note that the ``.gdignore`` file's contents are ignored, which is why the file should be empty. It does not support patterns like ``.gitignore`` files do." msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:96 +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:97 msgid "Case sensitivity" msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:98 +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:99 msgid "Windows and recent macOS versions use case-insensitive filesystems by default, whereas Linux distributions use a case-sensitive filesystem by default. This can cause issues after exporting a project, since Godot's PCK virtual filesystem is case-sensitive. To avoid this, it's recommended to stick to ``snake_case`` naming for all files in the project (and lowercase characters in general)." msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:107 +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:108 msgid "You can break this rule when style guides say otherwise (such as the C# style guide). Still, be consistent to avoid mistakes." msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:110 +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:111 msgid "On Windows 10, to further avoid mistakes related to case sensitivity, you can also make the project folder case-sensitive. After enabling the Windows Subsystem for Linux feature, run the following command in a PowerShell window::" msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:120 +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:121 msgid "If you haven't enabled the Windows Subsystem for Linux, you can enter the following line in a PowerShell window *running as Administrator* then reboot when asked::" msgstr "" diff --git a/sphinx/templates/getting_started/workflow/project_setup/version_control_systems.pot b/sphinx/templates/getting_started/workflow/project_setup/version_control_systems.pot index 0b0cb9e2cb..34b6b51639 100644 --- a/sphinx/templates/getting_started/workflow/project_setup/version_control_systems.pot +++ b/sphinx/templates/getting_started/workflow/project_setup/version_control_systems.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/index.pot b/sphinx/templates/index.pot index 77d911d0a2..ec5f94f7d3 100644 --- a/sphinx/templates/index.pot +++ b/sphinx/templates/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -31,23 +31,23 @@ msgstr "" msgid "Tutorials" msgstr "" -#: ../../docs/index.rst:114 -#: ../../docs/index.rst:114 +#: ../../docs/index.rst:115 +#: ../../docs/index.rst:115 msgid "Development" msgstr "" -#: ../../docs/index.rst:125 -#: ../../docs/index.rst:125 +#: ../../docs/index.rst:126 +#: ../../docs/index.rst:126 msgid "Community" msgstr "" -#: ../../docs/index.rst:135 -#: ../../docs/index.rst:135 +#: ../../docs/index.rst:136 +#: ../../docs/index.rst:136 msgid "Class reference" msgstr "" #: ../../docs/index.rst:2 -msgid "Godot Docs – *3.3* branch" +msgid "Godot Docs – *3.4* branch" msgstr "" #: ../../docs/index.rst:6 @@ -55,7 +55,7 @@ msgid "Godot's documentation is available in various languages and versions. Exp msgstr "" #: ../../docs/index.rst:10 -msgid "This is the documentation for the stable 3.3 branch. Looking for the documentation of the current **development** branch? `Have a look here `_. You can also browse the documentation for the previous stable `3.2 `_ branch." +msgid "This is the documentation for the beta 3.4 branch. Looking for the documentation of the current **development** branch? `Have a look here `_. You can also browse the documentation for the current stable `3.3 `_ branch." msgstr "" #: ../../docs/index.rst:18 diff --git a/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot b/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot index 8e11ac3945..6863951a1c 100644 --- a/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot +++ b/sphinx/templates/tutorials/2d/2d_lights_and_shadows.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/2d_meshes.pot b/sphinx/templates/tutorials/2d/2d_meshes.pot index 613cdd2d24..f3337dd8de 100644 --- a/sphinx/templates/tutorials/2d/2d_meshes.pot +++ b/sphinx/templates/tutorials/2d/2d_meshes.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/2d_movement.pot b/sphinx/templates/tutorials/2d/2d_movement.pot index 750cb9c673..e0736c724b 100644 --- a/sphinx/templates/tutorials/2d/2d_movement.pot +++ b/sphinx/templates/tutorials/2d/2d_movement.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/2d_sprite_animation.pot b/sphinx/templates/tutorials/2d/2d_sprite_animation.pot index 2d25bbcbb0..cbd152dc99 100644 --- a/sphinx/templates/tutorials/2d/2d_sprite_animation.pot +++ b/sphinx/templates/tutorials/2d/2d_sprite_animation.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/2d_transforms.pot b/sphinx/templates/tutorials/2d/2d_transforms.pot index 112660de50..33eaa90aea 100644 --- a/sphinx/templates/tutorials/2d/2d_transforms.pot +++ b/sphinx/templates/tutorials/2d/2d_transforms.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/canvas_layers.pot b/sphinx/templates/tutorials/2d/canvas_layers.pot index b601f18cd1..0497c66bd2 100644 --- a/sphinx/templates/tutorials/2d/canvas_layers.pot +++ b/sphinx/templates/tutorials/2d/canvas_layers.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot b/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot index 6fa826ef64..9668009fc8 100644 --- a/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot +++ b/sphinx/templates/tutorials/2d/custom_drawing_in_2d.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,181 +21,177 @@ msgid "Custom drawing in 2D" msgstr "" #: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:7 -msgid "Why?" +msgid "Introduction" msgstr "" #: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:9 msgid "Godot has nodes to draw sprites, polygons, particles, and all sorts of stuff. For most cases, this is enough; but not always. Before crying in fear, angst, and rage because a node to draw that specific *something* does not exist... it would be good to know that it is possible to easily make any 2D node (be it :ref:`Control ` or :ref:`Node2D ` based) draw custom commands. It is *really* easy to do it, too." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:17 -msgid "But..." +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:16 +msgid "Custom drawing in a 2D node is *really* useful. Here are some use cases:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:19 -msgid "Custom drawing manually in a node is *really* useful. Here are some examples why:" +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:18 +msgid "Drawing shapes or logic that existing nodes can't do, such as an image with trails or a special animated polygon." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:22 -msgid "Drawing shapes or logic that is not handled by nodes (example: making a node that draws a circle, an image with trails, a special kind of animated polygon, etc)." +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:20 +msgid "Visualizations that are not that compatible with nodes, such as a tetris board. (The tetris example uses a custom draw function to draw the blocks.)" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:25 -msgid "Visualizations that are not that compatible with nodes: (example: a tetris board). The tetris example uses a custom draw function to draw the blocks." +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:23 +msgid "Drawing a large number of simple objects. Custom drawing avoids the overhead of using a large number of nodes, possibly lowering memory usage and improving performance." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:28 -msgid "Drawing a large number of simple objects. Custom drawing avoids the overhead of using nodes which makes it less memory intensive and potentially faster." +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:26 +msgid "Making a custom UI control. There are plenty of controls available, but when you have unusual needs, you will likely need a custom control." msgstr "" #: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:31 -msgid "Making a custom UI control. There are plenty of controls available, but it's easy to run into the need to make a new, custom one." +msgid "Drawing" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:35 -msgid "OK, how?" -msgstr "" - -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:37 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:33 msgid "Add a script to any :ref:`CanvasItem ` derived node, like :ref:`Control ` or :ref:`Node2D `. Then override the ``_draw()`` function." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:57 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:53 msgid "Draw commands are described in the :ref:`CanvasItem ` class reference. There are plenty of them." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:61 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:57 msgid "Updating" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:63 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:59 msgid "The ``_draw()`` function is only called once, and then the draw commands are cached and remembered, so further calls are unnecessary." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:66 -msgid "If re-drawing is required because a state or something else changed, simply call :ref:`CanvasItem.update() ` in that same node and a new ``_draw()`` call will happen." +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:62 +msgid "If re-drawing is required because a state or something else changed, call :ref:`CanvasItem.update() ` in that same node and a new ``_draw()`` call will happen." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:70 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:66 msgid "Here is a little more complex example, a texture variable that will be redrawn if modified:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:114 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:110 msgid "In some cases, it may be desired to draw every frame. For this, just call ``update()`` from the ``_process()`` callback, like this:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:146 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:142 msgid "An example: drawing circular arcs" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:148 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:144 msgid "We will now use the custom drawing functionality of the Godot Engine to draw something that Godot doesn't provide functions for. As an example, Godot provides a ``draw_circle()`` function that draws a whole circle. However, what about drawing a portion of a circle? You will have to code a function to perform this and draw it yourself." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:154 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:150 msgid "Arc function" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:156 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:152 msgid "An arc is defined by its support circle parameters, that is, the center position and the radius. The arc itself is then defined by the angle it starts from and the angle at which it stops. These are the 4 arguments that we have to provide to our drawing function. We'll also provide the color value, so we can draw the arc in different colors if we wish." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:161 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:157 msgid "Basically, drawing a shape on the screen requires it to be decomposed into a certain number of points linked from one to the next. As you can imagine, the more points your shape is made of, the smoother it will appear, but the heavier it will also be in terms of processing cost. In general, if your shape is huge (or in 3D, close to the camera), it will require more points to be drawn without it being angular-looking. On the contrary, if your shape is small (or in 3D, far from the camera), you may decrease its number of points to save processing costs; this is known as *Level of Detail (LOD)*. In our example, we will simply use a fixed number of points, no matter the radius." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:201 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:197 msgid "Remember the number of points our shape has to be decomposed into? We fixed this number in the ``nb_points`` variable to a value of ``32``. Then, we initialize an empty ``PoolVector2Array``, which is simply an array of ``Vector2``\\ s." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:205 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:201 msgid "The next step consists of computing the actual positions of these 32 points that compose an arc. This is done in the first for-loop: we iterate over the number of points for which we want to compute the positions, plus one to include the last point. We first determine the angle of each point, between the starting and ending angles." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:210 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:206 msgid "The reason why each angle is decreased by 90° is that we will compute 2D positions out of each angle using trigonometry (you know, cosine and sine stuff...). However, to be simple, ``cos()`` and ``sin()`` use radians, not degrees. The angle of 0° (0 radian) starts at 3 o'clock, although we want to start counting at 12 o'clock. So we decrease each angle by 90° in order to start counting from 12 o'clock." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:216 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:212 msgid "The actual position of a point located on a circle at angle ``angle`` (in radians) is given by ``Vector2(cos(angle), sin(angle))``. Since ``cos()`` and ``sin()`` return values between -1 and 1, the position is located on a circle of radius 1. To have this position on our support circle, which has a radius of ``radius``, we simply need to multiply the position by ``radius``. Finally, we need to position our support circle at the ``center`` position, which is performed by adding it to our ``Vector2`` value. Finally, we insert the point in the ``PoolVector2Array`` which was previously defined." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:224 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:220 msgid "Now, we need to actually draw our points. As you can imagine, we will not simply draw our 32 points: we need to draw everything that is between each of them. We could have computed every point ourselves using the previous method, and drew it one by one. But this is too complicated and inefficient (except if explicitly needed), so we simply draw lines between each pair of points. Unless the radius of our support circle is big, the length of each line between a pair of points will never be long enough to see them. If that were to happen, we would simply need to increase the number of points." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:234 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:230 msgid "Draw the arc on the screen" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:236 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:232 msgid "We now have a function that draws stuff on the screen; it is time to call it inside the ``_draw()`` function:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:263 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:259 msgid "Result:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:268 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:264 msgid "Arc polygon function" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:270 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:266 msgid "We can take this a step further and not only write a function that draws the plain portion of the disc defined by the arc, but also its shape. The method is exactly the same as before, except that we draw a polygon instead of lines:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:310 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:306 msgid "Dynamic custom drawing" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:312 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:308 msgid "All right, we are now able to draw custom stuff on the screen. However, it is static; let's make this shape turn around the center. The solution to do this is simply to change the angle_from and angle_to values over time. For our example, we will simply increment them by 50. This increment value has to remain constant or else the rotation speed will change accordingly." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:318 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:314 msgid "First, we have to make both angle_from and angle_to variables global at the top of our script. Also note that you can store them in other nodes and access them using ``get_node()``." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:340 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:336 msgid "We make these values change in the _process(delta) function." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:342 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:338 msgid "We also increment our angle_from and angle_to values here. However, we must not forget to ``wrap()`` the resulting values between 0 and 360°! That is, if the angle is 361°, then it is actually 1°. If you don't wrap these values, the script will work correctly, but the angle values will grow bigger and bigger over time until they reach the maximum integer value Godot can manage (``2^31 - 1``). When this happens, Godot may crash or produce unexpected behavior." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:349 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:345 msgid "Finally, we must not forget to call the ``update()`` function, which automatically calls ``_draw()``. This way, you can control when you want to refresh the frame." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:389 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:378 msgid "Also, don't forget to modify the ``_draw()`` function to make use of these variables:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:413 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:402 msgid "Let's run! It works, but the arc is rotating insanely fast! What's wrong?" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:416 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:405 msgid "The reason is that your GPU is actually displaying the frames as fast as it can. We need to \"normalize\" the drawing by this speed; to achieve that, we have to make use of the ``delta`` parameter of the ``_process()`` function. ``delta`` contains the time elapsed between the two last rendered frames. It is generally small (about 0.0003 seconds, but this depends on your hardware), so using ``delta`` to control your drawing ensures that your program runs at the same speed on everybody's hardware." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:424 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:413 msgid "In our case, we simply need to multiply our ``rotation_angle`` variable by ``delta`` in the ``_process()`` function. This way, our 2 angles will be increased by a much smaller value, which directly depends on the rendering speed." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:458 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:447 msgid "Let's run again! This time, the rotation displays fine!" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:461 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:450 msgid "Tools" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:463 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:452 msgid "Drawing your own nodes might also be desired while running them in the editor to use as a preview or visualization of some feature or behavior." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:467 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:456 msgid "Remember to use the \"tool\" keyword at the top of the script (check the :ref:`doc_gdscript` reference if you forgot what this does)." msgstr "" diff --git a/sphinx/templates/tutorials/2d/index.pot b/sphinx/templates/tutorials/2d/index.pot index 8ccaec8791..fd2c056117 100644 --- a/sphinx/templates/tutorials/2d/index.pot +++ b/sphinx/templates/tutorials/2d/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/particle_systems_2d.pot b/sphinx/templates/tutorials/2d/particle_systems_2d.pot index b5559bb940..659fb7e741 100644 --- a/sphinx/templates/tutorials/2d/particle_systems_2d.pot +++ b/sphinx/templates/tutorials/2d/particle_systems_2d.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/2d/using_tilemaps.pot b/sphinx/templates/tutorials/2d/using_tilemaps.pot index f2532e48f8..fdfb466515 100644 --- a/sphinx/templates/tutorials/2d/using_tilemaps.pot +++ b/sphinx/templates/tutorials/2d/using_tilemaps.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,7 +33,7 @@ msgid "Project setup" msgstr "" #: ../../docs/tutorials/2d/using_tilemaps.rst:23 -msgid "This demo we'll use the following tiles taken from Kenney's \"Abstract Platformer\" art pack. You can find the complete set `here `_ but for this demo we'll stick to this small set." +msgid "This demo will use the following tiles taken from Kenney's \"Abstract Platformer\" art pack. You can find the complete set `here `_ but for this demo we'll stick to this small set." msgstr "" #: ../../docs/tutorials/2d/using_tilemaps.rst:29 diff --git a/sphinx/templates/tutorials/3d/3d_rendering_limitations.pot b/sphinx/templates/tutorials/3d/3d_rendering_limitations.pot index b0d8a9ba1d..e38d4dc9a0 100644 --- a/sphinx/templates/tutorials/3d/3d_rendering_limitations.pot +++ b/sphinx/templates/tutorials/3d/3d_rendering_limitations.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/baked_lightmaps.pot b/sphinx/templates/tutorials/3d/baked_lightmaps.pot index 9c83a3a40e..12496a9baa 100644 --- a/sphinx/templates/tutorials/3d/baked_lightmaps.pot +++ b/sphinx/templates/tutorials/3d/baked_lightmaps.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/csg_tools.pot b/sphinx/templates/tutorials/3d/csg_tools.pot index 295911f872..2cc2667223 100644 --- a/sphinx/templates/tutorials/3d/csg_tools.pot +++ b/sphinx/templates/tutorials/3d/csg_tools.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/environment_and_post_processing.pot b/sphinx/templates/tutorials/3d/environment_and_post_processing.pot index 7bce5cfe80..b20bd166e2 100644 --- a/sphinx/templates/tutorials/3d/environment_and_post_processing.pot +++ b/sphinx/templates/tutorials/3d/environment_and_post_processing.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/index.pot b/sphinx/templates/tutorials/3d/fps_tutorial/index.pot index fad678c867..0d579a19ac 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/index.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_five.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_five.pot index 098235cba4..90576a72a0 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_five.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_five.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_four.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_four.pot index 5cb81f8581..3c2c1c3769 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_four.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_four.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_one.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_one.pot index fe7164b53b..f5fa3eeed3 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_one.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_one.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_six.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_six.pot index a9f3d28e1c..797a79b0d7 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_six.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_six.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_three.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_three.pot index 36cb46b248..6f2a8de0da 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_three.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_three.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/fps_tutorial/part_two.pot b/sphinx/templates/tutorials/3d/fps_tutorial/part_two.pot index a51c4df4bf..17bf68a81b 100644 --- a/sphinx/templates/tutorials/3d/fps_tutorial/part_two.pot +++ b/sphinx/templates/tutorials/3d/fps_tutorial/part_two.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/gi_probes.pot b/sphinx/templates/tutorials/3d/gi_probes.pot index 5f32739a83..3f73500dbd 100644 --- a/sphinx/templates/tutorials/3d/gi_probes.pot +++ b/sphinx/templates/tutorials/3d/gi_probes.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/high_dynamic_range.pot b/sphinx/templates/tutorials/3d/high_dynamic_range.pot index c15c4fa51b..3818df3584 100644 --- a/sphinx/templates/tutorials/3d/high_dynamic_range.pot +++ b/sphinx/templates/tutorials/3d/high_dynamic_range.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/index.pot b/sphinx/templates/tutorials/3d/index.pot index c971957dae..9a04e76b93 100644 --- a/sphinx/templates/tutorials/3d/index.pot +++ b/sphinx/templates/tutorials/3d/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/introduction_to_3d.pot b/sphinx/templates/tutorials/3d/introduction_to_3d.pot index 2dccab16d2..52e9661172 100644 --- a/sphinx/templates/tutorials/3d/introduction_to_3d.pot +++ b/sphinx/templates/tutorials/3d/introduction_to_3d.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/lights_and_shadows.pot b/sphinx/templates/tutorials/3d/lights_and_shadows.pot index eed1db436b..7976c8b494 100644 --- a/sphinx/templates/tutorials/3d/lights_and_shadows.pot +++ b/sphinx/templates/tutorials/3d/lights_and_shadows.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -113,7 +113,7 @@ msgid "**Contact**: Performs a short screen-space raycast to reduce the gap gene msgstr "" #: ../../docs/tutorials/3d/lights_and_shadows.rst:55 -msgid "**Reverse Cull Faces**: Some scenes work better when shadow mapping is rendered with face-culling inverted." +msgid "**Reverse Cull Face**: Some scenes work better when shadow mapping is rendered with face-culling inverted." msgstr "" #: ../../docs/tutorials/3d/lights_and_shadows.rst:57 @@ -121,209 +121,229 @@ msgid "Below is an image of what tweaking bias looks like. Default values work f msgstr "" #: ../../docs/tutorials/3d/lights_and_shadows.rst:62 -msgid "Finally, if gaps can't be solved, the **Contact** option can help:" +msgid "Finally, if gaps can't be solved, the **Contact** option can help (at a performance cost):" msgstr "" #: ../../docs/tutorials/3d/lights_and_shadows.rst:66 -msgid "Any sort of bias issues can always be fixed by increasing the shadow map resolution, although that may lead to decreased performance on low-end hardware." +msgid "Any sort of bias issues can always be fixed by increasing the shadow map resolution, although that may lead to decreased performance." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:70 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:71 +msgid "If shadow biasing is a problem in your scene, the following settings are a good starting point:" +msgstr "" + +#: ../../docs/tutorials/3d/lights_and_shadows.rst:73 +msgid "Enable **Reverse Cull Face**. This reduces shadow peter-panning significantly and prevents lights from exhibiting shadow acne at grazing angles. The main downside is that it may cause lighting to leak in some corners. The other downside is that materials that have their cull mode set to **Disabled** or MeshInstances with Cast Shadow set to **Double-Sided** may exhibit shadow acne." +msgstr "" + +#: ../../docs/tutorials/3d/lights_and_shadows.rst:79 +msgid "Set **Bias** to ``-0.01``. The bias should be a negative value when **Reverse Cull Face** is enabled, but it should be a positive value when it's disabled." +msgstr "" + +#: ../../docs/tutorials/3d/lights_and_shadows.rst:81 +msgid "For DirectionalLight, set the directional shadow **Normal Bias** to ``0.0`` and **Bias Split Scale** to ``0.0``. Depending on your scene, you may also want to further decrease **Bias** to a value between ``-0.05`` and ``-0.1``." +msgstr "" + +#: ../../docs/tutorials/3d/lights_and_shadows.rst:85 +msgid "Following the above tips should make it possible to avoid gaps in shadows without resorting to contact shadows (which have many issues of their own). If shadow acne is still visible after performing the above tweaks, try subdividing your meshes further in your 3D modeling software." +msgstr "" + +#: ../../docs/tutorials/3d/lights_and_shadows.rst:91 msgid "Directional light" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:72 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:93 msgid "This is the most common type of light and represents a light source very far away (such as the sun). It is also the cheapest light to compute and should be used whenever possible (although it's not the cheapest shadow-map to compute, but more on that later)." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:76 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:97 msgid "Directional light models an infinite number of parallel light rays covering the whole scene. The directional light node is represented by a big arrow which indicates the direction of the light rays. However, the position of the node does not affect the lighting at all and can be anywhere." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:83 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:104 msgid "Every face whose front-side is hit by the light rays is lit, while the others stay dark. Most light types have specific parameters, but directional lights are pretty simple in nature, so they don't." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:87 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:108 msgid "Directional shadow mapping" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:89 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:110 msgid "To compute shadow maps, the scene is rendered (only depth) from an orthogonal point of view that covers the whole scene (or up to the max distance). There is, however, a problem with this approach because objects closer to the camera receive blocky shadows." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:95 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:116 msgid "To fix this, a technique named \"Parallel Split Shadow Maps\" (or PSSM) is used. This splits the view frustum in 2 or 4 areas. Each area gets its own shadow map. This allows small areas close to the viewer to have the same shadow resolution as a huge, far-away area." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:100 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:121 msgid "With this, shadows become more detailed:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:104 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:125 msgid "To control PSSM, a number of parameters are exposed:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:108 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:129 msgid "Each split distance is controlled relative to the camera far (or shadow **Max Distance** if greater than zero), so *0.0* is the eye position and *1.0* is where the shadow ends at a distance. Splits are in-between. Default values generally work well, but tweaking the first split a bit is common to give more detail to close objects (like a character in a third person game)." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:114 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:135 msgid "Always make sure to set a shadow *Max Distance* according to what the scene needs. A lower maximum distance will result in better-looking shadows." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:117 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:138 msgid "Sometimes, the transition between a split and the next can look bad. To fix this, the **\"Blend Splits\"** option can be turned on, which sacrifices detail in exchange for smoother transitions:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:123 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:144 msgid "The **\"Normal Bias\"** parameter can be used to fix special cases of self shadowing when objects are perpendicular to the light. The only downside is that it makes the shadow a bit thinner." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:129 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:150 msgid "The **\"Bias Split Scale\"** parameter can control extra bias for the splits that are far away. If self shadowing occurs only on the splits far away, this value can fix them." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:132 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:153 msgid "Finally, the **\"Depth Range\"** has two settings:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:134 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:155 msgid "**Stable**: Keeps the shadow stable while the camera moves, and the blocks that appear in the outline when close to the shadow edges remain in-place. This is the default and generally desired, but it reduces the effective shadow resolution." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:135 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:156 msgid "**Optimized**: Tries to achieve the maximum resolution available at any given time. This may result in a \"moving saw\" effect on shadow edges, but at the same time the shadow looks more detailed (so this effect may be subtle enough to be forgiven)." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:137 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:158 msgid "Just experiment which setting works better for your scene." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:139 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:160 msgid "Shadowmap size for directional lights can be changed in Project Settings -> Rendering -> Quality:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:143 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:164 msgid "Increasing it can solve bias problems, but decrease performance. Shadow mapping is an art of tweaking." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:146 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:167 msgid "Omni light" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:148 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:169 msgid "Omni light is a point source that emits light spherically in all directions up to a given radius." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:153 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:174 msgid "In real life, light attenuation is an inverse function, which means omni lights don't have a radius. This is a problem because it means computing several omni lights would become demanding." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:156 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:177 msgid "To solve this, a *Range* is introduced together with an attenuation function." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:160 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:181 msgid "These two parameters allow tweaking how this works visually in order to find aesthetically pleasing results." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:166 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:187 msgid "Omni shadow mapping" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:168 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:189 msgid "Omni light shadow mapping is relatively straightforward. The main issue that needs to be considered is the algorithm used to render it." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:171 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:192 msgid "Omni Shadows can be rendered as either **\"Dual Paraboloid\" or \"Cube Mapped\"**. The former renders quickly, but can cause deformations, while the later is more correct, but costlier." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:177 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:198 msgid "If the objects being rendered are mostly irregular, Dual Paraboloid is usually enough. In any case, as these shadows are cached in a shadow atlas (more on that at the end), it may not make a difference in performance for most scenes." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:182 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:203 msgid "Spot light" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:184 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:205 msgid "Spot lights are similar to omni lights, except they emit light only into a cone (or \"cutoff\"). They are useful to simulate flashlights, car lights, reflectors, spots, etc. This type of light is also attenuated towards the opposite direction it points to." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:191 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:212 msgid "Spot lights share the same **Range** and **Attenuation** as **OmniLight**, and add two extra parameters:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:193 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:214 msgid "**Angle**: The aperture angle of the light" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:194 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:215 msgid "**Angle Attenuation**: The cone attenuation, which helps soften the cone borders." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:197 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:218 msgid "Spot shadow mapping" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:199 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:220 msgid "Spots don't need any parameters for shadow mapping. Keep in mind that, at more than 89 degrees of aperture, shadows stop functioning for spots, and you should consider using an Omni light instead." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:203 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:224 msgid "Shadow atlas" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:205 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:226 msgid "Unlike Directional lights, which have their own shadow texture, Omni and Spot lights are assigned to slots of a shadow atlas. This atlas can be configured in Project Settings -> Rendering -> Quality -> Shadow Atlas." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:210 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:231 msgid "The resolution applies to the whole Shadow Atlas. This atlas is divided into four quadrants:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:214 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:235 msgid "Each quadrant can be subdivided to allocate any number of shadow maps; the following is the default subdivision:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:218 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:239 msgid "The allocation logic is simple. The biggest shadow map size (when no subdivision is used) represents a light the size of the screen (or bigger). Subdivisions (smaller maps) represent shadows for lights that are further away from view and proportionally smaller." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:223 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:244 msgid "Every frame, the following procedure is performed for all lights:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:225 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:246 msgid "Check if the light is on a slot of the right size. If not, re-render it and move it to a larger/smaller slot." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:226 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:247 msgid "Check if any object affecting the shadow map has changed. If it did, re-render the light." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:227 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:248 msgid "If neither of the above has happened, nothing is done, and the shadow is left untouched." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:229 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:250 msgid "If the slots in a quadrant are full, lights are pushed back to smaller slots, depending on size and distance." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:231 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:252 msgid "This allocation strategy works for most games, but you may want to use a separate one in some cases (for example, a top-down game where all lights are around the same size and quadrants may all have the same subdivision)." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:235 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:256 msgid "Shadow filter quality" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:237 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:258 msgid "The filter quality of shadows can be tweaked. This can be found in Project Settings -> Rendering -> Quality -> Shadows. Godot supports no filter, PCF5 and PCF13." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:243 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:264 msgid "It affects the blockyness of the shadow outline:" msgstr "" diff --git a/sphinx/templates/tutorials/3d/portals/advanced_room_and_portal_usage.pot b/sphinx/templates/tutorials/3d/portals/advanced_room_and_portal_usage.pot new file mode 100644 index 0000000000..b2d28f4596 --- /dev/null +++ b/sphinx/templates/tutorials/3d/portals/advanced_room_and_portal_usage.pot @@ -0,0 +1,213 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:2 +msgid "Advanced Room and Portal usage" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:5 +msgid "Gameplay callbacks" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:7 +msgid "Although occlusion culling greatly reduces the number of objects that need to be rendered, there are other costs to maintaining objects in a game besides the final rendering. For instance, in Godot, animated objects will still be animated whether they appear on screen or not. This can take up a lot of processing power, especially for objects that use software skinning (where skinning is calculated on the CPU)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:9 +msgid "Fear not, rooms and portals can solve these problems, and more." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:11 +msgid "By building our system of rooms for our game level, not only do we have the information needed for occlusion culling, we also have handily created the information required to know which rooms are in the local \"gameplay area\" of the player (or camera). If you think about it, in a lot of cases, there is no need to do a lot of simulation on objects that have nothing to do with gameplay." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:13 +msgid "The gameplay area is not confined to just the objects you can see in front of you. AI monsters behind you still need to attack you when your back is turned! In Godot the gameplay area is defined as the *potentially visible set* (PVS) of rooms, from the room you are currently within. That is, if there is any part of a room that can possibly be viewed from any part of the room you are in (even from a corner), it is considered within the PVS, and hence the gameplay area." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:15 +msgid "This works because if a monster is in an area that is completely out of view for yourself or the monster, you are less likely to care what it is doing." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:18 +msgid "How does a monster know whether it is within the gameplay area?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:20 +msgid "This problem is solved because the portal system contains a subsystem called the **Gameplay Monitor** that can be turned on and off from the :ref:`RoomManager`. When switched on, any roaming objects that move inside or outside the gameplay area (whether by moving themselves, or the camera moving) will receive callbacks to let them know of this change." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:22 +msgid "You can choose to either receive these callbacks as ``signals``, or as ``notifications``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:24 +msgid "Notifications can be handled in GDScript or other scripting languages:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:35 +msgid "Signals are sent just as any other signal. They can be attached to functions using the editor inspector. The signals are called ``gameplay_entered`` and ``gameplay_exited``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:37 +msgid "In fact, you don't just receive these callbacks for ``ROAMING`` objects. In addition Rooms and RoomGroups (which can be used to form groups of rooms) can also receive callbacks. For example, you can use this to trigger AI behaviour when the player reaches certain points in a level." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:40 +msgid "VisbilityNotifiers / VisibilityEnablers" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:42 +msgid "Gameplay callbacks have one more useful function. By default in Godot, animation and physics are still processed regardless of whether an object is within view. This can sap performance, especially when using software skinning." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:44 +msgid "The engine's solution to this problem is the :ref:`VisibilityNotifier` node, and its slightly easier to use variation, the :ref:`VisibilityEnabler` node. VisibilityEnabler can be used to switch off animation and sleep physics when an object is outside the view frustum. You do this by simply placing a VisibilityEnabler node in your subscene (for e.g. a monster). It will do the rest. Consult the :ref:`VisibilityEnabler` documentation for full details." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:48 +msgid "What if the VisibilityEnabler could turn off objects when they were occlusion culled? Well it turns out VisibilityEnabler can. All you have to do is enable the **Gameplay Monitor** in the RoomManager and the rest happens automatically." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:53 +msgid "RoomGroups" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:55 +msgid "A :ref:`RoomGroup` is a special node which allows you to deal with a group of rooms at once, instead of having write code for them individually. This is especially useful in conjunction with gameplay callbacks. The most important use for RoomGroups is to delineate between \"inside\" and \"outside\" areas." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:59 +msgid "For instance, when outside you may wish to use a :ref:`DirectionalLight` to represent the sun. When the outside RoomGroup receives an ``enter gameplay`` callback, you can turn the light on, and you can turn it off when the RoomGroup exits gameplay. With the light off, performance will increase as there is no need to render it indoors." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:61 +msgid "This is an example of a simple RoomGroup script to turn on and off a DirectionalLight. Note that you can also use signals for callbacks (the choice is up to you):" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:65 +msgid "You can apply the same technique for switching on and off weather effects, skyboxes and much more." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:70 +msgid "Internal Rooms" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:72 +msgid "There is one more trick that RoomGroups have up their sleeve. A very common desire is to have a game level with a mixed outdoor and indoor environment. We have already mentioned that rooms can be used to represent both rooms in a building, and areas of landscape, such as a canyon." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:75 +msgid "What happens if you wish to have a house in a terrain 'room'?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:77 +msgid "With the functionality described so far you *can* do it - you would need to place portals around the exterior of the house though, forming needless rooms above the house. This has been done in many games. But what if there was a simpler way?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:79 +msgid "It turns out there is a simpler way of handling this scenario. Godot supports *rooms **within** rooms* (we will call them **\"internal rooms\"**). That is, you can place a house within a terrain room, or even a building, or set of buildings, and even have exit portals in different terrain rooms!" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:81 +msgid "To create internal rooms, you don't need to place a room within another room in the scene tree - in fact you will get a warning if you try this. Instead, create them as regular rooms. The internal rooms should be grouped together with a RoomGroup as parent. If you look in the inspector for the RoomGroup, there is a **Room Group Priority** which defaults to ``0``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:83 +msgid "If you want a room or set of rooms to be internal, set the priority to a higher value than the outer (enclosing) room, using the RoomGroup." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:85 +msgid "The system uses the priority setting to give priority to the internal room when deciding which room a camera or object is within. Higher priority *always* wins. Everything else works in a mostly similar way." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:87 +msgid "The only differences:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:89 +msgid "Portals between internal rooms and outer rooms should always *be placed in the inner (internal) room*." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:90 +msgid "Portals of internal rooms are not considered as part of the bound of outer rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:91 +msgid "``STATIC`` and ``DYNAMIC`` objects from outer rooms will not sprawl into internal rooms. If you want objects to cross these portals, place them in the internal room. This is to prevent large objects like terrain sections sprawling into entire buildings, and rendering when not necessary." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:94 +msgid "Internal room example" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:96 +msgid "The tent is a simple room inside a terrain room (which contains the ground, the trees etc)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:100 +msgid "To use internal rooms for buildings, it is usually a good idea to split the *interior* mesh of the building from the *exterior*. The exterior can be placed in the outer room (so it can be seen from outside, but not from the inside), and the interior should be placed in the interior room (so it only visible inside, or through the portal)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:104 +msgid "This is perfect for improving performance in open world games. Often your buildings can be scenes (including the rooms and portals) that can be reused. When viewed from the outside, interiors will mostly be culled, and when viewing from the inside other buildings and most of the outside will be culled. The same goes for other players and objects that are inside and outside the buildings." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:106 +msgid "*Scene is 'Diorama Eco scene' by Odo, with slight changes for illustration purposes.* `CC Attribution `_" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:109 +msgid "Internal room scenes" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:111 +msgid "Let us look in detail at another practical example for an open world. We want to place houses (as internal rooms) on an island, but have each house as a self-contained scene containing both the interior *and* the external mesh of the house." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:115 +msgid "We have created a Room node (which will become the internal room) into which we have placed the interior meshes. We have also created a Portal with no links (so autolinking will be used). The exterior mesh is *not* within the room. It will be autoplaced, and we are intending for it to be placed within the outer room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:117 +msgid "However there is a problem. The naive autoplace algorithm will look at the center of the exterior mesh, and attempt to place it *within* the internal room. We want to avoid this somehow, as the idea of the exterior mesh is to have something rendered from the outside, so it must be in the outer room for everything to work." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:119 +msgid "To get around this problem, there is a special setting to enable you to express a preference for autoplacing in an outer room. Each object has an **Autoplace Priority** setting. When set to ``0``, there is no preference (the object will be placed in the highest priority room)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:121 +msgid "However, if we set this autoplace priority to ``-1`` for example, the autoplace will always choose a ``-1`` priority room (if one is present at that location). So if we set the outer room priority to ``-1``, it will always place our exterior into our \"outside\" room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:125 +msgid "This gives us a helpful extra bit of control for these kinds of situations, and makes the entire system much more flexible." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:127 +msgid "As the default autoplace priority is ``0``, you can't effectively force objects into RoomGroups with priority ``0``. However there are plenty of priority values available so this should not be a problem in practice." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:129 +msgid "The final scene looks something like this, with houses instanced wherever you want them on a giant outer room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:133 +msgid "The house exteriors will be placed in the outer room, and therefore can always be seen when looking from the outside. The interiors will only be rendered when a view into the entry portals is visible." +msgstr "" diff --git a/sphinx/templates/tutorials/3d/portals/editing_rooms_and_portals.pot b/sphinx/templates/tutorials/3d/portals/editing_rooms_and_portals.pot new file mode 100644 index 0000000000..9a655c24fc --- /dev/null +++ b/sphinx/templates/tutorials/3d/portals/editing_rooms_and_portals.pot @@ -0,0 +1,258 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:2 +msgid "Editing Rooms and Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:5 +msgid "Example SceneTree" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:7 +msgid "Putting all the ideas together, here is an example scene tree:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:11 +msgid "We have used a :ref:`RoomGroup` to denote an outside area." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:12 +msgid "The :ref:`MeshInstance`\\ s inside the :ref:`Room`\\ s are either ``STATIC`` or ``DYNAMIC``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:13 +msgid "We have created a :ref:`Spatial` (I decided to call it 'Freeform', but you could use any name) under which to place ``STATIC`` and ``DYNAMIC`` objects that will be autoplaced in rooms (Freeform is inside the ``roomlist``, but *not* inside a room.)" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:15 +msgid "The player and the monsters are on branches *OUTSIDE* the ``roomlist``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:16 +msgid "The player and monster meshes have portal mode ``ROAMING`` so they can be in any room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:17 +msgid "The camera is outside the ``roomlist``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:22 +msgid "Creating room systems in Blender (or other modeling tools)" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:24 +msgid "Although you can create your room system entirely within the editor, you can also build rooms and portals within your modeling tool. There is one small snag - modeling tools such as Blender have no knowledge of Room, RoomGroup and Portal nodes. In order to work around this we use a series of naming conventions. The first time Godot encounters these specially named nodes, it will convert them into Rooms, RoomGroups and Portals." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:27 +msgid "Postfix convention" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:29 +msgid "``-room`` becomes a :ref:`Room`." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:30 +msgid "``-roomgroup`` becomes a :ref:`RoomGroup`." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:31 +msgid "``-portal`` becomes a :ref:`Portal`." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:32 +msgid "``-bound`` becomes a manual bound." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:34 +msgid "Rooms and RoomGroups should be created as Empties within Blender. Any mesh children of the ``-room`` Empty will thus be placed in the Room during conversion in Godot." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:36 +msgid "For example:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:38 +msgid "``kitchen-room`` - create a Room called \"kitchen\"." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:39 +msgid "``outside-roomgroup`` - create a RoomGroup called \"outside\"." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:40 +msgid "``kitchen-portal`` - create a Portal leading to the \"kitchen\" Room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:43 +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:119 +msgid "Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:45 +msgid "Portals are different from Rooms. In Portals, we need to specify the geometry of the Portal in our modelling tool, in addition to just the name. To do this your \"portal-to-be\" should be created as a Mesh." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:47 +msgid "Portal meshes have some restrictions to work properly. They must be convex, and the polygon points should be in the same plane. The accuracy to the plane does not have to be exact, as Godot will automatically average the direction of the portal plane. Once converted to a :ref:`Portal` node, the snapping to the portal plane is enforced, and the vertices are specified (and editable) as 2D coordinates in the inspector, rather than 3D points." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:49 +msgid "The portal's naming is quite important. You can either name the portal ``-portal`` which will attempt to autolink the Portal in Godot, or you can use the name of the Room you wish to link the Portal to as a prefix." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:52 +msgid "Wildcard" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:54 +msgid "In most cases, this can be done using a name such as ``kitchen-portal``. However, there is one problem. Blender and Godot do not deal well when you have multiple objects with the same name. What happens when we want more than one Portal to lead to the kitchen?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:56 +msgid "The workaround is the use of a *wildcard* character, ``*``. When Godot reads the wildcard, it will ignore anything placed after it in the name." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:58 +msgid "This means we can use the following portal names:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:60 +msgid "``kitchen*1-portal`` - creates a Portal leading to the \"kitchen\"." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:61 +msgid "``kitchen*2-portal`` - also creates a Portal leading to the \"kitchen\"." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:62 +msgid "``kitchen*anything_you_want_here-portal`` - also works." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:64 +msgid "Wildcards work on all of the nodes which use these naming conventions." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:67 +msgid "Manual bounds" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:69 +msgid "Manual bounds are a way of explicitly setting the convex hull for a room, and are used if they are present as children of a room in the scene tree. Aside from the postfix, the naming is unimportant. They should be meshes (i.e. MeshInstance in Godot). Bear in mind they will be converted to convex hulls during the conversion process, so they don't have to be perfect." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:71 +msgid "Once used during conversion, they will be converted to the ``IGNORE`` **Portal Mode** and won't be shown. You can alternatively use **Generate Points** within the editor to convert these to a set of points stored in the room, and delete the original ``-bound`` MeshInstance." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:74 +msgid "Portal point editing" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:76 +msgid "Portals are defined by a combination of the transform of the portal node, and by a set of points which form the corners." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:78 +msgid "The default portal has 4 corners as shown in the inspector:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:82 +msgid "You can edit these points in the gizmo or inspector to make a better match to the opening in your game level. It's generally better to keep the number of points as low as possible for the efficiency of the system. For example, it's better to risk rendering a little too much than to spend the time culling objects at 20 different edges." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:87 +msgid "Room point editing" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:89 +msgid "You also have the option to manually edit the points used to define the convex hull of a room. These points are not present by default. You would typically create them by pressing the **Generate Points** button in the editor toolbar when a room is selected. This will transfer the auto bound from the geometry (or manual ``-bound`` mesh) into the inspector. Once there are points in the inspector, they will be used and override any other method. So if you wish to revert your manual editing, delete all the room's points." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:93 +msgid "Manually editing points can be useful in some situations, especially where the auto-bound doesn't *quite* get the right result you want. It is usually a good idea to use a lot of **Simplification** in the inspector for the Room before generating the points. Be aware though that by default, the **Simplification** value will be inherited from the RoomManager." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:96 +msgid "RoomManager" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:99 +msgid "Show Debug" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:101 +msgid "This can be used to control the amount of logging, especially the room conversion logs. Debug will always be set to ``false`` on exported projects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:104 +msgid "Debug Sprawl" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:106 +msgid "This mode will only display meshes that are sprawling through portals from the current camera room. Large statics that cross portals are usually the ones you want to sprawl. Typical examples might be terrain mesh areas, or large floor or ceiling meshes. You usually don't want things like door frames to sprawl to the adjacent room - that is what fine tuning the **Portal Margin** is for." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:109 +msgid "Merge Meshes" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:111 +msgid "To keep drawcalls to a minimum, the system offers the option to automatically merge similar ``STATIC`` meshes within a room (also known as *static batching*). This can increase performance in many cases. The culling accuracy is reduced, but as a room is a fairly logical unit for culling, this trade off usually works in your favor." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:114 +msgid "Plane Simplification" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:116 +msgid "In some cases, the convex hulls automatically generated for rooms may contain a very large number of planes, particularly if you use curved surfaces. This is not ideal because it slows down the system. This option can optionally simplify hulls. The degree of simplification can be selected by the user, between ``0`` (no simplification) and ``1`` (maximum simplification). You can also override this value in individual rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:122 +msgid "Portal Active" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:124 +msgid "Portals can be turned on and off at runtime. This is especially useful if you have doors that can open and close." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:127 +msgid "Two Way" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:129 +msgid "Portals can either be two-way or one-way. The default two-way portals are quicker to set up in most circumstances, but one-way portals can be useful in some cases. For example, you can use one-way portals to create windows that can be seen out of, but not seen into. This can help performance when viewing buildings from outdoors." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:132 +msgid "Particle Systems" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:134 +msgid "Be aware that when placing ``STATIC`` particle systems, the AABB on conversion may have zero size. This means the particle system may be unexpectedly culled early. To prevent this, either set the particle system ``portal mode`` to ``DYNAMIC``, or alternatively, add an **Extra Cull Margin** to the particle system in the Geometry Inspector." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:137 +msgid "Multimeshes" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:139 +msgid "Note that multimeshes will be culled as a group, rather than individually. You should therefore attempt to keep them localised to the same area wherever possible." +msgstr "" diff --git a/sphinx/templates/tutorials/3d/portals/first_steps_with_rooms_and_portals.pot b/sphinx/templates/tutorials/3d/portals/first_steps_with_rooms_and_portals.pot new file mode 100644 index 0000000000..5cec8d90a2 --- /dev/null +++ b/sphinx/templates/tutorials/3d/portals/first_steps_with_rooms_and_portals.pot @@ -0,0 +1,217 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:2 +msgid "First steps with Rooms and Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:5 +msgid "The RoomManager" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:7 +msgid "Anytime you want to use the portal system, you need to include a special node in your scene tree, called the :ref:`RoomManager`. The RoomManager is responsible for the runtime maintenance of the system, especially converting the objects in your rooms into a *room graph* which is used at runtime to perform occlusion culling and other tasks." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:10 +msgid "Room Conversion" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:12 +msgid "This conversion must take place every time you want to activate the system. It does not store the *room graph* in your project (for flexibility and to save memory). You can either trigger it by pressing the **Convert Rooms** button in the editor toolbar (which also has a keyboard shortcut), or you can call the ``rooms_convert()`` method in the RoomManager. This latter method will be what you use in-game. Note that for safety, best practice is to call ``rooms_clear()`` before unloading or changing levels." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:16 +msgid "If you convert the level while the editor is running, the portal culling system will take over from the normal Godot frustum culling. This may affect some editor features. For this reason, you can turn the portal culling on and off, using either the **View Portal Culling** toggle in the **View** menu on the editor toolbar (which also has a keyboard shortcut), or via the **Active** setting in the RoomManager node." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:18 +msgid "To use the RoomManager, you have to tell it where the rooms are in your scene tree, or rather where the RoomList node is. This RoomList is the parent of your rooms - see below. If the RoomList is not set, conversion will fail, and you will see a warning dialog box." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:23 +msgid "The RoomList" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:25 +msgid "Before we create any rooms, we must first create a node to be the parent of all the static objects, rooms, roomgroups and so on in our level. This node is referred to as the the ``RoomList``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:29 +msgid "The roomlist is **not** a special node type, it can just be a regular Spatial." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:31 +msgid "You will need to assign the roomlist node in the RoomManager, so the RoomManager knows where to find the rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:33 +msgid "Why do we use a specific branch of the scene tree, and not use the scene root? The answer is that there are many internal details of the system which are easier to manage if the rooms are placed on their own branch." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:35 +msgid "Often, you will end up completely replacing the roomlist branch at runtime in your game as you load and unload levels." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:38 +msgid "Rooms" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:41 +msgid "What is a room?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:43 +msgid ":ref:`Room`\\ s are a way of spatially partitioning your level into areas that make sense in terms of the level design. Rooms often quite literally *are* rooms (for instance in a building). Ultimately though, as far as the engine is concerned, a room respresents a **non-overlapping** convex volume, in which you would typically place most of your objects that fall within that area." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:45 +msgid "A room doesn't need to correspond to a literal room. It could for example also be a canyon in an outdoor area, or a smaller part of a concave room. With a little imagination, you can use the system in almost any scenario." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:48 +msgid "Why convex?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:50 +msgid "The reason why rooms are defined as convex volumes (or *convex hulls* as they are known), is that mathematically, it is very easy to determine whether a point is within a convex hull. A simple plane check will tell you the distance of a point from a plane. If a point is behind all the planes bounding the convex hull, then by definition, it is inside the room. This makes all kinds of things easier in the internals of the system, such as checking which room a camera is within." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:52 +msgid "*A convex hull. The hull is defined as a series of planes facing outward. If a point is behind all the planes, it is within the hull.*" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:57 +msgid "Why non-overlapping?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:59 +msgid "If two rooms overlap, and a camera or player is in this overlapping zone, then there is no way to tell which room the object should be in (and hence render from), or be rendered in. This requirement for non-overlapping rooms does have implications for level design." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:61 +msgid "If you accidentally create overlapping rooms, the editor will flag a warning when you convert the rooms, and indicate any overlapping zones in red." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:65 +msgid "The system does attempt to cope with overlapping rooms as best as possible by making the current room *\"sticky\"*. Each object remembers which room it was in last frame, and stays within it as long as it does not move outside the convex hull room bound. This can result in some hysteresis in these overlapping zones." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:67 +msgid "There is one exception however for :ref:`internal rooms`. You do not have to worry about these to start with." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:70 +msgid "How do I create a room?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:72 +msgid "A :ref:`Room` is a node type that can be added to the scene tree like any other. You can place objects within the room by making them children and grand-children of the Room node." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:75 +msgid "How do I define the shape and position of my room convex hull?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:77 +msgid "Because defining the room bound is the most important aspect of the system, there are THREE methods available to define the shape of a room in Godot:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:79 +msgid "Use the geometry of the objects contained within the room to automatically create an approximate bound." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:80 +msgid "By manually editing the points that define the convex hull, in the room inspector, or dragging the points using the editor gizmo (see :ref:`doc_room_point_editing`)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:81 +msgid "Provide a manual bound. This is a MeshInstance in the room that has geometry in the shape of the desired bound, with a name with a postfix ``-bound``. This is something you might choose to do if you create your levels in Blender or similar (see :ref:`doc_rooms_and_portals_blender`)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:83 +msgid "While the first option can be all that is required, particularly with simple rooms, or for pre-production, the power of the manual bounds gives you ultimate control (at the expense of a small amount of editing). You can also combine the two approaches, perhaps using automatic bounds for most rooms but manually editing problem areas." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:85 +msgid "The automatic method is used whenever a manual bound is not supplied." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:87 +msgid "*A simple pair of rooms. The portal margin is shown with translucent red, and the room hulls are shown with green wireframe.*" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:92 +msgid "Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:94 +msgid "If you create some rooms, place objects within them, then convert the level in the editor, you will see the objects in the rooms appearing and showing as you move between rooms. There is one problem however! Although you can see the objects within the room that the camera is in, you can't see to any neighbouring rooms! For that we need portals." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:96 +msgid ":ref:`Portal`\\ s are special convex polygons. You position over the openings between rooms, in order to allow the system to see between them. You can create a portal node directly in the editor. The default portal has 4 points and behaves much like a ``plane`` :ref:`MeshInstance`. You can add or remove points using the inspector. A portal will require at least 3 points to work - this is because it needs to form a polygon rather than a point or line." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:98 +msgid "To save editing effort, **only one Portal is required between each pair of Rooms**. You *do not need* to (and indeed should not) create two Portals that overlap in opposite directions. Portals default to being two-way (but you can make them one-way in the Portal inspector)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:100 +msgid "You should therefore place a portal in only one of each pair of neighbouring rooms - this is the portal's *\"source room\"*. Generally it doesn't matter which you choose as the source room. The portal normal (the arrow in the gizmo) should face *outward* from the source room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:104 +msgid "Do not be confused by the arrow. Although the arrow shows which direction the portal faces, most portals will be *two-way*, and can be seen through from both directions. The arrow is more important for ensuring that the portal links to the correct neighbouring room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:107 +msgid "Portal linking" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:109 +msgid "There are two options for dealing with specifying which room the portal should link to." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:111 +msgid "Leave the **Linked Room** in the inspector blank. The system will attempt to *autolink* the portal to the nearest neighbour room during conversion. This works fine in most cases." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:112 +msgid "You can explicitly specify the room by setting the **Linked Room** in the inspector." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:114 +msgid "Portals are defined as a set of 2D points. This ensures that the polygon formed is in a single plane. The transform determines the portal orientation. The points must also form a *convex* polygon. This is enforced by validating the points you specify, ignoring any that do not form a convex shape. This makes editing easier while making it difficult to break the system." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:117 +msgid "Trying it out" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:119 +msgid "By now you should be able to create a couple of rooms, add some nodes such as MeshInstances within the rooms, and add a portal between the rooms. Try converting the rooms in the editor, and see if you can now see the objects in neighbouring rooms, through the portal." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:123 +msgid "You have now mastered the basic principles of the system." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:125 +msgid "The next step is to look at the different types of objects that can be managed by the system." +msgstr "" diff --git a/sphinx/templates/tutorials/3d/portals/index.pot b/sphinx/templates/tutorials/3d/portals/index.pot new file mode 100644 index 0000000000..38e8914fab --- /dev/null +++ b/sphinx/templates/tutorials/3d/portals/index.pot @@ -0,0 +1,21 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/3d/portals/index.rst:4 +msgid "Rooms and Portals" +msgstr "" diff --git a/sphinx/templates/tutorials/3d/portals/introduction_to_rooms_and_portals.pot b/sphinx/templates/tutorials/3d/portals/introduction_to_rooms_and_portals.pot new file mode 100644 index 0000000000..7e2f13096c --- /dev/null +++ b/sphinx/templates/tutorials/3d/portals/introduction_to_rooms_and_portals.pot @@ -0,0 +1,85 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:4 +msgid "Introduction to Rooms and Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:6 +msgid "The rooms and portals system is an optional component of Godot that allows you to partition your 3D game levels into a series of :ref:`Room` s (*aka cells*), and :ref:`Portal` s. Portals are openings between the rooms that the :ref:`Camera` (and lights) can see through." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:8 +msgid "This allows several features:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:10 +msgid "**Portal occlusion culling**, which can increase performance by reducing the number of objects that are drawn, both to cameras and to shadow maps." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:12 +msgid "**Gameplay callbacks**, which allow turning off activity outside the gameplay area - AI, physics, animation, processing etc." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:14 +msgid "The trade off for these features is that we have to manually partition our level into rooms, and add portals between them." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:16 +msgid "Godot portals should not be confused with those in the `game of the same name `__. They do not warp space, they simply represent a window that the camera (or lights) can see through." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:19 +msgid "Minimizing manual labour" +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:21 +msgid "Although the effort involved in creating rooms for a large level may seem daunting, there are several factors which can make this much easier:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:23 +msgid "If you are \"kit bashing\" and reusing rooms or areas already, this is an ideal way to save effort. Your level tiles can be rooms, with portals already placed." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:24 +msgid "If you are creating procedural levels, you can create rooms and portals as part of the procedural generation algorithm you're writing." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:25 +msgid "Finally, if you are manually creating freeform levels, bear in mind there are absolutely no rules as to how far you go with portalling. Even if you separate a large game level into only two rooms, with a single portal between them, this can still result in relatively large performance gains." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:27 +msgid "The performance benefits (especially in terms of occlusion) follow an L-shaped curve, with the lion's share occurring when you have created just a few rooms. So do not be afraid to be lazy - **\\*work smart\\***." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:29 +msgid "In general, when it comes to medium and large-sized levels, it is better to do a little portalling than none at all." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:32 +msgid "Some caveats" +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:34 +msgid "The portal system should be considered an **advanced feature** of Godot. You should not attempt to use rooms and portals until you are familiar with the Godot editor, and have successfully made at least a couple of test games." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:36 +msgid "It gives you great power as a game designer, but the trade off is that it requires a very technical approach to level design. It is aimed at producing professional-grade results, and assumes the user is prepared to put in the work for this. It is not intended to be used for all 3D games. Not all games will significantly benefit from portals, and it may require more time than a short game jam allows." +msgstr "" diff --git a/sphinx/templates/tutorials/3d/portals/rooms_and_portals_example.pot b/sphinx/templates/tutorials/3d/portals/rooms_and_portals_example.pot new file mode 100644 index 0000000000..7cfafb3c2d --- /dev/null +++ b/sphinx/templates/tutorials/3d/portals/rooms_and_portals_example.pot @@ -0,0 +1,221 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:2 +msgid "Rooms and Portals example" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:4 +msgid "Download this tutorial project: `Simple Portals Example `_ ." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:9 +msgid "Introduction" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:11 +msgid "This tutorial will introduce you to building a \"Hello World\" room system with two rooms, and a portal in between." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:14 +msgid "Step 1" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:18 +msgid "Create a new project." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:19 +msgid "Add a :ref:`Spatial` as the scene root (on the screenshot, it's called \"Root\")." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:20 +msgid "Next add a :ref:`RoomManager` node. We will need this later to process the room system." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:21 +msgid "Next we need to start defining our rooms. We create all our rooms under another Spatial we have called 'RoomList'." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:22 +msgid "Add a new :ref:`Room` node as a child of the roomlist." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:23 +msgid "We have named the room ``Kitchen``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:24 +msgid "We will now create the geometry of our room. The names you give to the geometry is up to you." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:25 +msgid "Create a :ref:`MeshInstance` for the floor. Create a box by adding a CubeMesh resource to the MeshInstance. Scale and position it to form a floor." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:26 +msgid "Create MeshInstances for the walls. Create more box meshes for this, then scale and position them. Be sure to leave an opening on one side. You will need to create two wall segments to do this on that side." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:29 +msgid "Step 2" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:33 +msgid "Now we need to create the other room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:34 +msgid "You can do this simply by duplicating the first room (select the ``Kitchen`` node, right click and choose **Duplicate**)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:35 +msgid "Rotate and position the second room so that the openings line up." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:36 +msgid "Rename the second room to ``Lounge``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:39 +msgid "Step 3" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:43 +msgid "Next, we will add a portal between the two rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:44 +msgid "Create a new :ref:`Portal` in the kitchen." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:45 +msgid "Scale and position the portal using the node ``Transform`` in the inspector, so it fits within the opening between the two rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:46 +msgid "The portal plane should face *outward* from the source room, i.e. towards the lounge. This direction is indicated by the arrow in the editor gizmo, and portal gizmo's color." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:49 +msgid "Step 4" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:53 +msgid "To make things more exciting, we want to add a few more boxes to the rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:54 +msgid "Placing these boxes as children or grandchildren of the room nodes explicitly tells the system which room the objects should be in. However, we can also create these objects *outside* the rooms. Provided they are in the RoomList branch, the system will attempt to automatically place them in the correct room at runtime." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:55 +msgid "On the screenshot, the boxes were places as children of a Spatial I have called ``Freeform`` to keep things tidy." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:56 +msgid "Boxes also have a green SpatialMaterial assigned to them to make them stand out more from the rest of the room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:57 +msgid "Let's also create an :ref:`OmniLight` so it will be autoplaced in one of the rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:60 +msgid "Step 5" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:64 +msgid "Next comes a crucial stage. We must let the RoomManager know where the rooms are!" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:65 +msgid "Select the RoomManager and look in the Inspector window in the **Paths** section." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:66 +msgid "You need to assign the **Room List** to point to the RoomList node we created earlier (which is the parent of all the rooms)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:69 +msgid "Step 6" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:73 +msgid "Make sure you have saved your project before this next step. It is always a good idea to save and make a backup before converting." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:74 +msgid "Select the RoomManager, and you will see a button in the toolbar at the top of the 3d editor viewport called **Convert Rooms**. Press this button." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:75 +msgid "If all goes well, the RoomManager will have created the runtime data (the *room graph*) to perform occlusion culling at runtime." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:76 +msgid "You can see a log of the conversion process in the output window. This is helpful for finding problems." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:77 +msgid "If you now move the editor camera inside the rooms, you should see the meshes in the opposite room being culled depending on what you can see through the portal." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:80 +msgid "Conclusion" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:82 +msgid "This concludes this simple tutorial. Don't be afraid to experiment with the new room system you have created." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:85 +msgid "Some things to try" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:87 +msgid "Create different types of geometry. CSG nodes, Particle systems, and Multimeshes are all supported by the portal system." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:88 +msgid "Try creating a Camera and adding it to the scene. If you run the scene you will notice that the portal culling is not active. This is because the ``room graph`` must be created each time you load a level, by converting the rooms. Instead of using a button in the editor, in real games you call a function in the RoomManager to convert the level, called ``rooms_convert()``. Try this out with a script, perhaps running within a ``_ready()`` function." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:89 +msgid "The geometry you created so far is all ``STATIC`` (non-moving). If you look in the inspector for geometry nodes, you will see they derive from ``CullInstance``. Here you can set the **Portal Mode** for objects in the portal system. This determines how the node is processed." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:90 +msgid "If you now write a script to move one of your objects within a room and view it through a Camera as the scene runs, you may notice that the object gets culled incorrectly. This is because ``STATIC`` objects are assumed not to move in the system. If you instead change the object to ``DYNAMIC``, it should now update the culling correctly." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:91 +msgid "There are several ``portal_modes``, these are described in the main documentation." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:92 +msgid "Try turning the portal on and off at runtime from your script. You can call ``set_portal_active()`` to open and close the portal." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:93 +msgid "If you select the portal, you should see 4 handles appear. Try dragging the portal points with the mouse, and see how it affects the objects that are culled." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:94 +msgid "If you select a room and click the **Generate Points** button in the toolbar, it will store the points of the room hull in the room inspector. You can now edit these with the gizmo handles." +msgstr "" diff --git a/sphinx/templates/tutorials/3d/portals/using_objects_in_rooms_and_portals.pot b/sphinx/templates/tutorials/3d/portals/using_objects_in_rooms_and_portals.pot new file mode 100644 index 0000000000..88573e6d6a --- /dev/null +++ b/sphinx/templates/tutorials/3d/portals/using_objects_in_rooms_and_portals.pot @@ -0,0 +1,177 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:2 +msgid "Using objects in Rooms and Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:4 +msgid "Normally, when you use Godot, all objects that you can see (:ref:`VisualInstance`\\ s) are treated in the same way by the engine. The portal renderer is slightly different, in that it makes a distinction between the different roles objects will have in your game. It makes this distinction to define the :ref:`Room`\\ s, and to render and process everything in the most efficient way." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:7 +msgid "Portal mode" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:9 +msgid "If you look in the inspector, every VisualInstance in Godot is derived from a :ref:`CullInstance`, where you can set a ``PortalMode``. This determines how objects will behave in the portal system." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:14 +msgid "STATIC" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:16 +msgid "The default mode for objects is ``STATIC``. Static objects are objects within rooms that will not move throughout the lifecycle of the level. Things like floors, walls, ceilings are good candidates for ``STATIC`` objects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:19 +msgid "DYNAMIC" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:21 +msgid "Dynamic mode is for objects that are expected to move during the game. But there is a limitation - **they must not move outside of their original room**. These objects are handled very efficiently by the system. Examples might include moving platforms, and elevators." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:24 +msgid "ROAMING" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:26 +msgid "Roaming mode is for objects that can move between rooms. Things like players and enemies should be marked as roaming. These are more expensive to calculate than ``STATIC`` or ``DYNAMIC`` modes, because the system has to keep track of which room a roaming object is within." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:29 +msgid "GLOBAL" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:31 +msgid "Global mode is for objects that you don't want occlusion culled at all. Things like a main player's weapon, bullets and some particle effects are good candidates for ``GLOBAL`` mode." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:34 +msgid "IGNORE" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:36 +msgid "Ignore is a special mode for objects that will be essentially free in the system. Manual bounds (``-bound``) get converted to ignore portal mode automatically. They don't need to show up during the game, but are kept in the scene tree in case you need to convert the level multiple times (e.g. in the Editor). You might also choose to use this for objects that you *only* want to show up in the editor (when RoomManager is inactive)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:39 +msgid "Should you place objects within rooms (in the scene tree) or not?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:41 +msgid "``STATIC`` and ``DYNAMIC`` objects are ideally placed within rooms in the scene tree. The system needs to know which room they are in during conversion as it assumes they will never change room. Placing them within rooms in the scene tree allows you to explicitly tell the system where you want them." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:44 +msgid "Autoplace" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:46 +msgid "However, for ease of use, it is also possible to place ``STATIC`` and ``DYNAMIC`` objects *outside* the rooms in the scene tree, but within the RoomList branch. The system will attempt to **autoplace** the objects into the appropriate room. This works in most cases but if in doubt, use the explicit approach. The explicit approach is especially needed when dealing with internal rooms, which have some restrictions for sprawling objects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:50 +msgid "Note that if you place ``STATIC`` and ``DYNAMIC`` objects outside of rooms, they will not contribute to the room bound. If you are using the room geometry to derive the bound, tables and chairs can be placed outside the room. However, walls and floors should be explicitly within the Room's branch of the scene tree to ensure the bound is correct." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:52 +msgid "``ROAMING`` and ``GLOBAL`` objects are recommended to be kept in a branch of the scene tree outside of any rooms or the RoomList. They *can* be placed inside the rooms, but to save confusion, they are normally better kept on their own branch. There are no restrictions on the placement of ``IGNORE`` objects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:55 +msgid "Object Lifetimes" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:57 +msgid "It is important to note that the lifetime of ``STATIC`` and ``DYNAMIC`` objects is tied to the lifetime of the level, between when you call ``rooms_convert()`` to activate the portal system, and calling ``rooms_clear()`` to unload the system. This is because quite a bit of pre-processing goes on during the conversion phase in order to render them efficiently." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:59 +msgid "You should therefore not try to create or delete ``STATIC`` or ``DYNAMIC`` objects while the portal system is active. Doing so will cause the system to automatically unload because it is in an invalid state. You can however, freely ``show()`` and ``hide()`` these objects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:61 +msgid "The sequence should be therefore:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:63 +msgid "Load your level." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:64 +msgid "Place any ``STATIC`` or ``DYNAMIC`` objects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:65 +msgid "Then run ``rooms_convert()`` *after* all the ``STATIC`` and ``DYNAMIC`` objects were added to the scene tree." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:67 +msgid "Objects that are ``ROAMING``, ``GLOBAL`` or ``IGNORE`` can be freely created and deleted as required." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:70 +msgid "Sprawling" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:72 +msgid "Although users can usually ignore the internals of the portal system, they should be aware that it is capable of handling objects that are so big they end up in more than one room. Each object has a central room, but using the AABB or geometry the system can detect when an object extends across a portal into a neighbouring room (or several rooms). This is referred to as **sprawling**." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:74 +msgid "This means that if the corner of an object extends into a neighbouring room, but the object's main room is not showing (e.g. a train where the end is in a different room), the object will not be culled, and will still be shown. The object will only be culled if it is not present in any of the rooms that are visible." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:77 +msgid "Portal Margins" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:79 +msgid "It is hard to place objects exactly at the edges of rooms, and if we chose to sprawl objects to the adjacent room the moment a portal was crossed (even by a very small amount), there would be an unnecessary amount of sprawling, and objects would end up being rendered when not really required. To counter this, portals have an adjustable ``margin`` over which an object can cross without being considered in the next room. The margin is shown in the editor gizmo as a red translucent area." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:81 +msgid "You can set the margin globally in the RoomManager. You can also override this margin value in any portal if you need to finetune things. As you edit the margin values in the inspector, you should see the margins update in the 3D editor viewport." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:84 +msgid "Include in Bound" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:86 +msgid "The support for objects that are larger than a single room has one side effect. You may not want to include some objects in the calculation of the automatic room bound. You can turn this on and off in the inspector for each object. See **Cull Instance > Include In Bound**." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:88 +msgid "While sprawling works great for large moving objects, it also gives you a lot more leeway in level design. You can for instance create a large terrain section and have it present in multiple rooms, without having to split up the mesh." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:91 +msgid "Lighting" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:93 +msgid "In general lights are handled like any other visual instance. They can be placed in rooms, and they will sprawl to affect neighbouring rooms, following the dimensions and direction of the light. The exception to this is :ref:`DirectionalLight`\\ s. DirectionalLights have no source room as they affect *everywhere*. They should therefore not be placed in a room. As DirectionalLights can be expensive, it is a good idea to turn them off when inside, see the later :ref:`doc_rooms_and_portals_roomgroups` section for details on how to do this." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:95 +msgid "Congratulations! You have now mastered the intermediate techniques required to use rooms and portals. You can use these to make games already, but there are many more features." +msgstr "" diff --git a/sphinx/templates/tutorials/3d/reflection_probes.pot b/sphinx/templates/tutorials/3d/reflection_probes.pot index 931b9491d3..574e939071 100644 --- a/sphinx/templates/tutorials/3d/reflection_probes.pot +++ b/sphinx/templates/tutorials/3d/reflection_probes.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/spatial_material.pot b/sphinx/templates/tutorials/3d/spatial_material.pot index 9b2d63f328..f7e0e7b852 100644 --- a/sphinx/templates/tutorials/3d/spatial_material.pot +++ b/sphinx/templates/tutorials/3d/spatial_material.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/using_gridmaps.pot b/sphinx/templates/tutorials/3d/using_gridmaps.pot index 227afd71f3..d53e51ff49 100644 --- a/sphinx/templates/tutorials/3d/using_gridmaps.pot +++ b/sphinx/templates/tutorials/3d/using_gridmaps.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot b/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot index eb7f8137b8..acd3e3a430 100644 --- a/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot +++ b/sphinx/templates/tutorials/3d/using_multi_mesh_instance.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/using_transforms.pot b/sphinx/templates/tutorials/3d/using_transforms.pot index 8e8f835a18..4684caceb8 100644 --- a/sphinx/templates/tutorials/3d/using_transforms.pot +++ b/sphinx/templates/tutorials/3d/using_transforms.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/vertex_animation/animating_thousands_of_fish.pot b/sphinx/templates/tutorials/3d/vertex_animation/animating_thousands_of_fish.pot index 36e61e08f8..4299ae6e7e 100644 --- a/sphinx/templates/tutorials/3d/vertex_animation/animating_thousands_of_fish.pot +++ b/sphinx/templates/tutorials/3d/vertex_animation/animating_thousands_of_fish.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/vertex_animation/controlling_thousands_of_fish.pot b/sphinx/templates/tutorials/3d/vertex_animation/controlling_thousands_of_fish.pot index 15687ee4f9..64335dd7f7 100644 --- a/sphinx/templates/tutorials/3d/vertex_animation/controlling_thousands_of_fish.pot +++ b/sphinx/templates/tutorials/3d/vertex_animation/controlling_thousands_of_fish.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/3d/vertex_animation/index.pot b/sphinx/templates/tutorials/3d/vertex_animation/index.pot index 97e7ebe322..951bbdbc1e 100644 --- a/sphinx/templates/tutorials/3d/vertex_animation/index.pot +++ b/sphinx/templates/tutorials/3d/vertex_animation/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/animation/2d_skeletons.pot b/sphinx/templates/tutorials/animation/2d_skeletons.pot index 7704831d4e..1e6d1319ac 100644 --- a/sphinx/templates/tutorials/animation/2d_skeletons.pot +++ b/sphinx/templates/tutorials/animation/2d_skeletons.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/animation/animation_tree.pot b/sphinx/templates/tutorials/animation/animation_tree.pot index cf96d4b3dd..ad972a7644 100644 --- a/sphinx/templates/tutorials/animation/animation_tree.pot +++ b/sphinx/templates/tutorials/animation/animation_tree.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/animation/cutout_animation.pot b/sphinx/templates/tutorials/animation/cutout_animation.pot index c23768af1f..ae93fd8325 100644 --- a/sphinx/templates/tutorials/animation/cutout_animation.pot +++ b/sphinx/templates/tutorials/animation/cutout_animation.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/animation/index.pot b/sphinx/templates/tutorials/animation/index.pot index ed11f5fc4d..0f6fa88d54 100644 --- a/sphinx/templates/tutorials/animation/index.pot +++ b/sphinx/templates/tutorials/animation/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/animation/introduction.pot b/sphinx/templates/tutorials/animation/introduction.pot index 88acaa4713..459d2c462f 100644 --- a/sphinx/templates/tutorials/animation/introduction.pot +++ b/sphinx/templates/tutorials/animation/introduction.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/assetlib/index.pot b/sphinx/templates/tutorials/assetlib/index.pot index a1981e4489..fe2fb60ea4 100644 --- a/sphinx/templates/tutorials/assetlib/index.pot +++ b/sphinx/templates/tutorials/assetlib/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/assetlib/uploading_to_assetlib.pot b/sphinx/templates/tutorials/assetlib/uploading_to_assetlib.pot index ff8ac98af4..7e5bd99559 100644 --- a/sphinx/templates/tutorials/assetlib/uploading_to_assetlib.pot +++ b/sphinx/templates/tutorials/assetlib/uploading_to_assetlib.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -89,7 +89,7 @@ msgid "Make your code conform to the official **style guides**. Having a consist msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:70 -msgid "If you have screenshots in your repo, place them in their own subfolder and add a **.gdignore** file in the same folder (note: **gd**, not **git**). This prevents Godot from importing your screenshots. On Windows, open a command prompt in the project folder and run ``type nul > .gdignore`` to create a file whose name starts with a period." +msgid "If you have screenshots in your repo, place them in their own subfolder and add an empty **.gdignore** file in the same folder (note: **gd**, not **git**). This prevents Godot from importing your screenshots. On Windows, open a command prompt in the project folder and run ``type nul > .gdignore`` to create a file whose name starts with a period." msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:76 diff --git a/sphinx/templates/tutorials/assetlib/using_assetlib.pot b/sphinx/templates/tutorials/assetlib/using_assetlib.pot index b3ebc53818..bf4120f594 100644 --- a/sphinx/templates/tutorials/assetlib/using_assetlib.pot +++ b/sphinx/templates/tutorials/assetlib/using_assetlib.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/assetlib/what_is_assetlib.pot b/sphinx/templates/tutorials/assetlib/what_is_assetlib.pot index 287325d5bf..4619864d90 100644 --- a/sphinx/templates/tutorials/assetlib/what_is_assetlib.pot +++ b/sphinx/templates/tutorials/assetlib/what_is_assetlib.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/audio/audio_buses.pot b/sphinx/templates/tutorials/audio/audio_buses.pot index a24b4ae2ff..d010d70932 100644 --- a/sphinx/templates/tutorials/audio/audio_buses.pot +++ b/sphinx/templates/tutorials/audio/audio_buses.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/audio/audio_streams.pot b/sphinx/templates/tutorials/audio/audio_streams.pot index dd295cbe72..35a5f85fc4 100644 --- a/sphinx/templates/tutorials/audio/audio_streams.pot +++ b/sphinx/templates/tutorials/audio/audio_streams.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/audio/index.pot b/sphinx/templates/tutorials/audio/index.pot index 89764db8b3..4747163a66 100644 --- a/sphinx/templates/tutorials/audio/index.pot +++ b/sphinx/templates/tutorials/audio/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/audio/recording_with_microphone.pot b/sphinx/templates/tutorials/audio/recording_with_microphone.pot index dd7a4fbe5b..b089bd04ac 100644 --- a/sphinx/templates/tutorials/audio/recording_with_microphone.pot +++ b/sphinx/templates/tutorials/audio/recording_with_microphone.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/audio/sync_with_audio.pot b/sphinx/templates/tutorials/audio/sync_with_audio.pot index 26fc8bb075..b68b368cb5 100644 --- a/sphinx/templates/tutorials/audio/sync_with_audio.pot +++ b/sphinx/templates/tutorials/audio/sync_with_audio.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/content/index.pot b/sphinx/templates/tutorials/content/index.pot index e40379a723..c1bea35d45 100644 --- a/sphinx/templates/tutorials/content/index.pot +++ b/sphinx/templates/tutorials/content/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/content/making_trees.pot b/sphinx/templates/tutorials/content/making_trees.pot index 0bd1b13ca1..2f55cc82e1 100644 --- a/sphinx/templates/tutorials/content/making_trees.pot +++ b/sphinx/templates/tutorials/content/making_trees.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/content/procedural_geometry/arraymesh.pot b/sphinx/templates/tutorials/content/procedural_geometry/arraymesh.pot index ff731845fb..6536378647 100644 --- a/sphinx/templates/tutorials/content/procedural_geometry/arraymesh.pot +++ b/sphinx/templates/tutorials/content/procedural_geometry/arraymesh.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/content/procedural_geometry/immediategeometry.pot b/sphinx/templates/tutorials/content/procedural_geometry/immediategeometry.pot index c1e00f2cf0..8ebd0f75f5 100644 --- a/sphinx/templates/tutorials/content/procedural_geometry/immediategeometry.pot +++ b/sphinx/templates/tutorials/content/procedural_geometry/immediategeometry.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/content/procedural_geometry/index.pot b/sphinx/templates/tutorials/content/procedural_geometry/index.pot index bb28126c93..4023e0e62d 100644 --- a/sphinx/templates/tutorials/content/procedural_geometry/index.pot +++ b/sphinx/templates/tutorials/content/procedural_geometry/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -149,13 +149,13 @@ msgid "Both SurfaceTool and ArrayMesh are excellent for generating static geomet msgstr "" #: ../../docs/tutorials/content/procedural_geometry/index.rst:124 -msgid "Using an ArrayMesh is slightly faster than using a SurfaceTool, but the API is more a little more challenging. Additionally, SurfaceTool has a few quality of life methods such as ``generate_normals()`` and ``index()``." +msgid "Using an ArrayMesh is slightly faster than using a SurfaceTool, but the API is a little more challenging. Additionally, SurfaceTool has a few quality of life methods such as ``generate_normals()`` and ``index()``." msgstr "" #: ../../docs/tutorials/content/procedural_geometry/index.rst:127 -msgid "ImmediateGeometry regenerates the mesh every frame, so it is much slower than ArrayMesh or SurfaceTool. However, if you need the geometry to change every frame anyway it provides a much easier interface that may even be a little faster than generating an ArrayMesh every frame." +msgid "ImmediateGeometry regenerates the mesh every frame, so it is much slower than ArrayMesh or SurfaceTool. However, if you need the geometry to change every frame anyway, it provides a much easier interface that may even be a little faster than generating an ArrayMesh every frame." msgstr "" #: ../../docs/tutorials/content/procedural_geometry/index.rst:131 -msgid "The MeshDataTool is not fast, but it gives you access to all kinds of properties of the mesh that you don't get with the others (edges, faces, etc.). It is incredibly useful when you need that sort of data to transform the mesh, but it is not a good idea to use if that information is not needed. The MeshDataTool is best used if you are going to be using an algorithm that requires access to the face or edge array." +msgid "The MeshDataTool is not fast, but it gives you access to all kinds of properties of the mesh that you don't get with the others (edges, faces, etc.). It is incredibly useful when you need that sort of data to transform the mesh, but it is not a good idea to use it if that information is not needed. The MeshDataTool is best used if you are going to be using an algorithm that requires access to the face or edge array." msgstr "" diff --git a/sphinx/templates/tutorials/content/procedural_geometry/meshdatatool.pot b/sphinx/templates/tutorials/content/procedural_geometry/meshdatatool.pot index 3a572ad4ee..5f2fc6e3d5 100644 --- a/sphinx/templates/tutorials/content/procedural_geometry/meshdatatool.pot +++ b/sphinx/templates/tutorials/content/procedural_geometry/meshdatatool.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/content/procedural_geometry/surfacetool.pot b/sphinx/templates/tutorials/content/procedural_geometry/surfacetool.pot index 02c435cb3f..01ad47cfb3 100644 --- a/sphinx/templates/tutorials/content/procedural_geometry/surfacetool.pot +++ b/sphinx/templates/tutorials/content/procedural_geometry/surfacetool.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -49,9 +49,13 @@ msgid "Similarly, if you have an index array, but you want each vertex to be uni msgstr "" #: ../../docs/tutorials/content/procedural_geometry/surfacetool.rst:90 -msgid "If you don't add custom normals yourself, you can add them using ``generate_normals()``. The same goes for tangents." +msgid "If you don't add custom normals yourself, you can add them using ``generate_normals()``, which should be called after generating geometry and before committing the mesh using ``commit()`` or ``commit_to_arrays()``. Calling ``generate_normals(true)`` will flip the resulting normals. As a side note, ``generate_normals()`` only works if the primitive type is set to ``Mesh.PRIMITIVE_TRIANGLES``." msgstr "" -#: ../../docs/tutorials/content/procedural_geometry/surfacetool.rst:98 +#: ../../docs/tutorials/content/procedural_geometry/surfacetool.rst:95 +msgid "If you don't add custom tangents, they can be added with ``generate_tangents()``, but it requires that each vertex have UVs and normals set already." +msgstr "" + +#: ../../docs/tutorials/content/procedural_geometry/surfacetool.rst:104 msgid "By default, when generating normals, they will be calculated on a per-face basis. If you want smooth vertex normals, when adding vertices, call ``add_smooth_group()``. ``add_smooth_group()`` needs to be called while building the geometry, e.g. before the call to ``add_vertex()`` (if non-indexed) or ``add_index()`` (if indexed)." msgstr "" diff --git a/sphinx/templates/tutorials/debug/debugger_panel.pot b/sphinx/templates/tutorials/debug/debugger_panel.pot index 9ad5a82c76..5d0f115568 100644 --- a/sphinx/templates/tutorials/debug/debugger_panel.pot +++ b/sphinx/templates/tutorials/debug/debugger_panel.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/debug/index.pot b/sphinx/templates/tutorials/debug/index.pot index 70d024e236..08e01358d7 100644 --- a/sphinx/templates/tutorials/debug/index.pot +++ b/sphinx/templates/tutorials/debug/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/debug/overview_of_debugging_tools.pot b/sphinx/templates/tutorials/debug/overview_of_debugging_tools.pot index 57680aca8a..75d2d7b121 100644 --- a/sphinx/templates/tutorials/debug/overview_of_debugging_tools.pot +++ b/sphinx/templates/tutorials/debug/overview_of_debugging_tools.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/gui/bbcode_in_richtextlabel.pot b/sphinx/templates/tutorials/gui/bbcode_in_richtextlabel.pot index 5bc0dc683f..f89455b41b 100644 --- a/sphinx/templates/tutorials/gui/bbcode_in_richtextlabel.pot +++ b/sphinx/templates/tutorials/gui/bbcode_in_richtextlabel.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -193,322 +193,342 @@ msgid "``[url]{url}[/url]``" msgstr "" #: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:73 -msgid "Show {url} as such, underline it and make it clickable." +msgid "Show {url} as such, underline it and make it clickable. **Must be handled with the \"meta_clicked\" signal to have an effect.** See :ref:`doc_bbcode_in_richtextlabel_handling_url_tag_clicks`." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:75 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 msgid "**url (ref)**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:75 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 msgid "``[url=]{text}[/url]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:75 -msgid "Makes {text} reference (underlined and clickable)." +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 +msgid "Makes {text} reference (underlined and clickable). **Must be handled with the \"meta_clicked\" signal to have an effect.** See :ref:`doc_bbcode_in_richtextlabel_handling_url_tag_clicks`." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 msgid "**image**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 msgid "``[img]{path}[/img]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 msgid "Insert image at resource {path}." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:79 -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 msgid "**resized image**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:79 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 msgid "``[img=]{path}[/img]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:79 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 msgid "Insert image at resource {path} using (keeps ratio)." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 msgid "``[img=x]{path}[/img]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 msgid "Insert image at resource {path} using ×." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 msgid "**font**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 msgid "``[font=]{text}[/font]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 msgid "Use custom font at for {text}." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 msgid "**color**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 msgid "``[color=]{text}[/color]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 msgid "Change {text} color; use name or # format, such as ``#ff00ff``." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:91 msgid "**table**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:91 msgid "``[table=]{cells}[/table]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:91 msgid "Creates a table with of columns." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:93 msgid "**cell**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:93 msgid "``[cell]{text}[/cell]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:93 msgid "Adds cells with the {text} to the table." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:93 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:97 msgid "Built-in color names" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:95 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:99 msgid "List of valid color names for the [color=] tag:" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:97 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:101 msgid "aqua" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:98 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:102 msgid "black" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:99 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:103 msgid "blue" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:100 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:104 msgid "fuchsia" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:101 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:105 msgid "gray" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:102 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:106 msgid "green" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:103 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:107 msgid "lime" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:104 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:108 msgid "maroon" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:105 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:109 msgid "navy" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:106 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:110 msgid "purple" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:107 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:111 msgid "red" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:108 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:112 msgid "silver" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:109 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:113 msgid "teal" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:110 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:114 msgid "white" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:111 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:115 msgid "yellow" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:114 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:118 msgid "Hexadecimal color codes" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:116 -msgid "For opaque RGB colors, any valid 6-digit hexadecimal code is supported, e.g. ``[color=#ffffff]white[/color]``." +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:120 +msgid "For opaque RGB colors, any valid 6-digit hexadecimal code is supported, e.g. ``[color=#ffffff]white[/color]``. Short RGB color codes such as ``#6f2`` (equivalent to ``#66ff22``) are also supported." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:118 -msgid "For transparent RGB colors, any 8-digit hexadecimal code can be used, e.g. ``[color=#88ffffff]translucent white[/color]``. In this case, note that the alpha channel is the **first** component of the color code, not the last one." +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:123 +msgid "For transparent RGB colors, any 8-digit hexadecimal code can be used, e.g. ``[color=#88ffffff]translucent white[/color]``. In this case, note that the alpha channel is the **first** component of the color code, not the last one. Short RGBA color codes such as ``#86f2`` (equivalent to ``#8866ff22``) are also supported." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:122 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:130 +msgid "Handling ``[url]`` tag clicks" +msgstr "" + +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:132 +msgid "By default, ``[url]`` tags do nothing when clicked. This is to allow flexible use of ``[url]`` tags rather than limiting them to opening URLs in a web browser." +msgstr "" + +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:135 +msgid "To handle clicked ``[url]`` tags, connect the RichTextLabel node's :ref:`meta_clicked ` signal to a script function." +msgstr "" + +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:138 +msgid "For example, the following method can be connected to ``meta_clicked`` to open clicked URLs using the user's default web browser::" +msgstr "" + +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:148 +msgid "For more advanced use cases, it's also possible to store JSON in an ``[url]`` tag's option and parse it in the function that handles the ``meta_clicked`` signal. For example: ``[url={\"example\": \"value\"}]JSON[/url]``" +msgstr "" + +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:153 msgid "Image vertical offset" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:124 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:155 msgid "You use a custom font for your image in order to align it vertically." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:126 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:157 msgid "Create a ``BitmapFont`` resource" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:127 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:158 msgid "Set this bitmap font with a positive value for the ``ascent`` property, that's your height offset" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:128 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:159 msgid "Set the BBCode tag this way: ``[font=][img]{image-path}[/img][/font]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:131 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:162 msgid "Animation effects" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:133 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:164 msgid "BBCode can also be used to create different text animation effects. Five customizable effects are provided out of the box, and you can easily create your own." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:137 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:168 msgid "Wave" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:141 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:172 msgid "Wave makes the text go up and down. Its tag format is ``[wave amp=50 freq=2][/wave]``. ``amp`` controls how high and low the effect goes, and ``freq`` controls how fast the text goes up and down." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:146 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:177 msgid "Tornado" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:150 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:181 msgid "Tornao makes the text move around in a circle. Its tag format is ``[tornado radius=5 freq=2][/tornado]``. ``radius`` is the radius of the circle that controls the offset, ``freq`` is how fast the text moves in a circle." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:156 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:187 msgid "Shake" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:160 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:191 msgid "Shake makes the text shake. Its tag format is ``[shake rate=5 level=10][/shake]``. ``rate`` controls how fast the text shakes, ``level`` controls how far the text is offset from the origin." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:165 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:196 msgid "Fade" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:169 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:200 msgid "Fade creates a fade effect over the text that is not animated. Its tag format is ``[fade start=4 length=14][/fade]``. ``start`` controls the starting position of the falloff relative to where the fade command is inserted, ``length`` controls over how many characters should the fade out take place." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:176 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:207 msgid "Rainbow" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:180 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:211 msgid "Rainbow gives the text a rainbow color that changes over time. Its tag format is ``[rainbow freq=0.2 sat=10 val=20][/rainbow]``. ``freq`` is the number of full rainbow cycles per second, ``sat`` is the saturation of the rainbow, ``val`` is the value of the rainbow." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:186 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:217 msgid "Custom BBCode tags and text effects" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:188 -msgid "You can extend the :ref:`class_RichTextEffect` resource type to create your own custom BBCode tags. You begin by extending the :ref:`class_RichTextEffect` resource type. Add the ``tool`` prefix to your GDScript file if you wish to have these custom effects run within the editor itself. The RichTextLabel does not need to have a script attached, nor does it need to be running in ``tool`` mode." +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:219 +msgid "You can extend the :ref:`class_RichTextEffect` resource type to create your own custom BBCode tags. You begin by extending the :ref:`class_RichTextEffect` resource type. Add the ``tool`` prefix to your GDScript file if you wish to have these custom effects run within the editor itself. The RichTextLabel does not need to have a script attached, nor does it need to be running in ``tool`` mode. The new effect will be activable in the Inspector through the **Custom Effects** property." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:194 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:226 msgid "There is only one function that you need to extend: ``_process_custom_fx(char_fx)``. Optionally, you can also provide a custom BBCode identifier simply by adding a member name ``bbcode``. The code will check the ``bbcode`` property automatically or will use the name of the file to determine what the BBCode tag should be." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:200 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:232 msgid "``_process_custom_fx``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:202 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:234 msgid "This is where the logic of each effect takes place and is called once per character during the draw phase of text rendering. This passes in a :ref:`class_CharFXTransform` object, which holds a few variables to control how the associated character is rendered:" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:206 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:238 msgid "``identity`` specifies which custom effect is being processed. You should use that for code flow control." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:208 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:240 msgid "``relative_index`` tells you how far into a given custom effect block you are in as an index." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:210 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:242 msgid "``absolute_index`` tells you how far into the entire text you are as an index." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:211 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:243 msgid "``elapsed_time`` is the total amount of time the text effect has been running." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:212 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:244 msgid "``visible`` will tell you whether the character is visible or not and will also allow you to hide a given portion of text." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:214 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:246 msgid "``offset`` is an offset position relative to where the given character should render under normal circumstances." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:216 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:248 msgid "``color`` is the color of a given character." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:217 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:249 msgid "Finally, ``env`` is a :ref:`class_Dictionary` of parameters assigned to a given custom effect. You can use :ref:`get() ` with an optional default value to retrieve each parameter, if specified by the user. For example ``[custom_fx spread=0.5 color=#FFFF00]test[/custom_fx]`` would have a float ``spread`` and Color ``color`` parameters in its ` `env`` Dictionary. See below for more usage examples." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:223 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:255 msgid "The last thing to note about this function is that it is necessary to return a boolean ``true`` value to verify that the effect processed correctly. This way, if there's a problem with rendering a given character, it will back out of rendering custom effects entirely until the user fixes whatever error cropped up in their custom effect logic." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:228 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:260 msgid "Here are some examples of custom effects:" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:231 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:263 msgid "Ghost" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:254 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:286 msgid "Pulse" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:281 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:313 msgid "Matrix" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:316 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:348 msgid "This will add a few new BBCode commands, which can be used like so:" msgstr "" diff --git a/sphinx/templates/tutorials/gui/control_node_gallery.pot b/sphinx/templates/tutorials/gui/control_node_gallery.pot index 9f91037058..e460869716 100644 --- a/sphinx/templates/tutorials/gui/control_node_gallery.pot +++ b/sphinx/templates/tutorials/gui/control_node_gallery.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/gui/custom_gui_controls.pot b/sphinx/templates/tutorials/gui/custom_gui_controls.pot index 7e4ed5dba0..0fbb5180d2 100644 --- a/sphinx/templates/tutorials/gui/custom_gui_controls.pot +++ b/sphinx/templates/tutorials/gui/custom_gui_controls.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/gui/gui_containers.pot b/sphinx/templates/tutorials/gui/gui_containers.pot index 376ff25f0f..4274cfebe8 100644 --- a/sphinx/templates/tutorials/gui/gui_containers.pot +++ b/sphinx/templates/tutorials/gui/gui_containers.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/gui/gui_navigation.pot b/sphinx/templates/tutorials/gui/gui_navigation.pot new file mode 100644 index 0000000000..971b960fee --- /dev/null +++ b/sphinx/templates/tutorials/gui/gui_navigation.pot @@ -0,0 +1,69 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/gui/gui_navigation.rst:4 +msgid "Keyboard/Controller Navigation and Focus" +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:6 +msgid "It is a common requirement for a user interface to have full keyboard and controller support for navigation and interaction. There are two main reasons why this is beneficial for projects: improved accessibility (not everyone can use mouse or touch controls for interactions), and getting your project ready for :ref:`consoles ` (or just for people who prefer to game with a controller on PC)." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:13 +msgid "Navigating between UI elements with keyboard or controller is done by changing which node is actively selected. This is also called changing UI focus. Every :ref:`Control ` node in Godot is capable of having focus. By default, some control nodes have the ability to automatically grab focus reacting to built-in UI actions such as ``ui_up``, ``ui_down``, ``ui_focus_next``, etc. These actions can be seen in the project settings in the input map and can be modified." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:22 +msgid "Because these actions are used for focus they should not be used for any gameplay code." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:26 +msgid "Node settings" +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:28 +msgid "In addition to the built-in logic, you can define what is known as focus neighbors for each individual control node. This allows to finely tune the path the UI focus takes across the user interface of your project. The settings for individual nodes can be found in the Inspector dock, under the \"Focus\" category of the \"Control\" section." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:36 +msgid "Neighbor options are used to define nodes for 4-directional navigation, such as using arrow keys or a D-pad on a controller. For example, the bottom neighbor will be used when navigating down with the down arrow or by pushing down on the D-pad. The \"Next\" and \"Previous\" options are used with the focus shift button, such as :kbd:`Tab` on desktop operating systems." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:43 +msgid "A node can lose focus if it becomes hidden." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:45 +msgid "The mode setting defines how a node can be focused. **All** means a node can be focused by clicking on it with the mouse, or selecting it with a keyboard or controller. **Click** means it can only be focused on by clicking on it. Finally, **None** means it can't be focused at all. Different control nodes have different default settings for this based on how they are typically used, for example, :ref:`Label ` nodes are set to \"None\" by default, while :ref:`buttons ` are set to \"All\"." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:53 +msgid "Make sure to properly configure your scenes for focus and navigation. If a node has no focus neighbor configured, the engine will try to guess the next control automatically. This may result in unintended behavior, especially in a complex user interface that doesn't have well-defined vertical or horizontal navigation flow." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:59 +msgid "Necessary code" +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:61 +msgid "For keyboard and controller navigation to work correctly, any node must be focused on using code when the scene starts. Without doing this, pressing buttons or keys won't do anything. Here is a basic example of setting initial focus with code:" +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:78 +msgid "Now when the scene starts the \"Start Button\" node will be focused, and the keyboard or a controller can be used to navigate between it and other UI elements." +msgstr "" diff --git a/sphinx/templates/tutorials/gui/gui_skinning.pot b/sphinx/templates/tutorials/gui/gui_skinning.pot index 27d280444e..e8b5163837 100644 --- a/sphinx/templates/tutorials/gui/gui_skinning.pot +++ b/sphinx/templates/tutorials/gui/gui_skinning.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,153 +17,197 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" #: ../../docs/tutorials/gui/gui_skinning.rst:4 -msgid "GUI skinning" +msgid "Introduction to GUI skinning" msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:7 -msgid "Oh, beautiful GUI!" +#: ../../docs/tutorials/gui/gui_skinning.rst:6 +msgid "It is essential for a game to provide clear, informative, and yet visually pleasing user interface to its players. While :ref:`Control ` nodes come with a decently functional look out of the box, there is always room for uniqueness and case-specific tuning. For this purpose Godot engine includes a system for GUI skinning (or theming), which allows you to customize the look of every control in your user interface, including your custom controls." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:9 -msgid "This tutorial is about advanced skinning of a user interface. Most games generally don't need this, as they end up just relying on :ref:`Label `, :ref:`TextureRect `, :ref:`TextureButton ` and :ref:`TextureProgress `." +#: ../../docs/tutorials/gui/gui_skinning.rst:13 +msgid "Here is an example of this system in action — a game with the GUI that is radically different from the default UI theme of the engine:" msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:15 -msgid "However, many types of games often need complex user interfaces, like MMOs, traditional RPGs, Simulators, Strategy, etc. These kinds of interface are also common in some games that include editors to create content, or interfaces for network connectivity." +#: ../../docs/tutorials/gui/gui_skinning.rst:19 +msgid "A \"Gear Up!\" screen in Tank Kings, courtesy of Winterpixel Games" msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:20 -msgid "Godot's user interface uses these kinds of control with the default theme, but they can be skinned to resemble pretty much any kind of user interface." +#: ../../docs/tutorials/gui/gui_skinning.rst:21 +msgid "Beyond achieving a unique look for your game, this system also enables developers to provide customization options to the end users, including accessibility settings. UI themes are applied in a cascading manner (i.e. they propagate from parent controls to their children), which means that font settings or adjustments for colorblind users can be applied in a single place and affect the entire UI tree. Of course this system can also be used for gameplay purposes: your hero-based game can change its style for the selected player character, or you can give different flavors to the sides in your team-based project." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:25 -msgid "Theme" +#: ../../docs/tutorials/gui/gui_skinning.rst:31 +msgid "Basics of themes" msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:27 -msgid "The GUI is skinned through the :ref:`Theme ` resource. Theme contains all the information required to change the entire visual styling of all controls. Theme options are named, so it's not obvious which name changes what (especially from code), but several tools are provided. The ultimate place to look at what each theme option is for each control, which will always be more up to date than any documentation, is the file `scene/resources/default_theme/default_theme.cpp `__. The rest of this document will explain the different tools used to customize the theme." +#: ../../docs/tutorials/gui/gui_skinning.rst:33 +msgid "The skinning system is driven by the :ref:`Theme ` resource. Every Godot project has an inherent default theme that contains the settings used by the built-in control nodes. This is what gives the controls their distinct look out of the box. A theme only describes the configuration, however, and it is still the job of each individual control to use that configuration in the way it requires to display itself. This is important to remember when implementing :ref:`your own custom controls `." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:38 -msgid "A Theme can be applied to any control in the scene. As a result, all children and grand-children controls will use that same theme, too (unless another theme is specified further down the tree). If a value is not found in a theme, it will be searched in themes higher up in the hierarchy, towards the root. If nothing was found, the default theme is used. This system allows for flexible overriding of themes in complex user interfaces." +#: ../../docs/tutorials/gui/gui_skinning.rst:42 +msgid "Even the Godot editor itself relies on the default theme. But it doesn't look the same as a Godot project, because it applies its own heavily customized theme on top of the default one. In principle, this works exactly like it would in your game as explained :ref:`below `." msgstr "" #: ../../docs/tutorials/gui/gui_skinning.rst:48 -msgid "Don't use the custom theme option in the Project Settings, as there are known bugs with theme propagation. Instead, apply your theme to the root Control node's Theme property. It will propagate to instanced scenes automatically. To get correct theming in the editor for instanced scenes, you can apply the theme resource to the instanced scene's root node as well." +msgid "Theme items" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:50 +msgid "The configuration that is stored in a theme consists of theme items. Each item has a unique name and must be one of the following data types:" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:53 +msgid "**Color**" msgstr "" #: ../../docs/tutorials/gui/gui_skinning.rst:55 -msgid "Theme options" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:57 -msgid "Each kind of option in a theme can be:" +msgid "A :ref:`color ` value, which is often used for fonts and backgrounds. Colors can also be used for modulation of controls and icons." msgstr "" #: ../../docs/tutorials/gui/gui_skinning.rst:59 -msgid "**An integer constant**: A single numerical constant. Generally used to define spacing between components or alignment." +msgid "**Constant**" msgstr "" #: ../../docs/tutorials/gui/gui_skinning.rst:61 -msgid "**A Color**: A single color, with or without transparency. Colors are usually applied to fonts and icons." +msgid "An integer value, which can be used either for numeric properties of controls (such as the item separation in a :ref:`BoxContainer `), or for boolean flags (such as the drawing of relationship lines in a :ref:`Tree `)." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:63 -msgid "**A Texture**: A single image. Textures are not often used, but when they are, they represent handles to pick or icons in a complex control (such as a file dialog)." +#: ../../docs/tutorials/gui/gui_skinning.rst:65 +msgid "**Font**" msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:66 -msgid "**A Font**: Every control that uses text can be assigned the fonts used to draw strings." +#: ../../docs/tutorials/gui/gui_skinning.rst:67 +msgid "A :ref:`font ` resource, which is used by controls that display text. Fonts contain most text rendering settings, except for its size and color. On top of that, alignment and text direction are controlled by individual controls." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:68 -msgid "**A StyleBox**: Stylebox is a resource that defines how to draw a panel in varying sizes (more information on them later)." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:71 -msgid "Every option is associated with:" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:73 -msgid "A name (the name of the option)" +#: ../../docs/tutorials/gui/gui_skinning.rst:72 +msgid "**Icon**" msgstr "" #: ../../docs/tutorials/gui/gui_skinning.rst:74 -msgid "A Control (the name of the control)" +msgid "A :ref:`texture ` resource, which is normally used to display an icon (on a :ref:`Button `, for example)." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:76 -msgid "An example usage:" +#: ../../docs/tutorials/gui/gui_skinning.rst:77 +msgid "**StyleBox**" msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:95 -msgid "In the example above, a new theme is created. The \"font_color\" option is changed and then applied to a label. Therefore, the label's text (and all children and grandchildren labels) will be red." +#: ../../docs/tutorials/gui/gui_skinning.rst:79 +msgid "A :ref:`StyleBox ` resource, a collection of configuration options which define the way a UI panel should be displayed. This is not limited to the :ref:`Panel ` control, as styleboxes are used by many controls for their backgrounds and overlays." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:99 -msgid "It is possible to override those options without using the theme directly, and only for a specific control, by using the override API in :ref:`Control.add_color_override() `:" +#: ../../docs/tutorials/gui/gui_skinning.rst:85 +msgid "Theme types" msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:114 -msgid "In the inline help of Godot (in the Script tab), you can check which theme options are overridable, or check the :ref:`Control ` class reference." +#: ../../docs/tutorials/gui/gui_skinning.rst:87 +msgid "To help with the organization of its items each theme is separated into types, and each item must belong to a single type. In other words, each theme item is defined by its name, its data type and its theme type. This combination must be unique within the theme. For example, there cannot be two color items named ``font_color`` in a type called ``Label``, but there can be another ``font_color`` item in a type ``LineEdit``." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:118 -msgid "Customizing a control" +#: ../../docs/tutorials/gui/gui_skinning.rst:94 +msgid "The default Godot theme comes with multiple theme types already defined, one for every built-in control node that uses UI skinning. The example above contains actual theme items present in the default theme. You can refer to the **Theme Properties** section in the class reference for each control to see which items are available to it and its child classes." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:120 -msgid "If only a few controls need to be skinned, it is often not necessary to create a new theme. Controls offer their theme options as special kinds of properties. If checked, overriding will take place:" +#: ../../docs/tutorials/gui/gui_skinning.rst:101 +msgid "Child classes can use theme items defined for their parent class (``Button`` and its derivatives being a good example of that). In fact, every control can use every theme item of any theme type, if it needs to (but for the clarity and predictability we try to avoid that in the engine)." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:126 -msgid "As can be seen in the image above, theme options have little check boxes. If checked, they can be used to override the value of the theme just for that control." +#: ../../docs/tutorials/gui/gui_skinning.rst:106 +msgid "It is important to remember that for child classes that process is automated. Whenever a built-in control requests a theme item from the theme it can omit the theme type, and its class name will be used instead. On top of that, the class names of its parent classes will also be used in turn. This allows changes to the parent class, such as ``Button``, to affect all derived classes without the need to customize every one of them." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:113 +msgid "You can also define your own theme types, and additionally customize both built-in controls and your own controls. Because built-in controls have no knowledge of your custom theme types, you must utilize scripts to access those items. All control nodes have several methods that allow to fetch theme items from the theme that is applied to them. Those methods accept the theme type as one of the arguments." msgstr "" #: ../../docs/tutorials/gui/gui_skinning.rst:131 -msgid "Creating a theme" +msgid "Customizing a control" msgstr "" #: ../../docs/tutorials/gui/gui_skinning.rst:133 -msgid "The simplest way to create a theme is to edit a theme resource. Create a Theme from the resource menu; the editor will appear immediately. After that, save it (for example, with the name mytheme.theme):" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:139 -msgid "This will create an empty theme that can later be loaded and assigned to controls." +msgid "Each control node can be customized directly without the use of themes. This is called local overrides. Every theme property from the control's class reference can be overridden directly on the control itself, using either the Inspector dock, or scripts. This allows to make granular changes to a particular part of the UI, while not affecting anything else in the project, including this control's children." msgstr "" #: ../../docs/tutorials/gui/gui_skinning.rst:143 -msgid "Example: theming a button" +msgid "Local overrides are less useful for the visual flair of your user interface, especially if you aim for consistency. However, for layout nodes these are essential. Nodes such as :ref:`BoxContainer ` and :ref:`GridContainer ` use theme constants for defining separation between their children, and :ref:`MarginContainer ` stores its customizable margins in its theme items." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:145 -msgid "Download these assets (:download:`skin_assets.zip `) and add them to your project. Open the theme editor, click on \"Edit Theme\" and select \"Add Class Items\":" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:151 -msgid "A menu will appear prompting the type of control to create. Select \"Button\":" +#: ../../docs/tutorials/gui/gui_skinning.rst:150 +msgid "Whenever a control has a local theme item override, this is the value that it uses. Values provided by the theme are ignored." msgstr "" #: ../../docs/tutorials/gui/gui_skinning.rst:156 -msgid "Immediately, all button theme options will appear in the property editor, where they can be edited:" +msgid "Customizing a project" msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:161 -msgid "From ``Styles``, open the \"Normal\" drop-down menu next to where it probably says \"null\" and create a \"New StyleBoxTexture\", then edit it. A texture stylebox contains a texture and the size of the margins that will not stretch when the texture is stretched. This is called nine-patch or \"3x3\" stretching:" +#: ../../docs/tutorials/gui/gui_skinning.rst:158 +msgid "Out of the box each project adopts the default project theme provided by Godot. The default theme itself is constant and cannot be changed, but its items can be overridden with a custom theme. Custom themes can be applied in two ways: as a project setting, and as a node property throughout the tree of control nodes." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:169 -msgid "Repeat the steps and add the other assets. There is no hover or disabled image in the example files, so use the same stylebox as in normal. Set the supplied font as the button font and change the font color to black. Soon, your button will look different and retro:" +#: ../../docs/tutorials/gui/gui_skinning.rst:163 +msgid "There are two project settings that can be adjusted to affect your entire project: :ref:`gui/theme/custom` allows you to set a custom project-wide theme, and :ref:`gui/theme/custom_font` does the same to the default fallback font. When a theme item is requested by a control node the custom project theme, if present, is checked first. Only if it doesn't have the item the default theme is checked." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:176 -msgid "Save this theme to the .theme file. Go to the 2D editor and create a few buttons:" +#: ../../docs/tutorials/gui/gui_skinning.rst:170 +msgid "This allows you to configure the default look of every Godot control with a single theme resource, but you can go more granular than that. Every control node also has a :ref:`theme ` property, which allows you to set a custom theme for the branch of nodes starting with that control. This means that the control and all of its children, and their children in turn, would first check that custom theme resource before falling back on the project and the default themes." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:181 -msgid "Now, go to the root node of the scene and locate the \"theme\" property, replace it with the theme that was just created. It should look like this:" +#: ../../docs/tutorials/gui/gui_skinning.rst:178 +msgid "Instead of changing the project setting you can set the custom theme resource to the root-most control node of your entire UI branch to almost the same effect. While in the running project it will behave as expected, individual scenes will still display using the default theme when previewing or running them directly. To fix that you can set the same theme resource to the root control of each individual scene." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:186 -msgid "Congratulations! You have created a reusable GUI Theme!" +#: ../../docs/tutorials/gui/gui_skinning.rst:184 +msgid "For example, you can have a certain style for buttons in your project theme, but want a different look for buttons inside of a popup dialog. You can set a custom theme resource to the root control of your popup and define a different style for buttons within that resource. As long as the chain of control nodes between the root of the popup and the buttons is uninterrupted, those buttons will use the styles defined in the theme resource that is closest to them. All other controls will still be styled using the project-wide theme and the default theme styles." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:192 +msgid "To sum it up, for an arbitrary control its theme item lookup would look something like this:" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:195 +msgid "Check for local overrides of the same data type and name." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:196 +msgid "Using control's class name and parent class names:" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:198 +msgid "Check every control starting from itself and see if it has a theme property set;" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:199 +msgid "If it does, check that theme for the matching item of the same name, data and theme type;" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:200 +msgid "If there is no custom theme or it doesn't have the item, move to the parent control;" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:201 +msgid "Repeat steps a-c. until the root of the tree is reached, or a non-control node is reached." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:203 +msgid "Using control's class name check the project-wide theme, if it's present." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:204 +msgid "Using control's class name check the default theme." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:206 +msgid "Even if the item doesn't exist in any theme, a corresponding default value for that data type will be returned." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:210 +msgid "Beyond controls" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:212 +msgid "Naturally, themes are an ideal type of resource for storing configuration for something visual. While the support for theming is built into control nodes, other nodes can use them as well, just like any other resource." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:216 +msgid "An example of using themes for something beyond controls can be a modulation of sprites for the same units on different teams in a strategy game. A theme resource can define a collection of colors, and sprites (with a help from scripts) can use those colors to draw the texture. The main benefit being that you could make different themes using the same theme items for red, blue, and green teams, and swap them with a single resource change." msgstr "" diff --git a/sphinx/templates/tutorials/gui/gui_using_theme_editor.pot b/sphinx/templates/tutorials/gui/gui_using_theme_editor.pot new file mode 100644 index 0000000000..a6d1a229d3 --- /dev/null +++ b/sphinx/templates/tutorials/gui/gui_using_theme_editor.pot @@ -0,0 +1,117 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:4 +msgid "Using the theme editor" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:6 +msgid "This articles explains how to create and manage UI themes using the Godot editor and its theme editor tool. We recommend getting familiar with the basics behind GUI skinning/theming by reading :ref:`doc_gui_skinning` before starting." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:10 +msgid "The theme editor is a bottom panel tool that activates automatically, when a :ref:`Theme ` resource is selected for editing. It contains the necessary UI for adding, removing, and adjusting theme types and theme items. It features a preview section for testing your changes live, as well as a window dialog for doing bulk operations of the theme items." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:17 +msgid "Creating a theme" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:19 +msgid "Like any other resources, themes can be created directly in the file system dock by right-clicking and selecting **New Resource...**, then selecting **Theme** and clicking **Create**. This is especially useful for creating project-wide themes." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:24 +msgid "Themes also can be created from any control node. Select a control node in the scene hierarchy, then in the inspector go to the ``theme`` property. From there you can select **New Theme**." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:31 +msgid "This will create an empty theme and open up the theme editor. Keep in mind that resources created this way are bundled with the scene by default. Use the context menu to save the new theme to a file instead." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:35 +msgid "While the theme editor provides the tools to manage theme types and items, themes also include the default, fallback font that you can edit only using the Inspector dock. Same applies to the contents of complex resource types, such as :ref:`StyleBoxes ` and icons — they open for editing in the Inspector." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:44 +msgid "Theme editor overview" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:49 +msgid "The theme editor has two main parts. The main theme editor, located at the bottom of the Godot editor, aims to provide users with tools to quickly create, edit, and delete theme items and types. It gives visual tools for picking and changing controls, abstracting the underlying theme concepts. The **Manage Theme Items** dialog, on the other hand, tries to address the needs of those who want to change themes manually. It's also useful for creating a new editor theme." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:57 +msgid "Theme previews" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:59 +msgid "The left-hand side of the main editor has a set of preview tabs. The **Default Preview** tab is visible out of the box and contains most of the frequently used controls in various states. Previews are interactive, so intermediate states (e.g. hover) can be previewed as well." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:66 +msgid "Additional tabs can be created from arbitrary scenes in your project. The scene must have a control node as its root to function as a preview. To add a new tab click the **Add Preview** button and select the saved scene from your file system." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:73 +msgid "If you make changes to the scene, they will not be reflected in the preview automatically. To update the preview click the reload button on the toolbar." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:76 +msgid "Previews can also be used to quickly select the theme type to edit. Select the picker tool from the toolbar and hover over the preview area to highlight control nodes. Highlighted control nodes display their class name. Clicking on the highlighted control opens it for editing on the right-hand side." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:85 +msgid "Theme types and items" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:87 +msgid "The right-hand side of them theme editor provides a list of theme types available in the edited theme resource, and the contents of the selected type. The list of type's items is divided into several tabs, corresponding to each data type available in the theme (colors, constants, styles, etc.). If the **Show Default** option is enabled, then for each built-in type its default theme values are displayed, greyed out. If the option is disabled, only the items available in the edited theme itself are displayed." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:98 +msgid "Individual items from the default theme can be added to the current theme by clicking on the **Override** button next to the item. You can also override all the default items of the selected theme type by clicking on the **Override All** button. Overridden properties can then be removed with the **Remove Item** button. Properties can also be renamed using the **Rename Item** button, and completely custom properties can be added to the list using the text field below it." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:105 +msgid "Overridden theme items can be edited directly in the right-hand panel, unless they are resources. Resources have rudimentary controls available for them, but must be edited in the Inspector dock instead." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:112 +msgid "Styleboxes have an unique feature available, where you can pin an individual stylebox from the list. Pinned stylebox acts like the leader of the pack, and all styleboxes of the same type are updated alongside it when you change its properties. This allows you to edit properties of several styleboxes at the same time." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:121 +msgid "While theme types can be picked from a preview, they can also be added manually. Clicking the plus button next to the type list opens the **Add item Type** menu. In that menu you can either select a type from the list, or you can enter an arbitrary name to create a custom type. Text field also filters the list of control nodes." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:131 +msgid "Manage and import items" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:133 +msgid "Clicking the **Manage Items** button brings up the **Manage Theme Items** dialog. In the **Edit Items** tab you can view and add theme types, as well as view and edit the theme items of the selected type." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:140 +msgid "You can create, rename and remove individual theme items here by clicking the corresponding **Add X Item** and specifying their name. You can also mass delete theme items either by their data type (using the brush icon in the list) or by their quality. **Remove Class Items** will remove all built-in theme items you have customized for a control node type. **Remove Custom Items** will remove all the custom theme items for the selected type. Finally, **Remove All Items** will remove everything from the type." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:148 +msgid "From the **Import Items** tab you can import theme items from other themes. You can import items from the default Godot theme, the Godot editor theme, or another custom theme. You can import individual or multiple items, and you can decide whether to copy or omit their data as well. There are several way you can select and deselect the items, including by hand, by hierarchy, by data type, and everything. Opting to include the data will copy all theme items as they are to your theme. Omitting the data will create the items of the corresponding data type and name, but will leave them empty, creating a template of a theme in a way." +msgstr "" diff --git a/sphinx/templates/tutorials/gui/index.pot b/sphinx/templates/tutorials/gui/index.pot index 632496a2fd..aebf091e39 100644 --- a/sphinx/templates/tutorials/gui/index.pot +++ b/sphinx/templates/tutorials/gui/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -16,6 +16,78 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../../docs/tutorials/gui/index.rst:2 -msgid "GUI" +#: ../../docs/tutorials/gui/index.rst:4 +msgid "User Interface (UI)" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:6 +msgid "In this section of the tutorial we explain the basics of creating a graphical user interface (GUI) in Godot." +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:10 +msgid "UI building blocks" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:12 +msgid "Like everything else in Godot the user interface is built using nodes, specifically :ref:`Control ` nodes. There are many different types of controls which are useful for creating specific types of the GUI. For simplicity we can separate them into two groups: content and layout." +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:17 +msgid "Typical content controls include:" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:19 +msgid ":ref:`Buttons `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:20 +msgid ":ref:`Labels `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:21 +msgid ":ref:`LineEdits ` and :ref:`TextEdits `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:23 +msgid "Typical layout controls include:" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:25 +msgid ":ref:`BoxContainers `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:26 +msgid ":ref:`MarginContainers `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:27 +msgid ":ref:`ScrollContainers `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:28 +msgid ":ref:`TabContainers `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:29 +msgid ":ref:`Popups `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:31 +msgid "The following pages explain the basics of using such controls." +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:44 +msgid "GUI skinning and themes" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:46 +msgid "Godot features an in-depth skinning/theming system for control nodes. The pages in this section explain the benefits of that system and how to set it up in your projects." +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:57 +msgid "Control node tutorials" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:59 +msgid "The following articles cover specific details of using particular control nodes." msgstr "" diff --git a/sphinx/templates/tutorials/gui/size_and_anchors.pot b/sphinx/templates/tutorials/gui/size_and_anchors.pot index 173e85aa86..1c16e99716 100644 --- a/sphinx/templates/tutorials/gui/size_and_anchors.pot +++ b/sphinx/templates/tutorials/gui/size_and_anchors.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/i18n/index.pot b/sphinx/templates/tutorials/i18n/index.pot index 68b432eb67..47cfcb3607 100644 --- a/sphinx/templates/tutorials/i18n/index.pot +++ b/sphinx/templates/tutorials/i18n/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/i18n/internationalizing_games.pot b/sphinx/templates/tutorials/i18n/internationalizing_games.pot index 79a11fd214..20dc0a3bb7 100644 --- a/sphinx/templates/tutorials/i18n/internationalizing_games.pot +++ b/sphinx/templates/tutorials/i18n/internationalizing_games.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/i18n/locales.pot b/sphinx/templates/tutorials/i18n/locales.pot index d411f1a160..41d08ac517 100644 --- a/sphinx/templates/tutorials/i18n/locales.pot +++ b/sphinx/templates/tutorials/i18n/locales.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/i18n/localization_using_gettext.pot b/sphinx/templates/tutorials/i18n/localization_using_gettext.pot index d6367db510..00bdee9e01 100644 --- a/sphinx/templates/tutorials/i18n/localization_using_gettext.pot +++ b/sphinx/templates/tutorials/i18n/localization_using_gettext.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/inputs/controllers_gamepads_joysticks.pot b/sphinx/templates/tutorials/inputs/controllers_gamepads_joysticks.pot index b74de01b14..d8b34a59f0 100644 --- a/sphinx/templates/tutorials/inputs/controllers_gamepads_joysticks.pot +++ b/sphinx/templates/tutorials/inputs/controllers_gamepads_joysticks.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot b/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot index d8461bfbdb..3551a41a4e 100644 --- a/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot +++ b/sphinx/templates/tutorials/inputs/custom_mouse_cursor.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/inputs/index.pot b/sphinx/templates/tutorials/inputs/index.pot index 0244d48671..ceab19e3b3 100644 --- a/sphinx/templates/tutorials/inputs/index.pot +++ b/sphinx/templates/tutorials/inputs/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/inputs/input_examples.pot b/sphinx/templates/tutorials/inputs/input_examples.pot index 1614507b46..2d825d6c07 100644 --- a/sphinx/templates/tutorials/inputs/input_examples.pot +++ b/sphinx/templates/tutorials/inputs/input_examples.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/inputs/inputevent.pot b/sphinx/templates/tutorials/inputs/inputevent.pot index 0a27852139..1676560569 100644 --- a/sphinx/templates/tutorials/inputs/inputevent.pot +++ b/sphinx/templates/tutorials/inputs/inputevent.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -33,7 +33,7 @@ msgid "Here is a quick example, closing your game if the escape key is hit:" msgstr "" #: ../../docs/tutorials/inputs/inputevent.rst:34 -msgid "However, it is cleaner and more flexible to use the provided :ref:`InputMap ` feature, which allows you to define input actions and assign them different keys. This way, you can define multiple keys for the same action (e.g. they keyboard escape key and the start button on a gamepad). You can then more easily change this mapping in the project settings without updating your code, and even build a key mapping feature on top of it to allow your game to change the key mapping at runtime!" +msgid "However, it is cleaner and more flexible to use the provided :ref:`InputMap ` feature, which allows you to define input actions and assign them different keys. This way, you can define multiple keys for the same action (e.g. the keyboard escape key and the start button on a gamepad). You can then more easily change this mapping in the project settings without updating your code, and even build a key mapping feature on top of it to allow your game to change the key mapping at runtime!" msgstr "" #: ../../docs/tutorials/inputs/inputevent.rst:40 diff --git a/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot b/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot index d904125dd1..ae192313f6 100644 --- a/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot +++ b/sphinx/templates/tutorials/inputs/mouse_and_input_coordinates.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/io/background_loading.pot b/sphinx/templates/tutorials/io/background_loading.pot index c3c2b3a167..1408959603 100644 --- a/sphinx/templates/tutorials/io/background_loading.pot +++ b/sphinx/templates/tutorials/io/background_loading.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/io/data_paths.pot b/sphinx/templates/tutorials/io/data_paths.pot index 774de48602..4fb8ec5651 100644 --- a/sphinx/templates/tutorials/io/data_paths.pot +++ b/sphinx/templates/tutorials/io/data_paths.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/io/index.pot b/sphinx/templates/tutorials/io/index.pot index 1ffa23cd84..e1b5e8b814 100644 --- a/sphinx/templates/tutorials/io/index.pot +++ b/sphinx/templates/tutorials/io/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/io/saving_games.pot b/sphinx/templates/tutorials/io/saving_games.pot index ca3f301843..c020c4dde5 100644 --- a/sphinx/templates/tutorials/io/saving_games.pot +++ b/sphinx/templates/tutorials/io/saving_games.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/legal/complying_with_licenses.pot b/sphinx/templates/tutorials/legal/complying_with_licenses.pot index cfda1cb800..c1b6a918aa 100644 --- a/sphinx/templates/tutorials/legal/complying_with_licenses.pot +++ b/sphinx/templates/tutorials/legal/complying_with_licenses.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -53,17 +53,17 @@ msgid "Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. Copyright (c) 2014- msgstr "" #: ../../docs/tutorials/legal/complying_with_licenses.rst:32 -#: ../../docs/tutorials/legal/complying_with_licenses.rst:118 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:121 msgid "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:" msgstr "" #: ../../docs/tutorials/legal/complying_with_licenses.rst:34 -#: ../../docs/tutorials/legal/complying_with_licenses.rst:120 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:123 msgid "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software." msgstr "" #: ../../docs/tutorials/legal/complying_with_licenses.rst:36 -#: ../../docs/tutorials/legal/complying_with_licenses.rst:122 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:125 msgid "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE." msgstr "" @@ -151,42 +151,46 @@ msgstr "" msgid "Portions of this software are copyright © The FreeType Project (www.freetype.org). All rights reserved." msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:110 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:109 +msgid "Note that should correspond to the value from the FreeType version used in your build." +msgstr "" + +#: ../../docs/tutorials/legal/complying_with_licenses.rst:113 msgid "ENet" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:112 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:115 msgid "Godot includes the `ENet `_ library to handle high-level multiplayer. ENet has similar licensing terms as Godot:" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:116 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:119 msgid "Copyright (c) 2002-2020 Lee Salzman" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:125 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:128 msgid "MBedTLS" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:127 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:130 msgid "If the project is done with Godot 3.1 or above and it utilizes SSL (usually through HTTP requests), the `MBedTLS `_ Apache license needs to be complied by including the following text:" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:131 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:134 msgid "Copyright The Mbed TLS Contributors" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:133 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:136 msgid "Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:137 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:140 msgid "http://www.apache.org/licenses/LICENSE-2.0" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:139 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:142 msgid "Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:145 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:148 msgid "Keep in mind that Godot 2.x and 3.0 use `OpenSSL `_ instead." msgstr "" diff --git a/sphinx/templates/tutorials/legal/index.pot b/sphinx/templates/tutorials/legal/index.pot index 26df1c7679..46b2e3e1f6 100644 --- a/sphinx/templates/tutorials/legal/index.pot +++ b/sphinx/templates/tutorials/legal/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/math/beziers_and_curves.pot b/sphinx/templates/tutorials/math/beziers_and_curves.pot index be1d570598..dd1684536b 100644 --- a/sphinx/templates/tutorials/math/beziers_and_curves.pot +++ b/sphinx/templates/tutorials/math/beziers_and_curves.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -44,159 +44,159 @@ msgstr "" msgid "To draw a curve between them, we first interpolate gradually over the two vertices of each of the two segments formed by the three points, using values ranging from 0 to 1. This gives us two points that move along the segments as we change the value of ``t`` from 0 to 1." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:37 +#: ../../docs/tutorials/math/beziers_and_curves.rst:45 msgid "We then interpolate ``q0`` and ``q1`` to obtain a single point ``r`` that moves along a curve." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:46 +#: ../../docs/tutorials/math/beziers_and_curves.rst:59 msgid "This type of is called a *Quadratic Bezier* curve." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:50 -#: ../../docs/tutorials/math/beziers_and_curves.rst:114 +#: ../../docs/tutorials/math/beziers_and_curves.rst:63 +#: ../../docs/tutorials/math/beziers_and_curves.rst:165 msgid "*(Image credit: Wikipedia)*" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:53 +#: ../../docs/tutorials/math/beziers_and_curves.rst:66 msgid "Cubic Bezier" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:55 +#: ../../docs/tutorials/math/beziers_and_curves.rst:68 msgid "Building upon the previous example, we can get more control by interpolating between four points." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:60 +#: ../../docs/tutorials/math/beziers_and_curves.rst:73 msgid "We first use a function with four parameters to take four points as an input, ``p0``, ``p1``, ``p2`` and ``p3``:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:68 +#: ../../docs/tutorials/math/beziers_and_curves.rst:88 msgid "We apply a linear interpolation to each couple of points to reduce them to three:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:78 +#: ../../docs/tutorials/math/beziers_and_curves.rst:104 msgid "We then take our three points and reduce them to two:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:86 +#: ../../docs/tutorials/math/beziers_and_curves.rst:117 msgid "And to one:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:94 +#: ../../docs/tutorials/math/beziers_and_curves.rst:130 msgid "Here is the full function:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:110 +#: ../../docs/tutorials/math/beziers_and_curves.rst:161 msgid "The result will be a smooth curve interpolating between all four points:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:116 +#: ../../docs/tutorials/math/beziers_and_curves.rst:167 msgid "Cubic Bezier interpolation works the same in 3D, just use ``Vector3`` instead of ``Vector2``." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:120 +#: ../../docs/tutorials/math/beziers_and_curves.rst:171 msgid "Adding control points" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:122 +#: ../../docs/tutorials/math/beziers_and_curves.rst:173 msgid "Building upon Cubic Bezier, we can change the way two of the points work to control the shape of our curve freely. Instead of having ``p0``, ``p1``, ``p2`` and ``p3``, we will store them as:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:126 +#: ../../docs/tutorials/math/beziers_and_curves.rst:177 msgid "``point0 = p0``: Is the first point, the source" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:127 +#: ../../docs/tutorials/math/beziers_and_curves.rst:178 msgid "``control0 = p1 - p0``: Is a vector relative to the first control point" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:128 +#: ../../docs/tutorials/math/beziers_and_curves.rst:179 msgid "``control1 = p3 - p2``: Is a vector relative to the second control point" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:129 +#: ../../docs/tutorials/math/beziers_and_curves.rst:180 msgid "``point1 = p3``: Is the second point, the destination" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:131 +#: ../../docs/tutorials/math/beziers_and_curves.rst:182 msgid "This way, we have two points and two control points which are relative vectors to the respective points. If you've used graphics or animation software before, this might look familiar:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:137 +#: ../../docs/tutorials/math/beziers_and_curves.rst:188 msgid "This is how graphics software presents Bezier curves to the users, and how they work and look in Godot." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:141 +#: ../../docs/tutorials/math/beziers_and_curves.rst:192 msgid "Curve2D, Curve3D, Path and Path2D" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:143 +#: ../../docs/tutorials/math/beziers_and_curves.rst:194 msgid "There are two objects that contain curves: :ref:`Curve3D ` and :ref:`Curve2D ` (for 3D and 2D respectively)." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:145 +#: ../../docs/tutorials/math/beziers_and_curves.rst:196 msgid "They can contain several points, allowing for longer paths. It is also possible to set them to nodes: :ref:`Path ` and :ref:`Path2D ` (also for 3D and 2D respectively):" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:149 +#: ../../docs/tutorials/math/beziers_and_curves.rst:200 msgid "Using them, however, may not be completely obvious, so following is a description of the most common use cases for Bezier curves." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:152 +#: ../../docs/tutorials/math/beziers_and_curves.rst:203 msgid "Evaluating" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:154 +#: ../../docs/tutorials/math/beziers_and_curves.rst:205 msgid "Just evaluating them may be an option, but in most cases it's not very useful. The big drawback with Bezier curves is that if you traverse them at constant speed, from ``t = 0`` to ``t = 1``, the actual interpolation will *not* move at constant speed. The speed is also an interpolation between the distances between points ``p0``, ``p1``, ``p2`` and ``p3`` and there is not a mathematically simple way to traverse the curve at constant speed." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:156 +#: ../../docs/tutorials/math/beziers_and_curves.rst:207 msgid "Let's do a simple example with the following pseudocode:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:170 +#: ../../docs/tutorials/math/beziers_and_curves.rst:230 msgid "As you can see, the speed (in pixels per second) of the circle varies, even though ``t`` is increased at constant speed. This makes beziers difficult to use for anything practical out of the box." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:173 +#: ../../docs/tutorials/math/beziers_and_curves.rst:233 msgid "Drawing" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:175 +#: ../../docs/tutorials/math/beziers_and_curves.rst:235 msgid "Drawing beziers (or objects based on the curve) is a very common use case, but it's also not easy. For pretty much any case, Bezier curves need to be converted to some sort of segments. This is normally difficult, however, without creating a very high amount of them." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:177 +#: ../../docs/tutorials/math/beziers_and_curves.rst:237 msgid "The reason is that some sections of a curve (specifically, corners) may require considerable amounts of points, while other sections may not:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:181 +#: ../../docs/tutorials/math/beziers_and_curves.rst:241 msgid "Additionally, if both control points were ``0, 0`` (remember they are relative vectors), the Bezier curve would just be a straight line (so drawing a high amount of points would be wasteful)." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:183 +#: ../../docs/tutorials/math/beziers_and_curves.rst:243 msgid "Before drawing Bezier curves, *tessellation* is required. This is often done with a recursive or divide and conquer function that splits the curve until the curvature amount becomes less than a certain threshold." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:185 +#: ../../docs/tutorials/math/beziers_and_curves.rst:245 msgid "The *Curve* classes provide this via the :ref:`Curve2D.tessellate() ` function (which receives optional ``stages`` of recursion and angle ``tolerance`` arguments). This way, drawing something based on a curve is easier." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:189 +#: ../../docs/tutorials/math/beziers_and_curves.rst:249 msgid "Traversal" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:191 +#: ../../docs/tutorials/math/beziers_and_curves.rst:251 msgid "The last common use case for the curves is to traverse them. Because of what was mentioned before regarding constant speed, this is also difficult." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:193 +#: ../../docs/tutorials/math/beziers_and_curves.rst:253 msgid "To make this easier, the curves need to be *baked* into equidistant points. This way, they can be approximated with regular interpolation (which can be improved further with a cubic option). To do this, just use the :ref:`Curve.interpolate_baked()` method together with :ref:`Curve2D.get_baked_length()`. The first call to either of them will bake the curve internally." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:196 +#: ../../docs/tutorials/math/beziers_and_curves.rst:256 msgid "Traversal at constant speed, then, can be done with the following pseudo-code:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:207 +#: ../../docs/tutorials/math/beziers_and_curves.rst:277 msgid "And the output will, then, move at constant speed:" msgstr "" diff --git a/sphinx/templates/tutorials/math/index.pot b/sphinx/templates/tutorials/math/index.pot index eee75ad0ec..e6858aaf55 100644 --- a/sphinx/templates/tutorials/math/index.pot +++ b/sphinx/templates/tutorials/math/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/math/interpolation.pot b/sphinx/templates/tutorials/math/interpolation.pot index e396f5dc68..b684eb30fa 100644 --- a/sphinx/templates/tutorials/math/interpolation.pot +++ b/sphinx/templates/tutorials/math/interpolation.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -36,70 +36,70 @@ msgstr "" msgid "Between two real (floating-point) numbers, a simple interpolation is usually described as:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:19 +#: ../../docs/tutorials/math/interpolation.rst:18 msgid "And often simplified to:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:26 +#: ../../docs/tutorials/math/interpolation.rst:24 msgid "The name of this type of interpolation, which transforms a value into another at *constant speed* is *\"linear\"*. So, when you hear about *Linear Interpolation*, you know they are referring to this simple formula." msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:28 +#: ../../docs/tutorials/math/interpolation.rst:26 msgid "There are other types of interpolations, which will not be covered here. A recommended read afterwards is the :ref:`Bezier ` page." msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:31 +#: ../../docs/tutorials/math/interpolation.rst:29 msgid "Vector interpolation" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:33 +#: ../../docs/tutorials/math/interpolation.rst:31 msgid "Vector types (:ref:`Vector2 ` and :ref:`Vector3 `) can also be interpolated, they come with handy functions to do it :ref:`Vector2.linear_interpolate() ` and :ref:`Vector3.linear_interpolate() `." msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:36 +#: ../../docs/tutorials/math/interpolation.rst:34 msgid "For cubic interpolation, there are also :ref:`Vector2.cubic_interpolate() ` and :ref:`Vector3.cubic_interpolate() `, which do a :ref:`Bezier ` style interpolation." msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:38 +#: ../../docs/tutorials/math/interpolation.rst:36 msgid "Here is simple pseudo-code for going from point A to B using interpolation:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:48 +#: ../../docs/tutorials/math/interpolation.rst:63 msgid "It will produce the following motion:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:53 +#: ../../docs/tutorials/math/interpolation.rst:68 msgid "Transform interpolation" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:55 +#: ../../docs/tutorials/math/interpolation.rst:70 msgid "It is also possible to interpolate whole transforms (make sure they have either uniform scale or, at least, the same non-uniform scale). For this, the function :ref:`Transform.interpolate_with() ` can be used." msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:58 +#: ../../docs/tutorials/math/interpolation.rst:73 msgid "Here is an example of transforming a monkey from Position1 to Position2:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:62 +#: ../../docs/tutorials/math/interpolation.rst:77 msgid "Using the following pseudocode:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:74 +#: ../../docs/tutorials/math/interpolation.rst:104 msgid "And again, it will produce the following motion:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:80 +#: ../../docs/tutorials/math/interpolation.rst:110 msgid "Smoothing motion" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:82 +#: ../../docs/tutorials/math/interpolation.rst:112 msgid "Interpolation can be used to smooth movement, rotation, etc. Here is an example of a circle following the mouse using smoothed motion:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:94 +#: ../../docs/tutorials/math/interpolation.rst:137 msgid "Here is how it looks:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:98 +#: ../../docs/tutorials/math/interpolation.rst:141 msgid "This useful for smoothing camera movement, allies following you (ensuring they stay within a certain range), and many other common game patterns." msgstr "" diff --git a/sphinx/templates/tutorials/math/matrices_and_transforms.pot b/sphinx/templates/tutorials/math/matrices_and_transforms.pot index de8cc6171c..b169d179e8 100644 --- a/sphinx/templates/tutorials/math/matrices_and_transforms.pot +++ b/sphinx/templates/tutorials/math/matrices_and_transforms.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/math/random_number_generation.pot b/sphinx/templates/tutorials/math/random_number_generation.pot index e79eeee4a1..d0f097fc03 100644 --- a/sphinx/templates/tutorials/math/random_number_generation.pot +++ b/sphinx/templates/tutorials/math/random_number_generation.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -61,101 +61,101 @@ msgid "In global scope, you can find a :ref:`randomize() `. Doing so will give you *deterministic* results across runs::" +#: ../../docs/tutorials/math/random_number_generation.rst:60 +msgid "You can also set a fixed random seed instead using :ref:`seed() `. Doing so will give you *deterministic* results across runs:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:59 -msgid "When using the RandomNumberGenerator class, you should call ``randomize()`` on the instance since it has its own seed::" +#: ../../docs/tutorials/math/random_number_generation.rst:80 +msgid "When using the RandomNumberGenerator class, you should call ``randomize()`` on the instance since it has its own seed:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:66 +#: ../../docs/tutorials/math/random_number_generation.rst:95 msgid "Getting a random number" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:68 +#: ../../docs/tutorials/math/random_number_generation.rst:97 msgid "Let's look at some of the most commonly used functions and methods to generate random numbers in Godot." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:71 -msgid "The function :ref:`randi() ` returns a random number between 0 and 2^32-1. Since the maximum value is huge, you most likely want to use the modulo operator (``%``) to bound the result between 0 and the denominator::" +#: ../../docs/tutorials/math/random_number_generation.rst:100 +msgid "The function :ref:`randi() ` returns a random number between 0 and 2^32-1. Since the maximum value is huge, you most likely want to use the modulo operator (``%``) to bound the result between 0 and the denominator:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:82 +#: ../../docs/tutorials/math/random_number_generation.rst:122 msgid ":ref:`randf() ` returns a random floating-point number between 0 and 1. This is useful to implement a :ref:`doc_random_number_generation_weighted_random_probability` system, among other things." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:87 -msgid ":ref:`randfn() ` returns a random floating-point number following a `normal distribution `__. This means the returned value is more likely to be around the mean (0.0 by default), varying by the deviation (1.0 by default)::" +#: ../../docs/tutorials/math/random_number_generation.rst:127 +msgid ":ref:`randfn() ` returns a random floating-point number following a `normal distribution `__. This means the returned value is more likely to be around the mean (0.0 by default), varying by the deviation (1.0 by default):" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:97 -msgid ":ref:`rand_range() ` takes two arguments ``from`` and ``to``, and returns a random floating-point number between ``from`` and ``to``::" +#: ../../docs/tutorials/math/random_number_generation.rst:148 +msgid ":ref:`rand_range() ` takes two arguments ``from`` and ``to``, and returns a random floating-point number between ``from`` and ``to``:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:104 -msgid ":ref:`RandomNumberGenerator.randi_range() ` takes two arguments ``from`` and ``to``, and returns a random integer between ``from`` and ``to``::" +#: ../../docs/tutorials/math/random_number_generation.rst:163 +msgid ":ref:`RandomNumberGenerator.randi_range() ` takes two arguments ``from`` and ``to``, and returns a random integer between ``from`` and ``to``:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:114 +#: ../../docs/tutorials/math/random_number_generation.rst:182 msgid "Get a random array element" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:116 -msgid "We can use random integer generation to get a random element from an array::" +#: ../../docs/tutorials/math/random_number_generation.rst:184 +msgid "We can use random integer generation to get a random element from an array:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:136 -msgid "To prevent the same fruit from being picked more than once in a row, we can add more logic to this method::" +#: ../../docs/tutorials/math/random_number_generation.rst:228 +msgid "To prevent the same fruit from being picked more than once in a row, we can add more logic to this method:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:167 +#: ../../docs/tutorials/math/random_number_generation.rst:293 msgid "This approach can be useful to make random number generation feel less repetitive. Still, it doesn't prevent results from \"ping-ponging\" between a limited set of values. To prevent this, use the :ref:`shuffle bag ` pattern instead." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:173 +#: ../../docs/tutorials/math/random_number_generation.rst:299 msgid "Get a random dictionary value" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:175 -msgid "We can apply similar logic from arrays to dictionaries as well::" +#: ../../docs/tutorials/math/random_number_generation.rst:301 +msgid "We can apply similar logic from arrays to dictionaries as well:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:201 +#: ../../docs/tutorials/math/random_number_generation.rst:329 msgid "Weighted random probability" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:203 -msgid "The :ref:`randf() ` method returns a floating-point number between 0.0 and 1.0. We can use this to create a \"weighted\" probability where different outcomes have different likelihoods::" +#: ../../docs/tutorials/math/random_number_generation.rst:331 +msgid "The :ref:`randf() ` method returns a floating-point number between 0.0 and 1.0. We can use this to create a \"weighted\" probability where different outcomes have different likelihoods:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:230 +#: ../../docs/tutorials/math/random_number_generation.rst:394 msgid "\"Better\" randomness using shuffle bags" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:232 +#: ../../docs/tutorials/math/random_number_generation.rst:396 msgid "Taking the same example as above, we would like to pick fruits at random. However, relying on random number generation every time a fruit is selected can lead to a less *uniform* distribution. If the player is lucky (or unlucky), they could get the same fruit three or more times in a row." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:237 +#: ../../docs/tutorials/math/random_number_generation.rst:401 msgid "You can accomplish this using the *shuffle bag* pattern. It works by removing an element from the array after choosing it. After multiple selections, the array ends up empty. When that happens, you reinitialize it to its default value::" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:267 +#: ../../docs/tutorials/math/random_number_generation.rst:431 msgid "When running the above code, there is a chance to get the same fruit twice in a row. Once we picked a fruit, it will no longer be a possible return value unless the array is now empty. When the array is empty, we reset it back to its default value, making it possible to have the same fruit again, but only once." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:273 +#: ../../docs/tutorials/math/random_number_generation.rst:437 msgid "Random noise" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:275 +#: ../../docs/tutorials/math/random_number_generation.rst:439 msgid "The random number generation shown above can show its limits when you need a value that *slowly* changes depending on the input. The input can be a position, time, or anything else." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:279 -msgid "To achieve this, you can use random *noise* functions. Noise functions are especially popular in procedural generation to generate realistic-looking terrain. Godot provides :ref:`class_opensimplexnoise` for this, which supports 1D, 2D, 3D, and 4D noise. Here's an example with 1D noise::" +#: ../../docs/tutorials/math/random_number_generation.rst:443 +msgid "To achieve this, you can use random *noise* functions. Noise functions are especially popular in procedural generation to generate realistic-looking terrain. Godot provides :ref:`class_opensimplexnoise` for this, which supports 1D, 2D, 3D, and 4D noise. Here's an example with 1D noise:" msgstr "" diff --git a/sphinx/templates/tutorials/math/vector_math.pot b/sphinx/templates/tutorials/math/vector_math.pot index 038b658d49..3470edd0ff 100644 --- a/sphinx/templates/tutorials/math/vector_math.pot +++ b/sphinx/templates/tutorials/math/vector_math.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/math/vectors_advanced.pot b/sphinx/templates/tutorials/math/vectors_advanced.pot index 8185f65d9a..5b64903fc5 100644 --- a/sphinx/templates/tutorials/math/vectors_advanced.pot +++ b/sphinx/templates/tutorials/math/vectors_advanced.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/binary_serialization_api.pot b/sphinx/templates/tutorials/misc/binary_serialization_api.pot index cfe586b954..4f68a0e8ef 100644 --- a/sphinx/templates/tutorials/misc/binary_serialization_api.pot +++ b/sphinx/templates/tutorials/misc/binary_serialization_api.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/change_scenes_manually.pot b/sphinx/templates/tutorials/misc/change_scenes_manually.pot index a064edbed5..9a2a00ef21 100644 --- a/sphinx/templates/tutorials/misc/change_scenes_manually.pot +++ b/sphinx/templates/tutorials/misc/change_scenes_manually.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/gles2_gles3_differences.pot b/sphinx/templates/tutorials/misc/gles2_gles3_differences.pot index 2336de96f2..c4611ddb4a 100644 --- a/sphinx/templates/tutorials/misc/gles2_gles3_differences.pot +++ b/sphinx/templates/tutorials/misc/gles2_gles3_differences.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/handling_quit_requests.pot b/sphinx/templates/tutorials/misc/handling_quit_requests.pot index d651ec4d56..645432cdbd 100644 --- a/sphinx/templates/tutorials/misc/handling_quit_requests.pot +++ b/sphinx/templates/tutorials/misc/handling_quit_requests.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/index.pot b/sphinx/templates/tutorials/misc/index.pot index 2826750092..00c834a251 100644 --- a/sphinx/templates/tutorials/misc/index.pot +++ b/sphinx/templates/tutorials/misc/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/instancing_with_signals.pot b/sphinx/templates/tutorials/misc/instancing_with_signals.pot index 69a370a0f4..3235feaac3 100644 --- a/sphinx/templates/tutorials/misc/instancing_with_signals.pot +++ b/sphinx/templates/tutorials/misc/instancing_with_signals.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/jitter_stutter.pot b/sphinx/templates/tutorials/misc/jitter_stutter.pot index 5022d9a0eb..4742ab1ec4 100644 --- a/sphinx/templates/tutorials/misc/jitter_stutter.pot +++ b/sphinx/templates/tutorials/misc/jitter_stutter.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/pausing_games.pot b/sphinx/templates/tutorials/misc/pausing_games.pot index 6b7e123ab7..d32f12d5d7 100644 --- a/sphinx/templates/tutorials/misc/pausing_games.pot +++ b/sphinx/templates/tutorials/misc/pausing_games.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/running_code_in_the_editor.pot b/sphinx/templates/tutorials/misc/running_code_in_the_editor.pot index e2c5b1ffb7..cbc264a45b 100644 --- a/sphinx/templates/tutorials/misc/running_code_in_the_editor.pot +++ b/sphinx/templates/tutorials/misc/running_code_in_the_editor.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/misc/state_design_pattern.pot b/sphinx/templates/tutorials/misc/state_design_pattern.pot index 249c9ac0a5..1668d56d9b 100644 --- a/sphinx/templates/tutorials/misc/state_design_pattern.pot +++ b/sphinx/templates/tutorials/misc/state_design_pattern.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/navigation/index.pot b/sphinx/templates/tutorials/navigation/index.pot new file mode 100644 index 0000000000..6c8876fd0f --- /dev/null +++ b/sphinx/templates/tutorials/navigation/index.pot @@ -0,0 +1,21 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/navigation/index.rst:2 +msgid "Navigation" +msgstr "" diff --git a/sphinx/templates/tutorials/navigation/real_time_navigation_3d.pot b/sphinx/templates/tutorials/navigation/real_time_navigation_3d.pot new file mode 100644 index 0000000000..431a21269f --- /dev/null +++ b/sphinx/templates/tutorials/navigation/real_time_navigation_3d.pot @@ -0,0 +1,93 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2014-2021, Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0) +# This file is distributed under the same license as the Godot Engine package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine 3.4\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:1 +msgid ".. _doc_real_time_navigation_3d:" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:4 +msgid "Real Time Navigation (3D)" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:7 +msgid "Introduction" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:9 +msgid "Godot provides two nodes which can be used to achieve real time navigation in a 3D environment, :ref:`Navigation ` and :ref:`NavigationMeshInstance `." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:12 +msgid "A navigation mesh instance is used to hold a :ref:`NavigationMesh `, which defines what areas in a scene can be navigated to. The :ref:`Navigation ` node is then used for pathfinding with the navigation mesh." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:17 +msgid "Setting up navigation" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:19 +msgid "To add navigation to a scene you need to add a navigation node, then a navigation mesh instance as a child of the navigation node. With the navigation mesh instance selected you need to go to the inspector and create a new navigation mesh." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:24 +msgid ".. image:: img/new_navigation_mesh.png" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:26 +msgid "Click on the navigation mesh and you can now alter the properties that define how the navigation mesh is generated. You can find a full description for each of the properties in the class reference here: :ref:`NavigationMesh `." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:31 +msgid "After making the changes you want the mesh can be generated by clicking **Bake NavMesh** in the toolbar." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:34 +msgid ".. image:: img/bake_navmesh.png" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:36 +msgid "Once the mesh has finished generating you should see the transparent navigation mesh above the areas in your scene that can be navigated to." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:39 +msgid ".. image:: img/baked_navmesh.png" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:41 +msgid "Keep in mind that the navmesh shows where the center of an entity can go. For example, if you set the agent radius to 0.5 then your navigation mesh will have a distance of 0.5 from any ledges or walls to prevent clipping into the wall or hanging off of the edge." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:47 +msgid "Generating a path" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:49 +msgid "To get a path between two areas on a map you use the navigation node method ``get_simple_path()``. The first argument is a Vector3 of the starting location, the next is a Vector3 of the end location. And the last argument is a boolean for whether or not agent properties of a navmesh are considered when generating a path." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:55 +msgid "The method will return a :ref:`PoolVector3Array ` consisting of points that make a path. If there is no way to navigate to the end location the method will return a blank :ref:`PoolVector3Array `." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:60 +msgid "Official example project" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:62 +msgid "There is an official example project on how to use 3D navigation. You can find the repository `here `__. It can also be found in the asset library." +msgstr "" diff --git a/sphinx/templates/tutorials/networking/high_level_multiplayer.pot b/sphinx/templates/tutorials/networking/high_level_multiplayer.pot index 8edb2f04bb..2fa2ea09fc 100644 --- a/sphinx/templates/tutorials/networking/high_level_multiplayer.pot +++ b/sphinx/templates/tutorials/networking/high_level_multiplayer.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/networking/http_client_class.pot b/sphinx/templates/tutorials/networking/http_client_class.pot index 763cf5c004..61582f03ae 100644 --- a/sphinx/templates/tutorials/networking/http_client_class.pot +++ b/sphinx/templates/tutorials/networking/http_client_class.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/networking/http_request_class.pot b/sphinx/templates/tutorials/networking/http_request_class.pot index fa841f06e8..be60048cb9 100644 --- a/sphinx/templates/tutorials/networking/http_request_class.pot +++ b/sphinx/templates/tutorials/networking/http_request_class.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/networking/index.pot b/sphinx/templates/tutorials/networking/index.pot index 9ac324d750..70451a69b3 100644 --- a/sphinx/templates/tutorials/networking/index.pot +++ b/sphinx/templates/tutorials/networking/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/networking/ssl_certificates.pot b/sphinx/templates/tutorials/networking/ssl_certificates.pot index ec872ab0e9..36130a7148 100644 --- a/sphinx/templates/tutorials/networking/ssl_certificates.pot +++ b/sphinx/templates/tutorials/networking/ssl_certificates.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/networking/webrtc.pot b/sphinx/templates/tutorials/networking/webrtc.pot index 6f35dba416..ba7695fb2c 100644 --- a/sphinx/templates/tutorials/networking/webrtc.pot +++ b/sphinx/templates/tutorials/networking/webrtc.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/networking/websocket.pot b/sphinx/templates/tutorials/networking/websocket.pot index 54f7e294c9..bbe2943c25 100644 --- a/sphinx/templates/tutorials/networking/websocket.pot +++ b/sphinx/templates/tutorials/networking/websocket.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/optimization/batching.pot b/sphinx/templates/tutorials/optimization/batching.pot index 1b82c3d082..c93a9f7fe4 100644 --- a/sphinx/templates/tutorials/optimization/batching.pot +++ b/sphinx/templates/tutorials/optimization/batching.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/optimization/cpu_optimization.pot b/sphinx/templates/tutorials/optimization/cpu_optimization.pot index 0fe75d2bf9..2ede9df03c 100644 --- a/sphinx/templates/tutorials/optimization/cpu_optimization.pot +++ b/sphinx/templates/tutorials/optimization/cpu_optimization.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/optimization/general_optimization.pot b/sphinx/templates/tutorials/optimization/general_optimization.pot index 0208e6ed1f..94afbbbd00 100644 --- a/sphinx/templates/tutorials/optimization/general_optimization.pot +++ b/sphinx/templates/tutorials/optimization/general_optimization.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/optimization/gpu_optimization.pot b/sphinx/templates/tutorials/optimization/gpu_optimization.pot index 4cc072b3e5..e2e41c3d69 100644 --- a/sphinx/templates/tutorials/optimization/gpu_optimization.pot +++ b/sphinx/templates/tutorials/optimization/gpu_optimization.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/optimization/index.pot b/sphinx/templates/tutorials/optimization/index.pot index f577c9e062..2c1a4e7004 100644 --- a/sphinx/templates/tutorials/optimization/index.pot +++ b/sphinx/templates/tutorials/optimization/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/optimization/optimizing_3d_performance.pot b/sphinx/templates/tutorials/optimization/optimizing_3d_performance.pot index c558e5cfb0..18ba36f102 100644 --- a/sphinx/templates/tutorials/optimization/optimizing_3d_performance.pot +++ b/sphinx/templates/tutorials/optimization/optimizing_3d_performance.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -45,113 +45,125 @@ msgid "Things aren't quite as bad as they seem, because the Z-buffer usually all msgstr "" #: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:33 -msgid "One way we can potentially reduce the amount to be rendered is to take advantage of occlusion. As of Godot 3.3, there is no built in support for occlusion in Godot. However, with careful design you can still get many of the advantages." +msgid "One way we can potentially reduce the amount to be rendered is to take advantage of occlusion." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:37 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:36 msgid "For instance, in our city street scenario, you may be able to work out in advance that you can only see two other streets, ``B`` and ``C``, from street ``A``. Streets ``D`` to ``Z`` are hidden. In order to take advantage of occlusion, all you have to do is work out when your viewer is in street ``A`` (perhaps using Godot Areas), then you can hide the other streets." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:43 -msgid "This is a manual version of what is known as a \"potentially visible set\". It is a very powerful technique for speeding up rendering. You can also use it to restrict physics or AI to the local area, and speed these up as well as rendering." +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:42 +msgid "This example is a manual version of what is known as a *potentially visible set*. It is a very powerful technique for speeding up rendering. You can also use it to restrict physics or AI to the local area, and speed these up as well as rendering." +msgstr "" + +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:48 +msgid "Portal Rendering" msgstr "" #: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:50 -msgid "In some cases, you may have to adapt your level design to add more occlusion opportunities. For example, you may have to add more walls to prevent the player from seeing too far away, which would decrease performance due to the lost opportunies for occlusion culling." +msgid "However, there is a much easier way to take advantage of occlusion. Godot features an advanced portal rendering system, which can perform occlusion culling from cameras and lights. See :ref:`doc_rooms_and_portals`." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:56 -msgid "Other occlusion techniques" +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:54 +msgid "This is not a fully automatic system and it requires some manual setup. However, it potentially offers significant performance increases." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:58 -msgid "There are other occlusion techniques such as portals, automatic PVS, and raster-based occlusion culling. Some of these may be available through add-ons and may be available in core Godot in the future." -msgstr "" - -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:63 -msgid "Transparent objects" +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:59 +msgid "In some cases, you can adapt your level design to add more occlusion opportunities. For example, you can add more walls to prevent the player from seeing too far away, which would decrease performance due to the lost opportunies for occlusion culling." msgstr "" #: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:65 +msgid "Other occlusion techniques" +msgstr "" + +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:67 +msgid "As well as the portal system and manual methods, there are various other occlusion techniques such as raster-based occlusion culling. Some of these may be available through add-ons or may be available in core Godot in the future." +msgstr "" + +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:72 +msgid "Transparent objects" +msgstr "" + +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:74 msgid "Godot sorts objects by :ref:`Material ` and :ref:`Shader ` to improve performance. This, however, can not be done with transparent objects. Transparent objects are rendered from back to front to make blending with what is behind work. As a result, **try to use as few transparent objects as possible**. If an object has a small section with transparency, try to make that section a separate surface with its own material." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:73 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:82 msgid "For more information, see the :ref:`GPU optimizations ` doc." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:77 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:86 msgid "Level of detail (LOD)" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:79 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:88 msgid "In some situations, particularly at a distance, it can be a good idea to **replace complex geometry with simpler versions**. The end user will probably not be able to see much difference. Consider looking at a large number of trees in the far distance. There are several strategies for replacing models at varying distance. You could use lower poly models, or use transparency to simulate more complex geometry." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:87 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:96 msgid "Billboards and imposters" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:89 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:98 msgid "The simplest version of using transparency to deal with LOD is billboards. For example, you can use a single transparent quad to represent a tree at distance. This can be very cheap to render, unless of course, there are many trees in front of each other. In which case transparency may start eating into fill rate (for more information on fill rate, see :ref:`doc_gpu_optimization`)." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:95 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:104 msgid "An alternative is to render not just one tree, but a number of trees together as a group. This can be especially effective if you can see an area but cannot physically approach it in a game." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:99 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:108 msgid "You can make imposters by pre-rendering views of an object at different angles. Or you can even go one step further, and periodically re-render a view of an object onto a texture to be used as an imposter. At a distance, you need to move the viewer a considerable distance for the angle of view to change significantly. This can be complex to get working, but may be worth it depending on the type of project you are making." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:107 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:116 msgid "Use instancing (MultiMesh)" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:109 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:118 msgid "If several identical objects have to be drawn in the same place or nearby, try using :ref:`MultiMesh ` instead. MultiMesh allows the drawing of many thousands of objects at very little performance cost, making it ideal for flocks, grass, particles, and anything else where you have thousands of identical objects." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:115 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:124 msgid "Also see the :ref:`Using MultiMesh ` doc." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:118 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:127 msgid "Bake lighting" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:120 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:129 msgid "Lighting objects is one of the most costly rendering operations. Realtime lighting, shadows (especially multiple lights), and GI are especially expensive. They may simply be too much for lower power mobile devices to handle." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:124 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:133 msgid "**Consider using baked lighting**, especially for mobile. This can look fantastic, but has the downside that it will not be dynamic. Sometimes, this is a trade-off worth making." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:128 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:137 msgid "In general, if several lights need to affect a scene, it's best to use :ref:`doc_baked_lightmaps`. Baking can also improve the scene quality by adding indirect light bounces." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:133 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:142 msgid "Animation and skinning" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:135 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:144 msgid "Animation and vertex animation such as skinning and morphing can be very expensive on some platforms. You may need to lower the polycount considerably for animated models or limit the number of them on screen at any one time." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:140 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:149 msgid "Large worlds" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:142 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:151 msgid "If you are making large worlds, there are different considerations than what you may be familiar with from smaller games." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:145 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:154 msgid "Large worlds may need to be built in tiles that can be loaded on demand as you move around the world. This can prevent memory use from getting out of hand, and also limit the processing needed to the local area." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:149 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:158 msgid "There may also be rendering and physics glitches due to floating point error in large worlds. You may be able to use techniques such as orienting the world around the player (rather than the other way around), or shifting the origin periodically to keep things centred around ``Vector3(0, 0, 0)``." msgstr "" diff --git a/sphinx/templates/tutorials/optimization/using_multimesh.pot b/sphinx/templates/tutorials/optimization/using_multimesh.pot index 8c3c5119f9..46ef0b3a8c 100644 --- a/sphinx/templates/tutorials/optimization/using_multimesh.pot +++ b/sphinx/templates/tutorials/optimization/using_multimesh.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/optimization/using_servers.pot b/sphinx/templates/tutorials/optimization/using_servers.pot index bbc0c8d8c7..184f4bf4b2 100644 --- a/sphinx/templates/tutorials/optimization/using_servers.pot +++ b/sphinx/templates/tutorials/optimization/using_servers.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/collision_shapes_3d.pot b/sphinx/templates/tutorials/physics/collision_shapes_3d.pot index 4e85399d37..fd494916a2 100644 --- a/sphinx/templates/tutorials/physics/collision_shapes_3d.pot +++ b/sphinx/templates/tutorials/physics/collision_shapes_3d.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/index.pot b/sphinx/templates/tutorials/physics/index.pot index f05a0fdd3e..0cfd1ad894 100644 --- a/sphinx/templates/tutorials/physics/index.pot +++ b/sphinx/templates/tutorials/physics/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/kinematic_character_2d.pot b/sphinx/templates/tutorials/physics/kinematic_character_2d.pot index 42785dc8ff..77a9a267ba 100644 --- a/sphinx/templates/tutorials/physics/kinematic_character_2d.pot +++ b/sphinx/templates/tutorials/physics/kinematic_character_2d.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/physics_introduction.pot b/sphinx/templates/tutorials/physics/physics_introduction.pot index b66fda6b4a..81e85baeac 100644 --- a/sphinx/templates/tutorials/physics/physics_introduction.pot +++ b/sphinx/templates/tutorials/physics/physics_introduction.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/ragdoll_system.pot b/sphinx/templates/tutorials/physics/ragdoll_system.pot index 3d0c159dbd..3688b59924 100644 --- a/sphinx/templates/tutorials/physics/ragdoll_system.pot +++ b/sphinx/templates/tutorials/physics/ragdoll_system.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/ray-casting.pot b/sphinx/templates/tutorials/physics/ray-casting.pot index 3482f23ad7..c0969bbbe0 100644 --- a/sphinx/templates/tutorials/physics/ray-casting.pot +++ b/sphinx/templates/tutorials/physics/ray-casting.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/rigid_body.pot b/sphinx/templates/tutorials/physics/rigid_body.pot index 1a235271ee..7809c0ba52 100644 --- a/sphinx/templates/tutorials/physics/rigid_body.pot +++ b/sphinx/templates/tutorials/physics/rigid_body.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/soft_body.pot b/sphinx/templates/tutorials/physics/soft_body.pot index 45ef574130..90363a0b28 100644 --- a/sphinx/templates/tutorials/physics/soft_body.pot +++ b/sphinx/templates/tutorials/physics/soft_body.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/using_area_2d.pot b/sphinx/templates/tutorials/physics/using_area_2d.pot index a3ebde7742..2c9feb8aab 100644 --- a/sphinx/templates/tutorials/physics/using_area_2d.pot +++ b/sphinx/templates/tutorials/physics/using_area_2d.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/physics/using_kinematic_body_2d.pot b/sphinx/templates/tutorials/physics/using_kinematic_body_2d.pot index 1814efc59e..69e9be2b3f 100644 --- a/sphinx/templates/tutorials/physics/using_kinematic_body_2d.pot +++ b/sphinx/templates/tutorials/physics/using_kinematic_body_2d.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/platform/android_in_app_purchases.pot b/sphinx/templates/tutorials/platform/android_in_app_purchases.pot index b49e7a7ef9..c628a317f6 100644 --- a/sphinx/templates/tutorials/platform/android_in_app_purchases.pot +++ b/sphinx/templates/tutorials/platform/android_in_app_purchases.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -86,7 +86,7 @@ msgid "As soon as the API is connected, you can query SKUs using ``querySkuDetai msgstr "" #: ../../docs/tutorials/platform/android_in_app_purchases.rst:83 -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:115 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:127 msgid "Full example:" msgstr "" @@ -98,26 +98,30 @@ msgstr "" msgid "To initiate the purchase flow for an item, call ``purchase``. You **must** query the SKU details for an item before you can initiate the purchase flow for it." msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:109 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:106 +msgid "Then, wait for the ``_on_purchases_updated`` callback and handle the purchase result:" +msgstr "" + +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:121 msgid "Check if the user purchased an item" msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:111 -msgid "To get all purchases, call ``queryPurchases``. Unlike most of the other functions, ``queryPurchases`` is a synchronous operation and returns a :ref:`Dictionary ` with a status code and either an array of purchases or an error message." +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:123 +msgid "To get all purchases, call ``queryPurchases``. Unlike most of the other functions, ``queryPurchases`` is a synchronous operation and returns a :ref:`Dictionary ` with a status code and either an array of purchases or an error message. Only active subscriptions and non-consumed one-time purchases are returned." msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:129 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:142 msgid "Consumables" msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:131 -msgid "If your in-app item is not a one-time purchase but a consumable item (e.g. coins) which can be purchased multiple times, you can consume an item by calling ``consumePurchase`` with a purchase token. Call ``queryPurchases`` to get the purchase token. Calling ``consumePurchase`` automatically acknowledges a purchase." +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:144 +msgid "If your in-app item is not a one-time purchase but a consumable item (e.g. coins) which can be purchased multiple times, you can consume an item by calling ``consumePurchase`` with a purchase token. Call ``queryPurchases`` to get the purchase token. Calling ``consumePurchase`` automatically acknowledges a purchase. Consuming a product allows the user to purchase it again, and removes it from appearing in subsequent ``queryPurchases`` calls." msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:148 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:161 msgid "Subscriptions" msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:150 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:163 msgid "Subscriptions don't work much different from regular in-app items. Just use ``\"subs\"`` as second argument to ``querySkuDetails`` to get subscription details. Check ``is_auto_renewing`` in the results of ``queryPurchases()`` to see if a user has cancelled an auto-renewing subscription" msgstr "" diff --git a/sphinx/templates/tutorials/platform/consoles.pot b/sphinx/templates/tutorials/platform/consoles.pot index 659ee257cf..73714a84d4 100644 --- a/sphinx/templates/tutorials/platform/consoles.pot +++ b/sphinx/templates/tutorials/platform/consoles.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -57,49 +57,49 @@ msgid "Official support" msgstr "" #: ../../docs/tutorials/platform/consoles.rst:34 -msgid "Godot currently does not officially support consoles. The reasons for this are:" +msgid "Godot supports the Linux-based Steam Deck. The reason other consoles are not officially supported are:" msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:36 +#: ../../docs/tutorials/platform/consoles.rst:37 msgid "To develop for consoles, one must be licensed as a company. As an open source project, Godot does not have such a legal figure." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:38 +#: ../../docs/tutorials/platform/consoles.rst:39 msgid "Console SDKs are secret and covered by non-disclosure agreements. Even if we could get access to them, we could not publish the platform-specific code under an open source license." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:41 +#: ../../docs/tutorials/platform/consoles.rst:42 msgid "Consoles require specialized hardware to develop for, so regular individuals can't create games for them anyway." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:44 +#: ../../docs/tutorials/platform/consoles.rst:45 msgid "However, it is still possible to port your games to consoles thanks to services provided by third-party companies." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:49 +#: ../../docs/tutorials/platform/consoles.rst:50 msgid "In practice, the process is quite similar to Unity and Unreal Engine, except that you need to contact a third-party developer to handle the porting process. In other words, there is no engine that is legally allowed to distribute console export templates without requiring the user to prove that they are a licensed console developer. Doing so would violate the console manufacturer's NDA." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:57 +#: ../../docs/tutorials/platform/consoles.rst:58 msgid "Third-party support" msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:59 +#: ../../docs/tutorials/platform/consoles.rst:60 msgid "Console ports of Godot are offered by third-party companies (which have ported Godot on their own). These companies also offer publishing of your games to various consoles." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:63 +#: ../../docs/tutorials/platform/consoles.rst:64 msgid "Following is the list of providers:" msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:65 +#: ../../docs/tutorials/platform/consoles.rst:66 msgid "`Lone Wolf Technology `_ offers Switch and PS4 porting and publishing of Godot games." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:67 +#: ../../docs/tutorials/platform/consoles.rst:68 msgid "`Pineapple Works `_ offers Switch and Xbox One porting and publishing of Godot games." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:70 +#: ../../docs/tutorials/platform/consoles.rst:71 msgid "If your company offers porting and/or publishing services for Godot games, feel free to `open an issue or pull request `_ to add your company to the list above." msgstr "" diff --git a/sphinx/templates/tutorials/platform/customizing_html5_shell.pot b/sphinx/templates/tutorials/platform/customizing_html5_shell.pot index 1446ae6fbe..34df1a350b 100644 --- a/sphinx/templates/tutorials/platform/customizing_html5_shell.pot +++ b/sphinx/templates/tutorials/platform/customizing_html5_shell.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/platform/html5_shell_classref.pot b/sphinx/templates/tutorials/platform/html5_shell_classref.pot index 29515961cd..eeaa41cc6a 100644 --- a/sphinx/templates/tutorials/platform/html5_shell_classref.pot +++ b/sphinx/templates/tutorials/platform/html5_shell_classref.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/platform/index.pot b/sphinx/templates/tutorials/platform/index.pot index f35c086eb3..a0920b2c8a 100644 --- a/sphinx/templates/tutorials/platform/index.pot +++ b/sphinx/templates/tutorials/platform/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/platform/ios/index.pot b/sphinx/templates/tutorials/platform/ios/index.pot index c76aaaed8a..a902bb9a16 100644 --- a/sphinx/templates/tutorials/platform/ios/index.pot +++ b/sphinx/templates/tutorials/platform/ios/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/platform/ios/ios_plugin.pot b/sphinx/templates/tutorials/platform/ios/ios_plugin.pot index e5952c892e..ca98a34640 100644 --- a/sphinx/templates/tutorials/platform/ios/ios_plugin.pot +++ b/sphinx/templates/tutorials/platform/ios/ios_plugin.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/platform/ios/plugins_for_ios.pot b/sphinx/templates/tutorials/platform/ios/plugins_for_ios.pot index 9c42aa97f4..0e8e9b8757 100644 --- a/sphinx/templates/tutorials/platform/ios/plugins_for_ios.pot +++ b/sphinx/templates/tutorials/platform/ios/plugins_for_ios.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -44,305 +44,294 @@ msgstr "" msgid "Here's an example of how to do this in GDScript:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:34 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:40 msgid "Asynchronous methods" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:36 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:42 msgid "When requesting an asynchronous operation, the method will look like this:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:43 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:49 msgid "The parameter will usually be a Dictionary, with the information necessary to make the request, and the call will have two phases. First, the method will immediately return an Error value. If the Error is not 'OK', the call operation is completed, with an error probably caused locally (no internet connection, API incorrectly configured, etc). If the error value is 'OK', a response event will be produced and added to the 'pending events' queue. Example:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:70 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:76 msgid "Remember that when a call returns OK, the API will *always* produce an event through the pending_event interface, even if it's an error, or a network timeout, etc. You should be able to, for example, safely block the interface waiting for a reply from the server. If any of the APIs don't behave this way it should be treated as a bug." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:76 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:82 msgid "The pending event interface consists of two methods:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:78 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:84 msgid "``get_pending_event_count()`` Returns the number of pending events on the queue." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:81 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:87 msgid "``Variant pop_pending_event()`` Pops the first event from the queue and returns it." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:85 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:91 msgid "Store Kit" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:87 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:93 msgid "Implemented in `Godot iOS InAppStore plugin `_." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:89 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:95 msgid "The Store Kit API is accessible through the ``InAppStore`` singleton. It is initialized automatically." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:92 -msgid "``Error purchase(Variant p_params);``" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:98 +msgid "The following methods are available and documented below:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:93 -msgid "``Error request_product_info(Variant p_params);``" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:116 +msgid "``purchase``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:94 -msgid "``Error restore_purchases();``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:96 -msgid "and the pending_event interface" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:104 -msgid "purchase" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:106 -msgid "Purchases a product id through the Store Kit API." -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:109 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:149 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:252 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:296 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:441 -msgid "Parameters" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:111 -msgid "Takes a Dictionary as a parameter, with one field, ``product_id``, a string with your product id. Example:" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:119 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:159 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:183 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:221 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:266 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:313 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:342 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:372 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:404 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:461 -msgid "Response event" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:121 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:161 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:223 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:268 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:315 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:344 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:374 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:406 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:463 -msgid "The response event will be a dictionary with the following fields:" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:118 +msgid "Purchases a product ID through the Store Kit API. You have to call ``finish_transaction(product_id)`` once you receive a successful response or call ``set_auto_finish_transaction(true)`` prior to calling ``purchase()``. These two methods ensure the transaction is completed." msgstr "" #: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:123 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:225 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:270 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:317 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:346 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:376 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:408 -msgid "On error:" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:163 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:216 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:233 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:306 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:350 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:495 +msgid "Parameters" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:125 +msgid "Takes a dictionary as a parameter, with one field, ``product_id``, a string with your product ID. Example:" msgstr "" #: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:133 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:236 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:281 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:327 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:356 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:386 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:418 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:173 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:197 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:275 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:320 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:367 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:396 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:426 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:458 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:515 +msgid "Response event" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:135 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:175 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:277 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:322 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:369 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:398 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:428 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:460 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:517 +msgid "The response event will be a dictionary with the following fields:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:137 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:279 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:324 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:371 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:400 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:430 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:462 +msgid "On error:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:147 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:290 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:335 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:381 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:410 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:440 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:472 msgid "On success:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:144 -msgid "request_product_info" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:158 +msgid "``request_product_info``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:146 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:160 msgid "Requests the product info on a list of product IDs." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:151 -msgid "Takes a Dictionary as a parameter, with one field, ``product_ids``, a string array with a list of product ids. Example:" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:165 +msgid "Takes a dictionary as a parameter, with a single ``product_ids`` key to which a string array of product IDs is assigned. Example:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:177 -msgid "restore_purchases" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:191 +msgid "``restore_purchases``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:179 -msgid "Restores previously made purchases on user's account. This will create response events for each previously purchased product id." +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:193 +msgid "Restores previously made purchases on user's account. This will create response events for each previously purchased product ID." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:185 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:199 msgid "The response events will be dictionaries with the following fields:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:196 -msgid "Game Center" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:198 -msgid "Implemented in `Godot iOS GameCenter plugin `_." -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:200 -msgid "The Game Center API is available through the ``GameCenter`` singleton. It has the following methods:" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:203 -msgid "``Error authenticate();``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:204 -msgid "``bool is_authenticated();``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:205 -msgid "``Error post_score(Variant p_score);``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:206 -msgid "``Error award_achievement(Variant p_params);``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:207 -msgid "``void reset_achievements();``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:208 -msgid "``void request_achievements();``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:209 -msgid "``void request_achievement_descriptions();``" -msgstr "" - #: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:210 -msgid "``Error show_game_center(Variant p_params);``" +msgid "``set_auto_finish_transaction``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:211 -msgid "``Error request_identity_verification_signature();``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:213 -msgid "plus the standard pending event interface." -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:216 -msgid "authenticate" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:212 +msgid "If set to ``true``, once a purchase is successful, your purchase will be finalized automatically. Call this method prior to calling ``purchase()``." msgstr "" #: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:218 -msgid "Authenticates a user in Game Center." +msgid "Takes a boolean as a parameter which specifies if purchases should be automatically finalized. Example:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:226 +msgid "``finish_transaction``" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:228 +msgid "If you don't want transactions to be automatically finalized, call this method after you receive a successful purchase response." +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:235 +msgid "Takes a string ``product_id`` as an argument. ``product_id`` specifies what product to finalize the purchase on. Example:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:243 +msgid "Game Center" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:245 +msgid "Implemented in `Godot iOS GameCenter plugin `_." msgstr "" #: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:247 -msgid "post_score" +msgid "The Game Center API is available through the \"GameCenter\" singleton. It has the following methods:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:249 -msgid "Posts a score to a Game Center leaderboard." +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:262 +msgid "and the pending events interface:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:254 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:443 -msgid "Takes a Dictionary as a parameter, with two fields:" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:270 +msgid "``authenticate``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:256 -msgid "``score`` a float number" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:257 -msgid "``category`` a string with the category name" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:259 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:306 -msgid "Example:" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:291 -msgid "award_achievement" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:293 -msgid "Modifies the progress of a Game Center achievement." -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:298 -msgid "Takes a Dictionary as a parameter, with 3 fields:" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:300 -msgid "``name`` (string) the achievement name" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:272 +msgid "Authenticates a user in Game Center." msgstr "" #: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:301 -msgid "``progress`` (float) the achievement progress from 0.0 to 100.0 (passed to ``GKAchievement::percentComplete``)" +msgid "``post_score``" msgstr "" #: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:303 +msgid "Posts a score to a Game Center leaderboard." +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:308 +msgid "Takes a dictionary as a parameter, with two fields:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:310 +msgid "``score`` a float number" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:311 +msgid "``category`` a string with the category name" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:313 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:360 +msgid "Example:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:345 +msgid "``award_achievement``" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:347 +msgid "Modifies the progress of a Game Center achievement." +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:352 +msgid "Takes a Dictionary as a parameter, with 3 fields:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:354 +msgid "``name`` (string) the achievement name" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:355 +msgid "``progress`` (float) the achievement progress from 0.0 to 100.0 (passed to ``GKAchievement::percentComplete``)" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:357 msgid "``show_completion_banner`` (bool) whether Game Center should display an achievement banner at the top of the screen" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:337 -msgid "reset_achievements" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:391 +msgid "``reset_achievements``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:339 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:393 msgid "Clears all Game Center achievements. The function takes no parameters." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:366 -msgid "request_achievements" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:420 +msgid "``request_achievements``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:368 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:422 msgid "Request all the Game Center achievements the player has made progress on. The function takes no parameters." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:398 -msgid "request_achievement_descriptions" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:452 +msgid "``request_achievement_descriptions``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:400 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:454 msgid "Request the descriptions of all existing Game Center achievements regardless of progress. The function takes no parameters." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:435 -msgid "show_game_center" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:489 +msgid "``show_game_center``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:437 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:491 msgid "Displays the built in Game Center overlay showing leaderboards, achievements, and challenges." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:445 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:497 +msgid "Takes a Dictionary as a parameter, with two fields:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:499 msgid "``view`` (string) (optional) the name of the view to present. Accepts \"default\", \"leaderboards\", \"achievements\", or \"challenges\". Defaults to \"default\"." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:448 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:502 msgid "``leaderboard_name`` (string) (optional) the name of the leaderboard to present. Only used when \"view\" is \"leaderboards\" (or \"default\" is configured to show leaderboards). If not specified, Game Center will display the aggregate leaderboard." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:453 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:507 msgid "Examples:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:465 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:519 msgid "On close:" msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:529 +msgid "Multi-platform games" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:531 +msgid "When working on a multi-platform game, you won't always have the \"GameCenter\" singleton available (for example when running on PC or Android). Because the gdscript compiler looks up the singletons at compile time, you can't just query the singletons to see and use what you need inside a conditional block, you need to also define them as valid identifiers (local variable or class member). This is an example of how to work around this in a class:" +msgstr "" diff --git a/sphinx/templates/tutorials/platform/platform_html5.pot b/sphinx/templates/tutorials/platform/platform_html5.pot index 4abb3248e4..74649d840f 100644 --- a/sphinx/templates/tutorials/platform/platform_html5.pot +++ b/sphinx/templates/tutorials/platform/platform_html5.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/android/android_plugin.pot b/sphinx/templates/tutorials/plugins/android/android_plugin.pot index 497ae746a9..1e15181908 100644 --- a/sphinx/templates/tutorials/plugins/android/android_plugin.pot +++ b/sphinx/templates/tutorials/plugins/android/android_plugin.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/android/index.pot b/sphinx/templates/tutorials/plugins/android/index.pot index 0278632164..fc5a59b36d 100644 --- a/sphinx/templates/tutorials/plugins/android/index.pot +++ b/sphinx/templates/tutorials/plugins/android/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/import_plugins.pot b/sphinx/templates/tutorials/plugins/editor/import_plugins.pot index 7a951b42de..1d83eb4cd9 100644 --- a/sphinx/templates/tutorials/plugins/editor/import_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/import_plugins.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/index.pot b/sphinx/templates/tutorials/plugins/editor/index.pot index adf3ea14d4..8813bcebeb 100644 --- a/sphinx/templates/tutorials/plugins/editor/index.pot +++ b/sphinx/templates/tutorials/plugins/editor/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot b/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot index aef9ea9dd0..21103ef258 100644 --- a/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/inspector_plugins.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,33 +21,93 @@ msgid "Inspector plugins" msgstr "" #: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:6 -msgid "The inspector dock supports custom plugins to create your own widgets for editing properties. This tutorial explains how to use the :ref:`class_EditorInspectorPlugin` and :ref:`class_EditorProperty` classes to write such plugins with the example of creating a custom value editor." +msgid "The inspector dock allows you to create custom widgets to edit properties through plugins. This can be beneficial when working with custom datatypes and resources, although you can use the feature to change the inspector widgets for built-in types. You can design custom controls for specific properties, entire objects, and even separate controls associated with particular datatypes." msgstr "" #: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:12 -msgid "Setup" +msgid "This guide explains how to use the :ref:`class_EditorInspectorPlugin` and :ref:`class_EditorProperty` classes to create a custom interface for integers, replacing the default behavior with a button that generates random values between 0 and 99." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:14 -msgid "Just like :ref:`doc_making_plugins`, we start out by making a new plugin, getting a ``plugin.cfg`` file created, and start with our :ref:`class_EditorPlugin`. However, instead of using ``add_custom_node`` or ``add_control_to_dock`` we'll use ``add_inspector_plugin``." +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:20 +msgid "The default behavior on the left and the end result on the right." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:24 +msgid "Setting up your plugin" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:26 +msgid "Create a new empty plugin to get started." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:28 +msgid "See :ref:`doc_making_plugins` guide to set up your new plugin." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:30 +msgid "Let's assume you've called your plugin folder ``my_inspector_plugin``. If so, you should end up with a new ``addons/my_inspector_plugin`` folder that contains two files: ``plugin.cfg`` and ``plugin.gd``." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:34 +msgid "As before, ``plugin.gd`` is a script extending :ref:`class_EditorPlugin` and you need to introduce new code for its ``_enter_tree`` and ``_exit_tree`` methods. To set up your inspector plugin, you must load its script, then create and add the instance by calling ``add_inspector_plugin()``. If the plugin is disabled, you should remove the instance you have added by calling ``remove_inspector_plugin()``." msgstr "" #: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:41 -msgid "EditorInspectorPlugin" +msgid "Here, you are loading a script and not a packed scene. Therefore you should use ``new()`` instead of ``instance()``." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:43 -msgid "To actually connect into the Inspector, we create a :ref:`class_EditorInspectorPlugin` class. This script provides the \"hooks\" to the inspector. Thanks to this class, the editor will call the functions within the EditorInspectorPlugin while it goes through the process of building the UI for the inspector. The script is used to check if we should enable ourselves for any :ref:`class_Object` that is currently in the inspector (including any :ref:`class_Resource` that is embedded!)." +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:64 +msgid "Interacting with the inspector" msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:51 -msgid "Once enabled, EditorInspectorPlugin has methods that allow for adding :ref:`class_EditorProperty` nodes or just custom :ref:`class_Control` nodes to the beginning and end of the inspector for that :ref:`class_Object`, or for overriding or changing existing property editors." +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:66 +msgid "To interact with the inspector dock, your ``MyInspectorPlugin.gd`` script must extend the :ref:`class_EditorInspectorPlugin` class. This class provides several virtual methods that affect how the inspector handles properties." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:85 -msgid "EditorProperty" +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:70 +msgid "To have any effect at all, the script must implement the ``can_handle()`` method. This function is called for each edited :ref:`class_Object` and must return ``true`` if this plugin should handle the object or its properties." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:87 -msgid "Next, we define the actual :ref:`class_EditorProperty` custom value editor that we want instantiated to edit integers. This is a custom :ref:`class_Control` and we can add any kinds of additional nodes to make advanced widgets to embed in the inspector." +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:74 +msgid "This includes any :ref:`class_Resource` attached to the object." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:76 +msgid "You can implement four other methods to add controls to the inspector at specific positions. The ``parse_begin()`` and ``parse_end()`` methods are called only once at the beginning and the end of parsing for each object, respectively. They can add controls at the top or bottom of the inspector layout by calling ``add_custom_control()``." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:82 +msgid "As the editor parses the object, it calls the ``parse_category()`` and ``parse_property()`` methods. There, in addition to ``add_custom_control()``, you can call both ``add_property_editor()`` and ``add_property_editor_for_multiple_properties()``. Use these last two methods to specifically add :ref:`class_EditorProperty`-based controls." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:115 +msgid "Adding an interface to edit properties" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:117 +msgid "The :ref:`class_EditorProperty` class is a special type of :ref:`class_Control` that can interact with the inspector dock's edited objects. It doesn't display anything but can house any other control nodes, including complex scenes." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:121 +msgid "There are three essential parts to the script extending :ref:`class_EditorProperty`:" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:124 +msgid "You must define the ``_init()`` method to set up the control nodes' structure." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:127 +msgid "You should implement the ``update_property()`` to handle changes to the data from the outside." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:130 +msgid "A signal must be emitted at some point to inform the inspector that the control has changed the property using ``emit_changed``." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:133 +msgid "You can display your custom widget in two ways. Use just the default ``add_child()`` method to display it to the right of the property name, and use ``add_child()`` followed by ``set_bottom_editor()`` to position it below the name." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:185 +msgid "Using the example code above you should be able to make a custom widget that replaces the default :ref:`class_SpinBox` control for integers with a :ref:`class_Button` that generates random values." msgstr "" diff --git a/sphinx/templates/tutorials/plugins/editor/installing_plugins.pot b/sphinx/templates/tutorials/plugins/editor/installing_plugins.pot index cb6b223b96..069027bb0c 100644 --- a/sphinx/templates/tutorials/plugins/editor/installing_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/installing_plugins.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot b/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot index 1bf2448841..d5266be461 100644 --- a/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/making_main_screen_plugins.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/making_plugins.pot b/sphinx/templates/tutorials/plugins/editor/making_plugins.pot index aeb91eddf9..ada97329b6 100644 --- a/sphinx/templates/tutorials/plugins/editor/making_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/making_plugins.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/spatial_gizmos.pot b/sphinx/templates/tutorials/plugins/editor/spatial_gizmos.pot index 8d38bbfdd8..6711714e76 100644 --- a/sphinx/templates/tutorials/plugins/editor/spatial_gizmos.pot +++ b/sphinx/templates/tutorials/plugins/editor/spatial_gizmos.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot b/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot index b1ab5abba4..6ed7872073 100644 --- a/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot +++ b/sphinx/templates/tutorials/plugins/editor/visual_shader_plugins.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/gdnative/gdnative-c-example.pot b/sphinx/templates/tutorials/plugins/gdnative/gdnative-c-example.pot index 3dd75cb163..39df9dda5c 100644 --- a/sphinx/templates/tutorials/plugins/gdnative/gdnative-c-example.pot +++ b/sphinx/templates/tutorials/plugins/gdnative/gdnative-c-example.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/gdnative/gdnative-cpp-example.pot b/sphinx/templates/tutorials/plugins/gdnative/gdnative-cpp-example.pot index 5e0c8a4a58..d930f2e938 100644 --- a/sphinx/templates/tutorials/plugins/gdnative/gdnative-cpp-example.pot +++ b/sphinx/templates/tutorials/plugins/gdnative/gdnative-cpp-example.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -72,362 +72,366 @@ msgstr "" msgid "You can download these repositories from GitHub or let Git do the work for you. Note that these repositories now have different branches for different versions of Godot. GDNative modules written for an earlier version of Godot will work in newer versions (with the exception of one breaking change in ARVR interfaces between 3.0 and 3.1) but not vice versa so make sure you download the correct branch. Also note that the version of Godot you use to generate the ``api.json`` with becomes your minimum version." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:49 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:51 +msgid "`GDExtension `__ has been merged in the ``master`` branch of godot-cpp, but it is only compatible with the upcoming Godot 4.0. Therefore, you need to use the ``3.x`` branch of godot-cpp to use GDNative and follow this example." +msgstr "" + +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:56 msgid "If you are versioning your project using Git, it is a good idea to add them as Git submodules:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:71 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:78 msgid "If you decide to just download the repositories or clone them into your project folder, make sure to keep the folder layout identical to the one described here, as much of the code we'll be showcasing here assumes the project follows this layout." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:76 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:83 msgid "Do make sure you clone recursive to pull in both repositories:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:93 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:100 msgid "``godot-cpp`` now includes ``godot-headers`` as a nested submodule, if you've manually downloaded them please make sure to place ``godot-headers`` inside of the ``godot-cpp`` folder." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:97 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:104 msgid "You don't have to do it this way but we've found it easiest to manage. If you decide to just download the repositories or just clone them into your folder, make sure to keep the folder layout the same as we've setup here as much of the code we'll be showcasing here assumes the project has this layout." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:102 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:109 msgid "If you cloned the example from the link specified in the introduction, the submodules are not automatically initialized. You will need to execute the following commands:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:111 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:118 msgid "This will clone these two repositories into your project folder." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:114 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:121 msgid "Building the C++ bindings" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:116 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:123 msgid "Now that we've downloaded our prerequisites, it is time to build the C++ bindings." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:119 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:126 msgid "The repository contains a copy of the metadata for the current Godot release, but if you need to build these bindings for a newer version of Godot, simply call the Godot executable:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:127 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:134 msgid "Place the resulting ``api.json`` file in the project folder and add ``use_custom_api_file=yes custom_api_file=../api.json`` to the scons command below." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:131 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:138 msgid "To generate and compile the bindings, use this command (replacing ```` with ``windows``, ``linux`` or ``osx`` depending on your OS):" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:134 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:141 msgid "To speed up compilation, add `-jN` at the end of the SCons command line where `N` is the number of CPU threads you have on your system. The example below uses 4 threads." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:142 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:149 msgid "This step will take a while. When it is completed, you should have static libraries that can be compiled into your project stored in ``godot-cpp/bin/``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:145 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:152 msgid "At some point in the future, compiled binaries will be available, making this step optional." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:150 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:157 msgid "You may need to add ``bits=64`` to the command on Windows or Linux. We're still working on better auto detection." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:154 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:161 msgid "Creating a simple plugin" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:156 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:163 msgid "Now it's time to build an actual plugin. We'll start by creating an empty Godot project in which we'll place a few files." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:159 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:166 msgid "Open Godot and create a new project. For this example, we will place it in a folder called ``demo`` inside our GDNative module's folder structure." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:162 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:169 msgid "In our demo project, we'll create a scene containing a Node called \"Main\" and we'll save it as ``main.tscn``. We'll come back to that later." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:165 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:172 msgid "Back in the top-level GDNative module folder, we're also going to create a subfolder called ``src`` in which we'll place our source files." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:168 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:175 msgid "You should now have ``demo``, ``godot-cpp``, ``godot-headers``, and ``src`` directories in your GDNative module." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:171 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:178 msgid "In the ``src`` folder, we'll start with creating our header file for the GDNative node we'll be creating. We will name it ``gdexample.h``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:235 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:242 msgid "There are a few things of note to the above. We're including ``Godot.hpp`` which contains all our basic definitions. After that, we include ``Sprite.hpp`` which contains bindings to the Sprite class. We'll be extending this class in our module." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:240 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:247 msgid "We're using the namespace ``godot``, since everything in GDNative is defined within this namespace." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:243 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:250 msgid "Then we have our class definition, which inherits from our Sprite through a container class. We'll see a few side effects of this later on. The ``GODOT_CLASS`` macro sets up a few internal things for us." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:247 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:254 msgid "After that, we declare a single member variable called ``time_passed``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:249 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:256 msgid "In the next block we're defining our methods, we obviously have our constructor and destructor defined, but there are two other functions that will likely look familiar to some, and one new method." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:253 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:260 msgid "The first is ``_register_methods``, which is a static function that Godot will call to find out which methods can be called on our NativeScript and which properties it exposes. The second is our ``_process`` function, which will work exactly the same as the ``_process`` function you're used to in GDScript. The third is our ``_init`` function which is called after Godot has properly set up our object. It has to exist even if you don't place any code in it." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:260 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:267 msgid "Let's implement our functions by creating our ``gdexample.cpp`` file:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:320 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:327 msgid "This one should be straightforward. We're implementing each method of our class that we defined in our header file. Note that the ``register_method`` call **must** expose the ``_process`` method, otherwise Godot will not be able to use it. However, we do not have to tell Godot about our constructor, destructor and ``_init`` functions." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:326 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:333 msgid "The other method of note is our ``_process`` function, which simply keeps track of how much time has passed and calculates a new position for our sprite using a simple sine and cosine function. What stands out is calling ``owner->set_position`` to call one of the build in methods of our Sprite. This is because our class is a container class; ``owner`` points to the actual Sprite node our script relates to. In the upcoming NativeScript 1.1, ``set_position`` can be called directly on our class." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:334 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:341 msgid "There is one more C++ file we need; we'll name it ``gdlibrary.cpp``. Our GDNative plugin can contain multiple NativeScripts, each with their own header and source file like we've implemented ``GDExample`` up above. What we need now is a small bit of code that tells Godot about all the NativeScripts in our GDNative plugin." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:358 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:365 msgid "Note that we are not using the ``godot`` namespace here, since the three functions implemented here need to be defined without a namespace." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:361 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:368 msgid "The ``godot_gdnative_init`` and ``godot_gdnative_terminate`` functions get called respectively when Godot loads our plugin and when it unloads it. All we're doing here is parse through the functions in our bindings module to initialize them, but you might have to set up more things depending on your needs." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:367 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:374 msgid "The important function is the third function called ``godot_nativescript_init``. We first call a function in our bindings library that does its usual stuff. After that, we call the function ``register_class`` for each of our classes in our library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:373 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:380 msgid "Compiling the plugin" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:375 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:382 msgid "We cannot easily write by hand a ``SConstruct`` file that SCons would use for building. For the purpose of this example, just use :download:`this hardcoded SConstruct file ` we've prepared. We'll cover a more customizable, detailed example on how to use these build files in a subsequent tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:383 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:390 msgid "This ``SConstruct`` file was written to be used with the latest ``godot-cpp`` master, you may need to make small changes using it with older versions or refer to the ``SConstruct`` file in the Godot 3.0 documentation." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:387 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:394 msgid "Once you've downloaded the ``SConstruct`` file, place it in your GDNative module folder besides ``godot-cpp``, ``godot-headers`` and ``demo``, then run:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:394 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:401 msgid "You should now be able to find the module in ``demo/bin/``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:398 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:405 msgid "Here, we've compiled both godot-cpp and our gdexample library as debug builds. For optimized builds, you should compile them using the ``target=release`` switch." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:403 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:410 msgid "Using the GDNative module" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:405 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:412 msgid "Before we jump back into Godot, we need to create two more files in ``demo/bin/``. Both can be created using the Godot editor, but it may be faster to create them directly." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:409 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:416 msgid "The first one is a file that lets Godot know what dynamic libraries should be loaded for each platform and is called ``gdexample.gdnlib``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:433 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:440 msgid "This file contains a ``general`` section that controls how the module is loaded. It also contains a prefix section which should be left on ``godot_`` for now. If you change this, you'll need to rename various functions that are used as entry points. This was added for the iPhone platform because it doesn't allow dynamic libraries to be deployed, yet GDNative modules are linked statically." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:439 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:446 msgid "The ``entry`` section is the important bit: it tells Godot the location of the dynamic library in the project's filesystem for each supported platform. It will also result in *just* that file being exported when you export the project, which means the data pack won't contain libraries that are incompatible with the target platform." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:445 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:452 msgid "Finally, the ``dependencies`` section allows you to name additional dynamic libraries that should be included as well. This is important when your GDNative plugin implements someone else's library and requires you to supply a third-party dynamic library with your project." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:450 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:457 msgid "If you double click on the ``gdexample.gdnlib`` file within Godot, you'll see there are far more options to set:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:455 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:462 msgid "The second file we need to create is a file used by each NativeScript we've added to our plugin. We'll name it ``gdexample.gdns`` for our gdexample NativeScript." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:471 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:478 msgid "This is a standard Godot resource; you could just create it directly in your scene, but saving it to a file makes it much easier to reuse it in other places. This resource points to our gdnlib file, so that Godot can know which dynamic library contains our NativeScript. It also defines the ``class_name`` which identifies the NativeScript in our plugin we want to use." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:477 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:484 msgid "Time to jump back into Godot. We load up the main scene we created way back in the beginning and now add a Sprite to our scene:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:482 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:489 msgid "We're going to assign the Godot logo to this sprite as our texture, disable the ``centered`` property and drag our ``gdexample.gdns`` file onto the ``script`` property of the sprite:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:488 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:495 msgid "We're finally ready to run the project:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:493 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:500 msgid "Adding properties" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:495 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:502 msgid "GDScript allows you to add properties to your script using the ``export`` keyword. In GDNative you have to register the properties and there are two ways of doing this. You can either bind directly to a member or use a setter and getter function." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:502 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:509 msgid "There is a third option, just like in GDScript you can directly implement the ``_get_property_list``, ``_get`` and ``_set`` methods of an object but that goes far beyond the scope of this tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:506 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:513 msgid "We'll examine both starting with the direct bind. Lets add a property that allows us to control the amplitude of our wave." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:509 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:516 msgid "In our ``gdexample.h`` file we simply need to add a member variable like so:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:519 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:526 msgid "In our ``gdexample.cpp`` file we need to make a number of changes, we will only show the methods we end up changing, don't remove the lines we're omitting:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:571 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:578 msgid "Once you compile the module with these changes in place you will see that a property has been added to our interface. You can now change this property and when you run your project, you will see that our Godot icon travels along a larger figure." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:578 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:585 msgid "The ``reloadable`` property in the ``gdexample.gdnlib`` file must be set to ``true`` for the Godot editor to automatically pick up the newly added property." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:582 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:589 msgid "However, this setting should be used with care especially when tool classes are used, as the editor might hold objects then that have script instances attached to them that are managed by a GDNative library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:586 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:593 msgid "Lets do the same but for the speed of our animation and use a setter and getter function. Our ``gdexample.h`` header file again only needs a few more lines of code:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:601 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:608 msgid "This requires a few more changes to our ``gdexample.cpp`` file, again we're only showing the methods that have changed so don't remove anything we're omitting:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:673 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:680 msgid "Now when the project is compiled we'll see another property called speed. Changing its value will make the animation go faster or slower." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:676 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:683 msgid "For this example there is no obvious advantage of using a setter and getter. It is just more code to write. For a simple example as this there may be a good reason for a setter if you want to react on the variable being changed but in many cases just binding the variable will be enough." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:681 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:688 msgid "Getters and setters become far more useful in more complex scenarios where you need to make additional choices based on the state of your object." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:686 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:693 msgid "For simplicity we've left out the optional parameters in the register_property method call. These parameters are ``rpc_mode``, ``usage``, ``hint`` and ``hint_string``. These can be used to further configure how properties are displayed and set on the Godot side." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:691 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:698 msgid "Modern C++ compilers are able to infer the class and variable type and allow you to omit the ```` part of our ``register_property`` method. We've had mixed experiences with this however." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:696 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:703 msgid "Signals" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:698 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:705 msgid "Last but not least, signals fully work in GDNative as well. Having your module react to a signal given out by another object requires you to call ``connect`` on that object. We can't think of a good example for our wobbling Godot icon, we would need to showcase a far more complete example." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:703 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:710 msgid "This however is the required syntax:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:714 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:721 msgid "Note that you can only call ``my_method`` if you've previously registered it in your ``_register_methods`` method." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:717 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:724 msgid "Having your object sending out signals is far more common. For our wobbling Godot icon we'll do something silly just to show how it works. We're going to emit a signal every time a second has passed and pass the new location along." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:721 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:728 msgid "In our ``gdexample.h`` header file we just need to define a new member ``time_emit``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:732 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:739 msgid "The changes in ``gdexample.cpp`` are a bit more elaborate this time. First you'll need to set ``time_emit = 0.0;`` in either our ``_init`` method or in our constructor. But the other two needed changes we'll look at one by one." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:736 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:743 msgid "In our ``_register_methods`` method we need to declare our signal and we do this as follows:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:763 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:770 msgid "Here we see a nice improvement in the latest version of godot-cpp where our ``register_signal`` method can be a single call first taking the signals name, then having pairs of values specifying the parameter name and type of each parameter we'll send along with this signal." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:768 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:775 msgid "For NativeScript 1.0 we first build a dictionary in which we tell Godot about the types of arguments we will pass to our signal, and then register it." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:771 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:778 msgid "Next we'll need to change our ``_process`` method:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:817 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:824 msgid "After a second has passed we emit our signal and reset our counter. Again in the new version of godot-cpp we can add our parameter values directly to ``emit_signal``. In NativeScript 1.0 We first build an array of values and then call ``emit_signal``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:822 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:829 msgid "Once compiled we can go into Godot and select our sprite node. On our ``Node`` tab we find our new signal and link it up by pressing connect. We've added a script on our main node and implemented our signal like this:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:833 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:840 msgid "Every second we simply output our position to the console." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:836 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:843 msgid "NativeScript 1.1 vs NativeScript 1.0" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:838 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:845 msgid "So far in our example above there doesn't seem to be a lot of difference between the old and new syntax. The class is defined slightly differently and we no longer use the ``owner`` member to call methods on the Godot side of our object. A lot of the improvements are hidden under the hood." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:843 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:850 msgid "This example only deals with simple variables and simple methods. Especially once you start passing references to other objects or when you start calling methods that require more complex parameters, NativeScript 1.1 does start to show its benefits." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:849 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:856 msgid "Next steps" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:851 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:858 msgid "The above is only a simple example, but we hope it shows you the basics. You can build upon this example to create full-fledged scripts to control nodes in Godot using C++." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:855 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:862 msgid "You should be able to edit and recompile the plugin while the Godot editor remains open; just rerun the project after the library has finished building." msgstr "" diff --git a/sphinx/templates/tutorials/plugins/gdnative/index.pot b/sphinx/templates/tutorials/plugins/gdnative/index.pot index 4a5f3fc305..cf2aaec07d 100644 --- a/sphinx/templates/tutorials/plugins/gdnative/index.pot +++ b/sphinx/templates/tutorials/plugins/gdnative/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/plugins/index.pot b/sphinx/templates/tutorials/plugins/index.pot index 204b4b08df..bf4248fed2 100644 --- a/sphinx/templates/tutorials/plugins/index.pot +++ b/sphinx/templates/tutorials/plugins/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/advanced_postprocessing.pot b/sphinx/templates/tutorials/shading/advanced_postprocessing.pot index c5745fc37c..0432025381 100644 --- a/sphinx/templates/tutorials/shading/advanced_postprocessing.pot +++ b/sphinx/templates/tutorials/shading/advanced_postprocessing.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/godot_shader_language_style_guide.pot b/sphinx/templates/tutorials/shading/godot_shader_language_style_guide.pot index f75692d0f9..461e704b85 100644 --- a/sphinx/templates/tutorials/shading/godot_shader_language_style_guide.pot +++ b/sphinx/templates/tutorials/shading/godot_shader_language_style_guide.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/index.pot b/sphinx/templates/tutorials/shading/index.pot index 47c36ae0ce..b1188f3fdd 100644 --- a/sphinx/templates/tutorials/shading/index.pot +++ b/sphinx/templates/tutorials/shading/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/intro_to_shaders_water_workshop.pot b/sphinx/templates/tutorials/shading/intro_to_shaders_water_workshop.pot index 980460d9f2..0b10da1d6e 100644 --- a/sphinx/templates/tutorials/shading/intro_to_shaders_water_workshop.pot +++ b/sphinx/templates/tutorials/shading/intro_to_shaders_water_workshop.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/migrating_to_godot_shader_language.pot b/sphinx/templates/tutorials/shading/migrating_to_godot_shader_language.pot index ba11a8c53a..e0f9f143f0 100644 --- a/sphinx/templates/tutorials/shading/migrating_to_godot_shader_language.pot +++ b/sphinx/templates/tutorials/shading/migrating_to_godot_shader_language.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/screen-reading_shaders.pot b/sphinx/templates/tutorials/shading/screen-reading_shaders.pot index 585abcf64d..ed0dabd9c6 100644 --- a/sphinx/templates/tutorials/shading/screen-reading_shaders.pot +++ b/sphinx/templates/tutorials/shading/screen-reading_shaders.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shader_materials.pot b/sphinx/templates/tutorials/shading/shader_materials.pot index ea77944308..56f70eaefa 100644 --- a/sphinx/templates/tutorials/shading/shader_materials.pot +++ b/sphinx/templates/tutorials/shading/shader_materials.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shading_reference/canvas_item_shader.pot b/sphinx/templates/tutorials/shading/shading_reference/canvas_item_shader.pot index 023d9fa95d..304d3de78d 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/canvas_item_shader.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/canvas_item_shader.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shading_reference/index.pot b/sphinx/templates/tutorials/shading/shading_reference/index.pot index f0750d5211..ee8e4d0603 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/index.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shading_reference/particle_shader.pot b/sphinx/templates/tutorials/shading/shading_reference/particle_shader.pot index cb8c566ae0..9ba81305fe 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/particle_shader.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/particle_shader.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shading_reference/shaders.pot b/sphinx/templates/tutorials/shading/shading_reference/shaders.pot index 0121748290..9300193699 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/shaders.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/shaders.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/shading_reference/shading_language.pot b/sphinx/templates/tutorials/shading/shading_reference/shading_language.pot index 805935b804..b96495d4f7 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/shading_language.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/shading_language.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -41,14 +41,14 @@ msgid "Most GLSL ES 3.0 datatypes are supported:" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:21 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:569 msgid "Type" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:21 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:479 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:523 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:569 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 msgid "Description" msgstr "" @@ -61,8 +61,8 @@ msgid "Void datatype, useful only for functions that return nothing." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:25 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:550 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:550 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:594 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:594 msgid "**bool**" msgstr "" @@ -95,8 +95,8 @@ msgid "Four-component vector of booleans." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:33 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:552 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:552 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:596 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:596 msgid "**int**" msgstr "" @@ -161,8 +161,8 @@ msgid "Four-component vector of unsigned integers." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:49 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:554 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:554 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:598 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:598 msgid "**float**" msgstr "" @@ -171,7 +171,7 @@ msgid "Floating-point scalar." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:51 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:556 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:600 msgid "**vec2**" msgstr "" @@ -180,7 +180,7 @@ msgid "Two-component vector of floating-point values." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:53 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:558 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:602 msgid "**vec3**" msgstr "" @@ -189,8 +189,8 @@ msgid "Three-component vector of floating-point values." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:55 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:560 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:571 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:604 msgid "**vec4**" msgstr "" @@ -215,8 +215,8 @@ msgid "3x3 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:61 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:562 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:564 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:606 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:608 msgid "**mat4**" msgstr "" @@ -225,12 +225,12 @@ msgid "4x4 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:63 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:531 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:533 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:535 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:537 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:539 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:541 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:575 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:577 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:579 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:581 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:583 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 msgid "**sampler2D**" msgstr "" @@ -659,974 +659,986 @@ msgid "Varyings" msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:423 -msgid "To send data from the vertex to the fragment processor function, *varyings* are used. They are set for every primitive vertex in the *vertex processor*, and the value is interpolated for every pixel in the fragment processor." +msgid "To send data from the vertex to the fragment (or light) processor function, *varyings* are used. They are set for every primitive vertex in the *vertex processor*, and the value is interpolated for every pixel in the *fragment processor*." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:440 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:445 msgid "Varying can also be an array:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:457 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:462 +msgid "It's also possible to send data from *fragment* to *light* processors using *varying* keyword. To do so you can assign it in the *fragment* and later use it in the *light* function." +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:478 +msgid "Note that varying may not be assigned in custom functions or a *light processor* function like:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:498 +msgid "This limitation was introduced to prevent incorrect usage before initialization." +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:501 msgid "Interpolation qualifiers" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:459 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:503 msgid "Certain values are interpolated during the shading pipeline. You can modify how these interpolations are done by using *interpolation qualifiers*." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:476 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:520 msgid "There are two possible interpolation qualifiers:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:479 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:523 msgid "Qualifier" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:481 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 msgid "**flat**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:481 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 msgid "The value is not interpolated." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:483 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 msgid "**smooth**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:483 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 msgid "The value is interpolated in a perspective-correct fashion. This is the default." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:488 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:532 msgid "Uniforms" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:490 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:534 msgid "Passing values to shaders is possible. These are global to the whole shader and are called *uniforms*. When a shader is later assigned to a material, the uniforms will appear as editable parameters in it. Uniforms can't be written from within the shader." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:500 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:544 msgid "You can set uniforms in the editor in the material. Or you can set them through GDScript:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:506 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:550 msgid "The first argument to ``set_shader_param`` is the name of the uniform in the shader. It must match *exactly* to the name of the uniform in the shader or else it will not be recognized." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:509 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:553 msgid "Any GLSL type except for *void* can be a uniform. Additionally, Godot provides optional shader hints to make the compiler understand for what the uniform is used." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:520 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:564 msgid "It's important to understand that textures that are supplied as color require hints for proper sRGB->linear conversion (i.e. ``hint_albedo``), as Godot's 3D engine renders in linear color space." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:522 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:566 msgid "Full list of hints below:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:569 msgid "Hint" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:571 msgid "hint_color" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:571 msgid "Used as color" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:573 msgid "**int, float**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:573 msgid "hint_range(min, max[, step])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:573 msgid "Used as range (with min/max/step)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:531 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:575 msgid "hint_albedo" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:531 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:575 msgid "Used as albedo color, default white" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:533 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:577 msgid "hint_black_albedo" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:533 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:577 msgid "Used as albedo color, default black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:535 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:579 msgid "hint_normal" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:535 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:579 msgid "Used as normalmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:537 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:581 msgid "hint_white" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:537 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:581 msgid "As value, default to white." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:539 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:583 msgid "hint_black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:539 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:583 msgid "As value, default to black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:541 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 msgid "hint_aniso" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:541 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 msgid "As flowmap, default to right." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:544 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:588 msgid "GDScript uses different variable types than GLSL does, so when passing variables from GDScript to shaders, Godot converts the type automatically. Below is a table of the corresponding types:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:548 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:592 msgid "GDScript type" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:548 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:592 msgid "GLSL type" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:556 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:600 msgid "**Vector2**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:558 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:602 msgid "**Vector3**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:560 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:604 msgid "**Color**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:562 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:606 msgid "**Transform**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:564 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:608 msgid "**Transform2D**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:567 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:611 msgid "Be careful when setting shader uniforms from GDScript, no error will be thrown if the type does not match. Your shader will just exhibit undefined behavior." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:570 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:614 msgid "Uniforms can also be assigned default values:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:580 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:624 msgid "Built-in variables" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:582 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:626 msgid "A large number of built-in variables are available, like ``UV``, ``COLOR`` and ``VERTEX``. What variables are available depends on the type of shader (``spatial``, ``canvas_item`` or ``particle``) and the function used (``vertex``, ``fragment`` or ``light``). For a list of the build-in variables that are available, please see the corresponding pages:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:629 msgid ":ref:`Spatial shaders `" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:586 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:630 msgid ":ref:`Canvas item shaders `" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:631 msgid ":ref:`Particle shaders `" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:590 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:634 msgid "Built-in functions" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:592 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:636 msgid "A large number of built-in functions are supported, conforming to GLSL ES 3.0. When vec_type (float), vec_int_type, vec_uint_type, vec_bool_type nomenclature is used, it can be scalar or vector." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:639 msgid "For a list of the functions that are not available in the GLES2 backend, please see the :ref:`Differences between GLES2 and GLES3 doc `." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 msgid "Function" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 msgid "vec_type **radians** (vec_type degrees)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 msgid "Convert degrees to radians" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:603 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 msgid "vec_type **degrees** (vec_type radians)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:603 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 msgid "Convert radians to degrees" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:605 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 msgid "vec_type **sin** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:605 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 msgid "Sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:607 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 msgid "vec_type **cos** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:607 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 msgid "Cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:609 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 msgid "vec_type **tan** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:609 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 msgid "Tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:611 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 msgid "vec_type **asin** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:611 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 msgid "Arcsine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:613 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 msgid "vec_type **acos** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:613 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 msgid "Arccosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:615 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 msgid "vec_type **atan** (vec_type y_over_x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:615 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 msgid "Arctangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:617 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 msgid "vec_type **atan** (vec_type y, vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:617 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 msgid "Arctangent to convert vector to angle" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:619 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 msgid "vec_type **sinh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:619 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 msgid "Hyperbolic sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:621 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 msgid "vec_type **cosh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:621 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 msgid "Hyperbolic cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:623 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 msgid "vec_type **tanh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:623 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 msgid "Hyperbolic tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:625 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 msgid "vec_type **asinh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:625 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 msgid "Inverse hyperbolic sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:627 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 msgid "vec_type **acosh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:627 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 msgid "Inverse hyperbolic cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:629 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 msgid "vec_type **atanh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:629 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 msgid "Inverse hyperbolic tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:631 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 msgid "vec_type **pow** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:631 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 msgid "Power (undefined if ``x`` < 0 or if ``x`` = 0 and ``y`` <= 0)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:633 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 msgid "vec_type **exp** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:633 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 msgid "Base-e exponential" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:635 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 msgid "vec_type **exp2** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:635 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 msgid "Base-2 exponential" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:637 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 msgid "vec_type **log** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:637 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 msgid "Natural logarithm" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:639 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 msgid "vec_type **log2** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:639 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 msgid "Base-2 logarithm" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:641 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 msgid "vec_type **sqrt** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:641 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 msgid "Square root" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 msgid "vec_type **inversesqrt** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 msgid "Inverse square root" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 msgid "vec_type **abs** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 msgid "Absolute" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 msgid "ivec_type **abs** (ivec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 msgid "vec_type **sign** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 msgid "Sign" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 msgid "ivec_type **sign** (ivec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 msgid "vec_type **floor** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 msgid "Floor" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 msgid "vec_type **round** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 msgid "Round" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 msgid "vec_type **roundEven** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 msgid "Round to the nearest even number" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 msgid "vec_type **trunc** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 msgid "Truncation" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 msgid "vec_type **ceil** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 msgid "Ceil" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 msgid "vec_type **fract** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 msgid "Fractional" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 msgid "vec_type **mod** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 msgid "Remainder" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 msgid "vec_type **mod** (vec_type x , float y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 msgid "vec_type **modf** (vec_type x, out vec_type i)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 msgid "Fractional of ``x``, with ``i`` as integer part" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 msgid "vec_type **min** (vec_type a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 msgid "Minimum" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 msgid "vec_type **max** (vec_type a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 msgid "Maximum" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 msgid "vec_type **clamp** (vec_type x, vec_type min, vec_type max)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 msgid "Clamp to ``min..max``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 msgid "float **mix** (float a, float b, float c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 msgid "Linear interpolate" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 msgid "vec_type **mix** (vec_type a, vec_type b, float c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 msgid "Linear interpolate (scalar coefficient)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 msgid "vec_type **mix** (vec_type a, vec_type b, vec_type c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 msgid "Linear interpolate (vector coefficient)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 msgid "vec_type **mix** (vec_type a, vec_type b, bvec_type c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 msgid "Linear interpolate (boolean-vector selection)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 msgid "vec_type **step** (vec_type a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 msgid "``b[i] < a[i] ? 0.0 : 1.0``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 msgid "vec_type **step** (float a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 msgid "``b[i] < a ? 0.0 : 1.0``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 msgid "vec_type **smoothstep** (vec_type a, vec_type b, vec_type c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 msgid "Hermite interpolate" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 msgid "vec_type **smoothstep** (float a, float b, vec_type c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 msgid "bvec_type **isnan** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 msgid "Returns ``true`` if scalar or vector component is ``NaN``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 msgid "bvec_type **isinf** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 msgid "Returns ``true`` if scalar or vector component is ``INF``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 msgid "ivec_type **floatBitsToInt** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 msgid "Float->Int bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 msgid "uvec_type **floatBitsToUint** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 msgid "Float->UInt bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 msgid "vec_type **intBitsToFloat** (ivec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 msgid "Int->Float bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 msgid "vec_type **uintBitsToFloat** (uvec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 msgid "UInt->Float bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 msgid "float **length** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 msgid "Vector length" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 msgid "float **distance** (vec_type a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 msgid "Distance between vectors i.e ``length(a - b)``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 msgid "float **dot** (vec_type a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 msgid "Dot product" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 msgid "vec3 **cross** (vec3 a, vec3 b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 msgid "Cross product" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 msgid "vec_type **normalize** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 msgid "Normalize to unit length" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 msgid "vec3 **reflect** (vec3 I, vec3 N)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 msgid "Reflect" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 msgid "vec3 **refract** (vec3 I, vec3 N, float eta)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 msgid "Refract" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 msgid "vec_type **faceforward** (vec_type N, vec_type I, vec_type Nref)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 msgid "If ``dot(Nref, I)`` < 0, return N, otherwise –N" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 msgid "mat_type **matrixCompMult** (mat_type x, mat_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 msgid "Matrix component multiplication" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 msgid "mat_type **outerProduct** (vec_type column, vec_type row)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 msgid "Matrix outer product" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 msgid "mat_type **transpose** (mat_type m)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 msgid "Transpose matrix" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 msgid "float **determinant** (mat_type m)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 msgid "Matrix determinant" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 msgid "mat_type **inverse** (mat_type m)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 msgid "Inverse matrix" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 msgid "bvec_type **lessThan** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 msgid "Bool vector comparison on < int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 msgid "bvec_type **greaterThan** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 msgid "Bool vector comparison on > int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 msgid "bvec_type **lessThanEqual** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 msgid "Bool vector comparison on <= int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 msgid "bvec_type **greaterThanEqual** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 msgid "Bool vector comparison on >= int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 msgid "bvec_type **equal** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 msgid "Bool vector comparison on == int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 msgid "bvec_type **notEqual** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 msgid "Bool vector comparison on != int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 msgid "bool **any** (bvec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 msgid "Any component is ``true``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 msgid "bool **all** (bvec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 msgid "All components are ``true``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 msgid "bvec_type **not** (bvec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 msgid "Invert boolean vector" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 msgid "ivec2 **textureSize** (sampler2D_type s, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 msgid "Get the size of a 2D texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 msgid "ivec3 **textureSize** (sampler2DArray_type s, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 msgid "Get the size of a 2D texture array" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:797 msgid "ivec3 **textureSize** (sampler3D s, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:797 msgid "Get the size of a 3D texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:799 msgid "ivec2 **textureSize** (samplerCube s, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:799 msgid "Get the size of a cubemap texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:801 msgid "vec4_type **texture** (sampler2D_type s, vec2 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:801 msgid "Perform a 2D texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:803 msgid "vec4_type **texture** (sampler2DArray_type s, vec3 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:803 msgid "Perform a 2D texture array read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:805 msgid "vec4_type **texture** (sampler3D_type s, vec3 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:805 msgid "Perform a 3D texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:807 msgid "vec4 **texture** (samplerCube s, vec3 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:807 msgid "Perform a cubemap texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:809 msgid "vec4_type **textureProj** (sampler2D_type s, vec3 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:809 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:811 msgid "Perform a 2D texture read with projection" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:811 msgid "vec4_type **textureProj** (sampler2D_type s, vec4 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:813 msgid "vec4_type **textureProj** (sampler3D_type s, vec4 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:813 msgid "Perform a 3D texture read with projection" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:815 msgid "vec4_type **textureLod** (sampler2D_type s, vec2 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:815 msgid "Perform a 2D texture read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:817 msgid "vec4_type **textureLod** (sampler2DArray_type s, vec3 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:817 msgid "Perform a 2D texture array read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:819 msgid "vec4_type **textureLod** (sampler3D_type s, vec3 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:819 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:821 msgid "Perform a 3D texture read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:821 msgid "vec4 **textureLod** (samplerCube s, vec3 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:823 msgid "vec4_type **textureProjLod** (sampler2D_type s, vec3 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:823 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:825 msgid "Perform a 2D texture read with projection/LOD" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:825 msgid "vec4_type **textureProjLod** (sampler2D_type s, vec4 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:827 msgid "vec4_type **textureProjLod** (sampler3D_type s, vec4 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:827 msgid "Perform a 3D texture read with projection/LOD" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:829 msgid "vec4_type **texelFetch** (sampler2D_type s, ivec2 uv, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:829 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:831 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:833 msgid "Fetch a single texel using integer coordinates" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:831 msgid "vec4_type **texelFetch** (sampler2DArray_type s, ivec3 uv, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:833 msgid "vec4_type **texelFetch** (sampler3D_type s, ivec3 uv, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:835 msgid "vec_type **dFdx** (vec_type p)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:835 msgid "Derivative in ``x`` using local differencing" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:837 msgid "vec_type **dFdy** (vec_type p)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:837 msgid "Derivative in ``y`` using local differencing" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:839 msgid "vec_type **fwidth** (vec_type p)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:839 msgid "Sum of absolute derivative in ``x`` and ``y``" msgstr "" diff --git a/sphinx/templates/tutorials/shading/shading_reference/spatial_shader.pot b/sphinx/templates/tutorials/shading/shading_reference/spatial_shader.pot index 577a01511e..24de1fedd7 100644 --- a/sphinx/templates/tutorials/shading/shading_reference/spatial_shader.pot +++ b/sphinx/templates/tutorials/shading/shading_reference/spatial_shader.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/visual_shaders.pot b/sphinx/templates/tutorials/shading/visual_shaders.pot index 335373d354..e9e06a6099 100644 --- a/sphinx/templates/tutorials/shading/visual_shaders.pot +++ b/sphinx/templates/tutorials/shading/visual_shaders.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/your_first_shader/index.pot b/sphinx/templates/tutorials/shading/your_first_shader/index.pot index 463a9883f2..939de11209 100644 --- a/sphinx/templates/tutorials/shading/your_first_shader/index.pot +++ b/sphinx/templates/tutorials/shading/your_first_shader/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/your_first_shader/what_are_shaders.pot b/sphinx/templates/tutorials/shading/your_first_shader/what_are_shaders.pot index c1169e8e60..1033924583 100644 --- a/sphinx/templates/tutorials/shading/your_first_shader/what_are_shaders.pot +++ b/sphinx/templates/tutorials/shading/your_first_shader/what_are_shaders.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/your_first_shader/your_first_canvasitem_shader.pot b/sphinx/templates/tutorials/shading/your_first_shader/your_first_canvasitem_shader.pot index 3f002130d9..3bf80d0d16 100644 --- a/sphinx/templates/tutorials/shading/your_first_shader/your_first_canvasitem_shader.pot +++ b/sphinx/templates/tutorials/shading/your_first_shader/your_first_canvasitem_shader.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/your_first_shader/your_first_spatial_shader.pot b/sphinx/templates/tutorials/shading/your_first_shader/your_first_spatial_shader.pot index 74fbd0618a..446786076f 100644 --- a/sphinx/templates/tutorials/shading/your_first_shader/your_first_spatial_shader.pot +++ b/sphinx/templates/tutorials/shading/your_first_shader/your_first_spatial_shader.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/shading/your_first_shader/your_second_spatial_shader.pot b/sphinx/templates/tutorials/shading/your_first_shader/your_second_spatial_shader.pot index fb2e2b2432..de62cdaa7e 100644 --- a/sphinx/templates/tutorials/shading/your_first_shader/your_second_spatial_shader.pot +++ b/sphinx/templates/tutorials/shading/your_first_shader/your_second_spatial_shader.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/threads/index.pot b/sphinx/templates/tutorials/threads/index.pot index f222d8f284..1aae3c10ad 100644 --- a/sphinx/templates/tutorials/threads/index.pot +++ b/sphinx/templates/tutorials/threads/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/threads/thread_safe_apis.pot b/sphinx/templates/tutorials/threads/thread_safe_apis.pot index 6b8dcacd27..ebecf63d1a 100644 --- a/sphinx/templates/tutorials/threads/thread_safe_apis.pot +++ b/sphinx/templates/tutorials/threads/thread_safe_apis.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -65,17 +65,29 @@ msgid "Only use more than one thread to generate scene data if you *really* know msgstr "" #: ../../docs/tutorials/threads/thread_safe_apis.rst:53 -msgid "GDScript arrays, dictionaries" +msgid "Rendering" msgstr "" #: ../../docs/tutorials/threads/thread_safe_apis.rst:55 -msgid "In GDScript, reading and writing elements from multiple threads is ok, but anything that changes the container size (resizing, adding or removing elements) requires locking a mutex." +msgid "Instancing nodes that render anything in 2D or 3D (such as Sprite) is *not* thread-safe by default. To make rendering thread-safe, set the **Rendering > Threads > Thread Model** project setting to **Multi-Threaded**." msgstr "" #: ../../docs/tutorials/threads/thread_safe_apis.rst:58 +msgid "Note that the Multi-Threaded thread model has several known bugs, so it may not be usable in all scenarios." +msgstr "" + +#: ../../docs/tutorials/threads/thread_safe_apis.rst:62 +msgid "GDScript arrays, dictionaries" +msgstr "" + +#: ../../docs/tutorials/threads/thread_safe_apis.rst:64 +msgid "In GDScript, reading and writing elements from multiple threads is OK, but anything that changes the container size (resizing, adding or removing elements) requires locking a mutex." +msgstr "" + +#: ../../docs/tutorials/threads/thread_safe_apis.rst:67 msgid "Resources" msgstr "" -#: ../../docs/tutorials/threads/thread_safe_apis.rst:60 +#: ../../docs/tutorials/threads/thread_safe_apis.rst:69 msgid "Modifying a unique resource from multiple threads is not supported. However handling references on multiple threads is supported, hence loading resources on a thread is as well - scenes, textures, meshes, etc - can be loaded and manipulated on a thread and then added to the active scene on the main thread. The limitation here is as described above, one must be careful not to load the same resource from multiple threads at once, therefore it is easiest to use **one** thread for loading and modifying resources, and then the main thread for adding them." msgstr "" diff --git a/sphinx/templates/tutorials/threads/using_multiple_threads.pot b/sphinx/templates/tutorials/threads/using_multiple_threads.pot index b30efa65c3..68a609487e 100644 --- a/sphinx/templates/tutorials/threads/using_multiple_threads.pot +++ b/sphinx/templates/tutorials/threads/using_multiple_threads.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -36,46 +36,50 @@ msgstr "" msgid "If using other languages (C#, C++), it may be easier to use the threading classes they support." msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:18 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:19 +msgid "Before using a built-in class in a thread, read :ref:`doc_thread_safe_apis` first to check whether it can be safely used in a thread." +msgstr "" + +#: ../../docs/tutorials/threads/using_multiple_threads.rst:23 msgid "Creating a Thread" msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:20 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:25 msgid "Creating a thread is very simple, just use the following code:" msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:46 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:51 msgid "Your function will, then, run in a separate thread until it returns. Even if the function has returned already, the thread must collect it, so call :ref:`Thread.wait_to_finish()`, which will wait until the thread is done (if not done yet), then properly dispose of it." msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:52 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:57 msgid "Mutexes" msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:54 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:59 msgid "Accessing objects or data from multiple threads is not always supported (if you do it, it will cause unexpected behaviors or crashes). Read the :ref:`doc_thread_safe_apis` documentation to understand which engine APIs support multiple thread access." msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:59 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:64 msgid "When processing your own data or calling your own functions, as a rule, try to avoid accessing the same data directly from different threads. You may run into synchronization problems, as the data is not always updated between CPU cores when modified. Always use a :ref:`Mutex` when accessing a piece of data from different threads." msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:65 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:70 msgid "When calling :ref:`Mutex.lock()`, a thread ensures that all other threads will be blocked (put on suspended state) if they try to *lock* the same mutex. When the mutex is unlocked by calling :ref:`Mutex.unlock()`, the other threads will be allowed to proceed with the lock (but only one at a time)." msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:71 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:76 msgid "Here is an example of using a Mutex:" msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:106 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:111 msgid "Semaphores" msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:108 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:113 msgid "Sometimes you want your thread to work *\"on demand\"*. In other words, tell it when to work and let it suspend when it isn't doing anything. For this, :ref:`Semaphores` are used. The function :ref:`Semaphore.wait()` is used in the thread to suspend it until some data arrives." msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:114 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:119 msgid "The main thread, instead, uses :ref:`Semaphore.post()` to signal that data is ready to be processed:" msgstr "" diff --git a/sphinx/templates/tutorials/viewports/custom_postprocessing.pot b/sphinx/templates/tutorials/viewports/custom_postprocessing.pot index b97ca238f8..a556c06129 100644 --- a/sphinx/templates/tutorials/viewports/custom_postprocessing.pot +++ b/sphinx/templates/tutorials/viewports/custom_postprocessing.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/viewports/index.pot b/sphinx/templates/tutorials/viewports/index.pot index c43eec2b57..e54dc6d483 100644 --- a/sphinx/templates/tutorials/viewports/index.pot +++ b/sphinx/templates/tutorials/viewports/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/viewports/multiple_resolutions.pot b/sphinx/templates/tutorials/viewports/multiple_resolutions.pot index 8030f3ffa3..f33fd81ef3 100644 --- a/sphinx/templates/tutorials/viewports/multiple_resolutions.pot +++ b/sphinx/templates/tutorials/viewports/multiple_resolutions.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/viewports/using_viewport_as_texture.pot b/sphinx/templates/tutorials/viewports/using_viewport_as_texture.pot index b9abc4e2ea..bbe32d5d08 100644 --- a/sphinx/templates/tutorials/viewports/using_viewport_as_texture.pot +++ b/sphinx/templates/tutorials/viewports/using_viewport_as_texture.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/viewports/viewports.pot b/sphinx/templates/tutorials/viewports/viewports.pot index 6903afce44..3d87d99503 100644 --- a/sphinx/templates/tutorials/viewports/viewports.pot +++ b/sphinx/templates/tutorials/viewports/viewports.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/vr/developing_for_oculus_quest.pot b/sphinx/templates/tutorials/vr/developing_for_oculus_quest.pot index 0ec2639031..f2fcd2f865 100644 --- a/sphinx/templates/tutorials/vr/developing_for_oculus_quest.pot +++ b/sphinx/templates/tutorials/vr/developing_for_oculus_quest.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/vr/index.pot b/sphinx/templates/tutorials/vr/index.pot index 8b7f18f409..7e6c185e68 100644 --- a/sphinx/templates/tutorials/vr/index.pot +++ b/sphinx/templates/tutorials/vr/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/vr/vr_primer.pot b/sphinx/templates/tutorials/vr/vr_primer.pot index 5461514397..d2d5fe46bd 100644 --- a/sphinx/templates/tutorials/vr/vr_primer.pot +++ b/sphinx/templates/tutorials/vr/vr_primer.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/vr/vr_starter_tutorial/index.pot b/sphinx/templates/tutorials/vr/vr_starter_tutorial/index.pot index 88edfa4200..e158a7825a 100644 --- a/sphinx/templates/tutorials/vr/vr_starter_tutorial/index.pot +++ b/sphinx/templates/tutorials/vr/vr_starter_tutorial/index.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_one.pot b/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_one.pot index c70c38021a..5b09df0805 100644 --- a/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_one.pot +++ b/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_one.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_two.pot b/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_two.pot index 9dd4cc3b88..b6d391be0e 100644 --- a/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_two.pot +++ b/sphinx/templates/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_two.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/templates_list.txt b/templates_list.txt index cca5b7c207..8c829e96da 100644 --- a/templates_list.txt +++ b/templates_list.txt @@ -51,6 +51,7 @@ getting_started/scripting/c_sharp/index.pot getting_started/scripting/c_sharp/c_sharp_basics.pot getting_started/scripting/c_sharp/c_sharp_features.pot getting_started/scripting/c_sharp/c_sharp_differences.pot +getting_started/scripting/c_sharp/c_sharp_exports.pot getting_started/scripting/c_sharp/c_sharp_style_guide.pot getting_started/scripting/cross_language_scripting.pot getting_started/scripting/creating_script_templates.pot @@ -64,6 +65,7 @@ getting_started/workflow/assets/importing_images.pot getting_started/workflow/assets/importing_audio_samples.pot getting_started/workflow/assets/importing_translations.pot getting_started/workflow/assets/importing_scenes.pot +getting_started/workflow/assets/exporting_3d_scenes.pot getting_started/workflow/assets/escn_exporter/index.pot getting_started/workflow/assets/escn_exporter/material.pot getting_started/workflow/assets/escn_exporter/physics.pot @@ -129,6 +131,13 @@ tutorials/3d/fps_tutorial/part_six.pot tutorials/3d/vertex_animation/index.pot tutorials/3d/vertex_animation/animating_thousands_of_fish.pot tutorials/3d/vertex_animation/controlling_thousands_of_fish.pot +tutorials/3d/portals/index.pot +tutorials/3d/portals/introduction_to_rooms_and_portals.pot +tutorials/3d/portals/first_steps_with_rooms_and_portals.pot +tutorials/3d/portals/using_objects_in_rooms_and_portals.pot +tutorials/3d/portals/advanced_room_and_portal_usage.pot +tutorials/3d/portals/editing_rooms_and_portals.pot +tutorials/3d/portals/rooms_and_portals_example.pot tutorials/audio/index.pot tutorials/audio/audio_buses.pot tutorials/audio/audio_streams.pot @@ -171,12 +180,14 @@ tutorials/i18n/internationalizing_games.pot tutorials/i18n/localization_using_gettext.pot tutorials/i18n/locales.pot tutorials/gui/index.pot -tutorials/gui/gui_skinning.pot -tutorials/gui/custom_gui_controls.pot tutorials/gui/size_and_anchors.pot tutorials/gui/gui_containers.pot -tutorials/gui/bbcode_in_richtextlabel.pot +tutorials/gui/custom_gui_controls.pot +tutorials/gui/gui_navigation.pot tutorials/gui/control_node_gallery.pot +tutorials/gui/gui_skinning.pot +tutorials/gui/gui_using_theme_editor.pot +tutorials/gui/bbcode_in_richtextlabel.pot tutorials/viewports/index.pot tutorials/viewports/viewports.pot tutorials/viewports/multiple_resolutions.pot @@ -208,6 +219,8 @@ tutorials/networking/http_client_class.pot tutorials/networking/ssl_certificates.pot tutorials/networking/websocket.pot tutorials/networking/webrtc.pot +tutorials/navigation/index.pot +tutorials/navigation/real_time_navigation_3d.pot tutorials/assetlib/index.pot tutorials/assetlib/what_is_assetlib.pot tutorials/assetlib/using_assetlib.pot diff --git a/weblate/docs/docs.pot b/weblate/docs/docs.pot index 64c2318d0a..87dfa26342 100644 --- a/weblate/docs/docs.pot +++ b/weblate/docs/docs.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: Godot Engine 3.3\n" +"Project-Id-Version: Godot Engine 3.4\n" "Report-Msgid-Bugs-To: https://github.com/godotengine/godot-docs-l10n\n" -"POT-Creation-Date: 2021-10-08 12:36+0200\n" +"POT-Creation-Date: 2021-11-04 16:27+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,20 +30,20 @@ msgstr "" msgid "Tutorials" msgstr "" -#: ../../docs/index.rst:114 +#: ../../docs/index.rst:115 msgid "Development" msgstr "" -#: ../../docs/index.rst:125 +#: ../../docs/index.rst:126 msgid "Community" msgstr "" -#: ../../docs/index.rst:135 +#: ../../docs/index.rst:136 msgid "Class reference" msgstr "" #: ../../docs/index.rst:2 -msgid "Godot Docs – *3.3* branch" +msgid "Godot Docs – *3.4* branch" msgstr "" #: ../../docs/index.rst:6 @@ -54,11 +54,11 @@ msgstr "" #: ../../docs/index.rst:10 msgid "" -"This is the documentation for the stable 3.3 branch. Looking for the " +"This is the documentation for the beta 3.4 branch. Looking for the " "documentation of the current **development** branch? `Have a look here " "`_. You can also browse the " -"documentation for the previous stable `3.2 `_ branch." +"documentation for the current stable `3.3 `_ branch." msgstr "" #: ../../docs/index.rst:18 @@ -162,6 +162,7 @@ msgstr "" #: ../../docs/tutorials/2d/2d_movement.rst:7 #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:7 #: ../../docs/tutorials/2d/2d_meshes.rst:7 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:7 #: ../../docs/tutorials/2d/2d_sprite_animation.rst:7 #: ../../docs/tutorials/3d/using_transforms.rst:7 #: ../../docs/tutorials/3d/3d_rendering_limitations.rst:7 @@ -173,6 +174,7 @@ msgstr "" #: ../../docs/tutorials/3d/high_dynamic_range.rst:7 #: ../../docs/tutorials/3d/using_gridmaps.rst:7 #: ../../docs/tutorials/3d/using_multi_mesh_instance.rst:7 +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:9 #: ../../docs/tutorials/audio/audio_buses.rst:7 #: ../../docs/tutorials/audio/audio_streams.rst:7 #: ../../docs/tutorials/audio/sync_with_audio.rst:7 @@ -201,6 +203,7 @@ msgstr "" #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:7 #: ../../docs/tutorials/shading/advanced_postprocessing.rst:7 #: ../../docs/tutorials/networking/ssl_certificates.rst:7 +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:7 #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:7 #: ../../docs/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_one.rst:7 #: ../../docs/tutorials/vr/vr_starter_tutorial/vr_starter_tutorial_part_two.rst:7 @@ -423,7 +426,7 @@ msgstr "" #: ../../docs/about/faq.rst:16 msgid "" -"You are free to download and use Godot for any purpose, personal, non-" +"You are free to download and use Godot for any purpose: personal, non-" "profit, commercial, or otherwise." msgstr "" @@ -1268,8 +1271,8 @@ msgstr "" #: ../../docs/about/troubleshooting.rst:4 #: ../../docs/tutorials/inputs/controllers_gamepads_joysticks.rst:178 #: ../../docs/tutorials/plugins/android/android_plugin.rst:184 -#: ../../docs/development/compiling/compiling_for_windows.rst:237 -#: ../../docs/development/compiling/compiling_for_android.rst:197 +#: ../../docs/development/compiling/compiling_for_windows.rst:234 +#: ../../docs/development/compiling/compiling_for_android.rst:196 #: ../../docs/development/editor/creating_icons.rst:92 msgid "Troubleshooting" msgstr "" @@ -1547,8 +1550,8 @@ msgid "Editor" msgstr "" #: ../../docs/about/list_of_features.rst:45 -#: ../../docs/about/list_of_features.rst:87 -#: ../../docs/about/list_of_features.rst:344 +#: ../../docs/about/list_of_features.rst:90 +#: ../../docs/about/list_of_features.rst:355 msgid "**Features:**" msgstr "" @@ -1641,528 +1644,543 @@ msgid "2D graphics" msgstr "" #: ../../docs/about/list_of_features.rst:80 -#: ../../docs/about/list_of_features.rst:144 +#: ../../docs/about/list_of_features.rst:147 msgid "**Two renderers available:**" msgstr "" #: ../../docs/about/list_of_features.rst:82 -#: ../../docs/about/list_of_features.rst:147 +#: ../../docs/about/list_of_features.rst:149 msgid "OpenGL ES 3.0 renderer (uses OpenGL 3.3 on desktop platforms)." msgstr "" -#: ../../docs/about/list_of_features.rst:83 -#: ../../docs/about/list_of_features.rst:147 +#: ../../docs/about/list_of_features.rst:84 +#: ../../docs/about/list_of_features.rst:151 msgid "High-end visuals. Recommended on desktop platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:85 -#: ../../docs/about/list_of_features.rst:153 +#: ../../docs/about/list_of_features.rst:86 +#: ../../docs/about/list_of_features.rst:154 msgid "OpenGL ES 2.0 renderer (uses OpenGL 2.1 on desktop platforms)." msgstr "" -#: ../../docs/about/list_of_features.rst:85 -#: ../../docs/about/list_of_features.rst:150 +#: ../../docs/about/list_of_features.rst:88 +#: ../../docs/about/list_of_features.rst:156 msgid "Recommended on mobile and Web platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:89 +#: ../../docs/about/list_of_features.rst:92 msgid "Sprite, polygon and line rendering." msgstr "" -#: ../../docs/about/list_of_features.rst:91 +#: ../../docs/about/list_of_features.rst:94 msgid "" "High-level tools to draw lines and polygons such as Polygon2D and Line2D." msgstr "" -#: ../../docs/about/list_of_features.rst:93 +#: ../../docs/about/list_of_features.rst:96 msgid "AnimatedSprite as a helper for creating animated sprites." msgstr "" -#: ../../docs/about/list_of_features.rst:94 +#: ../../docs/about/list_of_features.rst:97 msgid "Parallax layers." msgstr "" -#: ../../docs/about/list_of_features.rst:96 +#: ../../docs/about/list_of_features.rst:99 msgid "Pseudo-3D support by automatically duplicating a layer several times." msgstr "" -#: ../../docs/about/list_of_features.rst:98 +#: ../../docs/about/list_of_features.rst:101 msgid "2D lighting with normal maps." msgstr "" -#: ../../docs/about/list_of_features.rst:100 +#: ../../docs/about/list_of_features.rst:103 msgid "Hard or soft shadows." msgstr "" -#: ../../docs/about/list_of_features.rst:102 +#: ../../docs/about/list_of_features.rst:105 msgid "" "Font rendering using bitmaps (BitmapFont) or rasterization using FreeType " "(DynamicFont)." msgstr "" -#: ../../docs/about/list_of_features.rst:104 -msgid "Bitmap fonts can be exported using tools like BMFont." -msgstr "" - -#: ../../docs/about/list_of_features.rst:105 -msgid "" -"DynamicFont supports monochrome fonts as well as colored fonts. Supported " -"formats are TTF and OTF." -msgstr "" - #: ../../docs/about/list_of_features.rst:107 -msgid "" -"DynamicFont supports optional font outlines with adjustable width and color." +msgid "Bitmap fonts can be exported using tools like BMFont." msgstr "" #: ../../docs/about/list_of_features.rst:108 msgid "" -"Support for font oversampling to keep fonts sharp at higher resolutions." +"DynamicFont supports monochrome fonts as well as colored fonts (e.g. for " +"emoji). Supported formats are TTF, OTF and WOFF1." msgstr "" #: ../../docs/about/list_of_features.rst:110 -msgid "GPU-based particles with support for custom particle shaders." +msgid "" +"DynamicFont supports optional font outlines with adjustable width and color." msgstr "" #: ../../docs/about/list_of_features.rst:111 -#: ../../docs/about/list_of_features.rst:217 -msgid "CPU-based particles." +msgid "" +"Support for font oversampling to keep fonts sharp at higher resolutions." +msgstr "" + +#: ../../docs/about/list_of_features.rst:113 +msgid "GPU-based particles with support for custom particle shaders." msgstr "" #: ../../docs/about/list_of_features.rst:114 -msgid "2D tools" -msgstr "" - -#: ../../docs/about/list_of_features.rst:116 -msgid "2D camera with built-in smoothing and drag margins." +#: ../../docs/about/list_of_features.rst:228 +msgid "CPU-based particles." msgstr "" #: ../../docs/about/list_of_features.rst:117 -msgid "Path2D node to represent a path in 2D space." +msgid "2D tools" msgstr "" #: ../../docs/about/list_of_features.rst:119 -#: ../../docs/about/list_of_features.rst:258 -msgid "Can be drawn in the editor or generated procedurally." +msgid "2D camera with built-in smoothing and drag margins." msgstr "" #: ../../docs/about/list_of_features.rst:120 -msgid "PathFollow2D node to make nodes follow a Path2D." +msgid "Path2D node to represent a path in 2D space." msgstr "" #: ../../docs/about/list_of_features.rst:122 -msgid "2D geometry helper class." +#: ../../docs/about/list_of_features.rst:269 +msgid "Can be drawn in the editor or generated procedurally." msgstr "" #: ../../docs/about/list_of_features.rst:123 -msgid "Line2D node to draw textured 2D lines." +msgid "PathFollow2D node to make nodes follow a Path2D." +msgstr "" + +#: ../../docs/about/list_of_features.rst:125 +msgid "2D geometry helper class." msgstr "" #: ../../docs/about/list_of_features.rst:126 +msgid "Line2D node to draw textured 2D lines." +msgstr "" + +#: ../../docs/about/list_of_features.rst:129 msgid "2D physics" msgstr "" -#: ../../docs/about/list_of_features.rst:128 -#: ../../docs/about/list_of_features.rst:266 +#: ../../docs/about/list_of_features.rst:131 +#: ../../docs/about/list_of_features.rst:277 msgid "**Physics bodies:**" msgstr "" -#: ../../docs/about/list_of_features.rst:130 -#: ../../docs/about/list_of_features.rst:268 +#: ../../docs/about/list_of_features.rst:133 +#: ../../docs/about/list_of_features.rst:279 msgid "Static bodies." msgstr "" -#: ../../docs/about/list_of_features.rst:131 -#: ../../docs/about/list_of_features.rst:269 +#: ../../docs/about/list_of_features.rst:134 +#: ../../docs/about/list_of_features.rst:280 msgid "Rigid bodies." msgstr "" -#: ../../docs/about/list_of_features.rst:132 -#: ../../docs/about/list_of_features.rst:270 +#: ../../docs/about/list_of_features.rst:135 +#: ../../docs/about/list_of_features.rst:281 msgid "Kinematic bodies." msgstr "" -#: ../../docs/about/list_of_features.rst:133 -#: ../../docs/about/list_of_features.rst:272 +#: ../../docs/about/list_of_features.rst:136 +#: ../../docs/about/list_of_features.rst:283 msgid "Joints." msgstr "" -#: ../../docs/about/list_of_features.rst:134 -#: ../../docs/about/list_of_features.rst:275 +#: ../../docs/about/list_of_features.rst:137 +#: ../../docs/about/list_of_features.rst:286 msgid "Areas to detect bodies entering or leaving it." msgstr "" -#: ../../docs/about/list_of_features.rst:136 -#: ../../docs/about/list_of_features.rst:277 +#: ../../docs/about/list_of_features.rst:139 +#: ../../docs/about/list_of_features.rst:288 msgid "**Collision detection:**" msgstr "" -#: ../../docs/about/list_of_features.rst:138 +#: ../../docs/about/list_of_features.rst:141 msgid "Built-in shapes: line, box, circle, capsule." msgstr "" -#: ../../docs/about/list_of_features.rst:139 +#: ../../docs/about/list_of_features.rst:142 msgid "" "Collision polygons (can be drawn manually or generated from a sprite in the " "editor)." msgstr "" -#: ../../docs/about/list_of_features.rst:142 +#: ../../docs/about/list_of_features.rst:145 msgid "3D graphics" msgstr "" -#: ../../docs/about/list_of_features.rst:148 +#: ../../docs/about/list_of_features.rst:152 msgid "HDR rendering with sRGB." msgstr "" -#: ../../docs/about/list_of_features.rst:151 +#: ../../docs/about/list_of_features.rst:157 msgid "LDR rendering for greater compatibility." msgstr "" -#: ../../docs/about/list_of_features.rst:152 +#: ../../docs/about/list_of_features.rst:158 msgid "" "Not all features are available. Features available only when using the " "OpenGL ES 3.0 renderer are marked *GLES3* below." msgstr "" -#: ../../docs/about/list_of_features.rst:155 +#: ../../docs/about/list_of_features.rst:161 msgid "**Camera:**" msgstr "" -#: ../../docs/about/list_of_features.rst:157 +#: ../../docs/about/list_of_features.rst:163 msgid "Perspective, orthographic and frustum-offset cameras." msgstr "" -#: ../../docs/about/list_of_features.rst:159 +#: ../../docs/about/list_of_features.rst:165 msgid "**Physically-based rendering:**" msgstr "" -#: ../../docs/about/list_of_features.rst:161 +#: ../../docs/about/list_of_features.rst:167 msgid "Follows the Disney PBR model." msgstr "" -#: ../../docs/about/list_of_features.rst:162 +#: ../../docs/about/list_of_features.rst:168 msgid "Uses a roughness-metallic workflow with support for ORM textures." msgstr "" -#: ../../docs/about/list_of_features.rst:163 +#: ../../docs/about/list_of_features.rst:169 msgid "Normal mapping." msgstr "" -#: ../../docs/about/list_of_features.rst:164 +#: ../../docs/about/list_of_features.rst:170 msgid "" "*GLES3:* Parallax/relief mapping with automatic level of detail based on " "distance." msgstr "" -#: ../../docs/about/list_of_features.rst:165 +#: ../../docs/about/list_of_features.rst:171 msgid "*GLES3:* Sub-surface scattering and transmittance." msgstr "" -#: ../../docs/about/list_of_features.rst:166 +#: ../../docs/about/list_of_features.rst:172 msgid "*GLES3:* Proximity fade (soft particles)." msgstr "" -#: ../../docs/about/list_of_features.rst:167 +#: ../../docs/about/list_of_features.rst:173 msgid "" "Distance fade which can use alpha blending or dithering to avoid going " "through the transparent pipeline." msgstr "" -#: ../../docs/about/list_of_features.rst:169 +#: ../../docs/about/list_of_features.rst:175 msgid "Dithering can be determined on a per-pixel or per-object basis." msgstr "" -#: ../../docs/about/list_of_features.rst:171 +#: ../../docs/about/list_of_features.rst:177 msgid "**Real-time lighting:**" msgstr "" -#: ../../docs/about/list_of_features.rst:173 +#: ../../docs/about/list_of_features.rst:179 msgid "Directional lights (sun/moon). Up to 4 per scene." msgstr "" -#: ../../docs/about/list_of_features.rst:174 +#: ../../docs/about/list_of_features.rst:180 msgid "Omnidirectional lights." msgstr "" -#: ../../docs/about/list_of_features.rst:175 +#: ../../docs/about/list_of_features.rst:181 msgid "Spot lights with adjustable cone angle and attenuation." msgstr "" -#: ../../docs/about/list_of_features.rst:177 +#: ../../docs/about/list_of_features.rst:183 msgid "**Shadow mapping:**" msgstr "" -#: ../../docs/about/list_of_features.rst:179 +#: ../../docs/about/list_of_features.rst:185 msgid "" "*DirectionalLight:* Orthogonal (fastest), PSSM 2-split and 4-split. Supports " "blending between splits." msgstr "" -#: ../../docs/about/list_of_features.rst:181 +#: ../../docs/about/list_of_features.rst:187 msgid "" "*OmniLight:* Dual paraboloid (fast) or cubemap (slower but more accurate). " "Supports colored projector textures in the form of panoramas." msgstr "" -#: ../../docs/about/list_of_features.rst:183 +#: ../../docs/about/list_of_features.rst:189 msgid "*SpotLight:* Single texture." msgstr "" -#: ../../docs/about/list_of_features.rst:185 +#: ../../docs/about/list_of_features.rst:191 msgid "**Global illumination with indirect lighting:**" msgstr "" -#: ../../docs/about/list_of_features.rst:187 +#: ../../docs/about/list_of_features.rst:193 msgid "Baked lightmaps (fast, but can't be updated at run-time)." msgstr "" -#: ../../docs/about/list_of_features.rst:189 +#: ../../docs/about/list_of_features.rst:195 +msgid "" +"Supports baking indirect light only or baking both direct and indirect " +"lighting. The bake mode can be adjusted on a per-light basis to allow for " +"hybrid light baking setups." +msgstr "" + +#: ../../docs/about/list_of_features.rst:198 +msgid "" +"Supports lighting dynamic objects using an automatic octree-based system. No " +"manual probe placement is required." +msgstr "" + +#: ../../docs/about/list_of_features.rst:200 msgid "Lightmaps are baked on the CPU." msgstr "" -#: ../../docs/about/list_of_features.rst:191 +#: ../../docs/about/list_of_features.rst:202 msgid "*GLES3:* GI probes (slower, semi-real-time). Supports reflections." msgstr "" -#: ../../docs/about/list_of_features.rst:193 +#: ../../docs/about/list_of_features.rst:204 msgid "**Reflections:**" msgstr "" -#: ../../docs/about/list_of_features.rst:195 +#: ../../docs/about/list_of_features.rst:206 msgid "*GLES3:* Voxel-based reflections (when using GI probes)." msgstr "" -#: ../../docs/about/list_of_features.rst:196 +#: ../../docs/about/list_of_features.rst:207 msgid "" "Fast baked reflections or slow real-time reflections using ReflectionProbe. " "Parallax correction can optionally be enabled." msgstr "" -#: ../../docs/about/list_of_features.rst:198 +#: ../../docs/about/list_of_features.rst:209 msgid "*GLES3:* Screen-space reflections." msgstr "" -#: ../../docs/about/list_of_features.rst:199 -msgid "Reflection techniques can be mixed together for greater accuracy." +#: ../../docs/about/list_of_features.rst:210 +msgid "" +"Reflection techniques can be mixed together for greater accuracy or " +"scalability." msgstr "" -#: ../../docs/about/list_of_features.rst:201 +#: ../../docs/about/list_of_features.rst:212 msgid "**Sky:**" msgstr "" -#: ../../docs/about/list_of_features.rst:203 +#: ../../docs/about/list_of_features.rst:214 msgid "Panorama sky (using an HDRI)." msgstr "" -#: ../../docs/about/list_of_features.rst:204 +#: ../../docs/about/list_of_features.rst:215 msgid "Procedural sky." msgstr "" -#: ../../docs/about/list_of_features.rst:206 +#: ../../docs/about/list_of_features.rst:217 msgid "**Fog:**" msgstr "" -#: ../../docs/about/list_of_features.rst:208 +#: ../../docs/about/list_of_features.rst:219 msgid "Depth fog with an adjustable attenuation curve." msgstr "" -#: ../../docs/about/list_of_features.rst:209 +#: ../../docs/about/list_of_features.rst:220 msgid "Height fog (floor or ceiling) with adjustable attenuation." msgstr "" -#: ../../docs/about/list_of_features.rst:210 +#: ../../docs/about/list_of_features.rst:221 msgid "" "Support for automatic depth fog color depending on the camera direction (to " "match the sun color)." msgstr "" -#: ../../docs/about/list_of_features.rst:212 +#: ../../docs/about/list_of_features.rst:223 msgid "Optional transmittance to make lights more visible in the fog." msgstr "" -#: ../../docs/about/list_of_features.rst:214 +#: ../../docs/about/list_of_features.rst:225 msgid "**Particles:**" msgstr "" -#: ../../docs/about/list_of_features.rst:216 +#: ../../docs/about/list_of_features.rst:227 msgid "*GLES3:* GPU-based particles with support for custom particle shaders." msgstr "" -#: ../../docs/about/list_of_features.rst:219 +#: ../../docs/about/list_of_features.rst:230 msgid "**Post-processing:**" msgstr "" -#: ../../docs/about/list_of_features.rst:221 +#: ../../docs/about/list_of_features.rst:232 msgid "Tonemapping (Linear, Reinhard, Filmic, ACES)." msgstr "" -#: ../../docs/about/list_of_features.rst:222 +#: ../../docs/about/list_of_features.rst:233 msgid "*GLES3:* Automatic exposure adjustments based on viewport brightness." msgstr "" -#: ../../docs/about/list_of_features.rst:223 +#: ../../docs/about/list_of_features.rst:234 msgid "*GLES3:* Near and far depth of field." msgstr "" -#: ../../docs/about/list_of_features.rst:224 +#: ../../docs/about/list_of_features.rst:235 msgid "*GLES3:* Screen-space ambient occlusion." msgstr "" -#: ../../docs/about/list_of_features.rst:225 +#: ../../docs/about/list_of_features.rst:236 msgid "" "*GLES3:* Optional debanding to avoid color banding (effective when HDR " "rendering is enabled)." msgstr "" -#: ../../docs/about/list_of_features.rst:226 +#: ../../docs/about/list_of_features.rst:237 msgid "" "Glow/bloom with optional bicubic upscaling and several blend modes " "available: Screen, Soft Light, Add, Replace." msgstr "" -#: ../../docs/about/list_of_features.rst:228 +#: ../../docs/about/list_of_features.rst:239 msgid "Color correction using an one-dimensional ramp." msgstr "" -#: ../../docs/about/list_of_features.rst:229 +#: ../../docs/about/list_of_features.rst:240 msgid "Brightness, contrast and saturation adjustments." msgstr "" -#: ../../docs/about/list_of_features.rst:231 +#: ../../docs/about/list_of_features.rst:242 msgid "**Texture filtering:**" msgstr "" -#: ../../docs/about/list_of_features.rst:233 +#: ../../docs/about/list_of_features.rst:244 msgid "Nearest, bilinear, trilinear or anisotropic filtering." msgstr "" -#: ../../docs/about/list_of_features.rst:235 +#: ../../docs/about/list_of_features.rst:246 msgid "**Texture compression:**" msgstr "" -#: ../../docs/about/list_of_features.rst:237 +#: ../../docs/about/list_of_features.rst:248 msgid "*GLES3:* BPTC for high-quality compression (not supported on macOS)." msgstr "" -#: ../../docs/about/list_of_features.rst:238 +#: ../../docs/about/list_of_features.rst:249 msgid "*GLES3:* ETC2 (not supported on macOS)." msgstr "" -#: ../../docs/about/list_of_features.rst:239 +#: ../../docs/about/list_of_features.rst:250 msgid "ETC1 (recommended when using the GLES2 renderer)." msgstr "" -#: ../../docs/about/list_of_features.rst:240 +#: ../../docs/about/list_of_features.rst:251 msgid "*GLES3:* S3TC (not supported on mobile/Web platforms)." msgstr "" -#: ../../docs/about/list_of_features.rst:242 +#: ../../docs/about/list_of_features.rst:253 msgid "**Anti-aliasing:**" msgstr "" -#: ../../docs/about/list_of_features.rst:244 +#: ../../docs/about/list_of_features.rst:255 msgid "Multi-sample antialiasing (MSAA)." msgstr "" -#: ../../docs/about/list_of_features.rst:245 +#: ../../docs/about/list_of_features.rst:256 msgid "Fast approximate antialiasing (FXAA)." msgstr "" -#: ../../docs/about/list_of_features.rst:247 +#: ../../docs/about/list_of_features.rst:258 msgid "" "Most of these effects can be adjusted for better performance or to further " "improve quality. This can be helpful when using Godot for offline rendering." msgstr "" -#: ../../docs/about/list_of_features.rst:251 +#: ../../docs/about/list_of_features.rst:262 msgid "3D tools" msgstr "" -#: ../../docs/about/list_of_features.rst:253 +#: ../../docs/about/list_of_features.rst:264 msgid "Built-in meshes: cube, cylinder/cone, (hemi)sphere, prism, plane, quad." msgstr "" -#: ../../docs/about/list_of_features.rst:254 +#: ../../docs/about/list_of_features.rst:265 msgid "" "Tools for :ref:`procedural geometry generation `." msgstr "" -#: ../../docs/about/list_of_features.rst:255 +#: ../../docs/about/list_of_features.rst:266 msgid "" ":ref:`Constructive solid geometry ` (intended for " "prototyping)." msgstr "" -#: ../../docs/about/list_of_features.rst:256 +#: ../../docs/about/list_of_features.rst:267 msgid "Path3D node to represent a path in 3D space." msgstr "" -#: ../../docs/about/list_of_features.rst:259 +#: ../../docs/about/list_of_features.rst:270 msgid "PathFollow3D node to make nodes follow a Path3D." msgstr "" -#: ../../docs/about/list_of_features.rst:261 +#: ../../docs/about/list_of_features.rst:272 msgid "3D geometry helper class." msgstr "" -#: ../../docs/about/list_of_features.rst:264 +#: ../../docs/about/list_of_features.rst:275 msgid "3D physics" msgstr "" -#: ../../docs/about/list_of_features.rst:271 +#: ../../docs/about/list_of_features.rst:282 msgid "Vehicle bodies (intended for arcade physics, not simulation)." msgstr "" -#: ../../docs/about/list_of_features.rst:273 +#: ../../docs/about/list_of_features.rst:284 msgid "Soft bodies." msgstr "" -#: ../../docs/about/list_of_features.rst:274 +#: ../../docs/about/list_of_features.rst:285 msgid "Ragdolls." msgstr "" -#: ../../docs/about/list_of_features.rst:279 +#: ../../docs/about/list_of_features.rst:290 msgid "Built-in shapes: cuboid, sphere, capsule, cylinder." msgstr "" -#: ../../docs/about/list_of_features.rst:280 +#: ../../docs/about/list_of_features.rst:291 msgid "Generate triangle collision shapes for any mesh from the editor." msgstr "" -#: ../../docs/about/list_of_features.rst:281 +#: ../../docs/about/list_of_features.rst:292 msgid "" "Generate one or several convex collision shapes for any mesh from the editor." msgstr "" -#: ../../docs/about/list_of_features.rst:284 +#: ../../docs/about/list_of_features.rst:295 #: ../../docs/tutorials/shading/shading_reference/shaders.rst:4 msgid "Shaders" msgstr "" -#: ../../docs/about/list_of_features.rst:286 +#: ../../docs/about/list_of_features.rst:297 msgid "*2D:* Custom vertex, fragment, and light shaders." msgstr "" -#: ../../docs/about/list_of_features.rst:287 +#: ../../docs/about/list_of_features.rst:298 msgid "*3D:* Custom vertex, fragment, light, and sky shaders." msgstr "" -#: ../../docs/about/list_of_features.rst:288 +#: ../../docs/about/list_of_features.rst:299 msgid "" "Text-based shaders using a :ref:`shader language inspired by GLSL " "`." msgstr "" -#: ../../docs/about/list_of_features.rst:289 +#: ../../docs/about/list_of_features.rst:300 msgid "Visual shader editor." msgstr "" -#: ../../docs/about/list_of_features.rst:291 +#: ../../docs/about/list_of_features.rst:302 msgid "Support for visual shader plugins." msgstr "" -#: ../../docs/about/list_of_features.rst:294 +#: ../../docs/about/list_of_features.rst:305 #: ../../docs/about/docs_changelog.rst:113 #: ../../docs/getting_started/step_by_step/scripting.rst:4 #: ../../docs/getting_started/scripting/index.rst:2 @@ -2170,768 +2188,769 @@ msgstr "" msgid "Scripting" msgstr "" -#: ../../docs/about/list_of_features.rst:296 +#: ../../docs/about/list_of_features.rst:307 msgid "**General:**" msgstr "" -#: ../../docs/about/list_of_features.rst:298 +#: ../../docs/about/list_of_features.rst:309 msgid "Object-oriented design pattern with scripts extending nodes." msgstr "" -#: ../../docs/about/list_of_features.rst:299 +#: ../../docs/about/list_of_features.rst:310 msgid "Signals and groups for communicating between scripts." msgstr "" -#: ../../docs/about/list_of_features.rst:300 +#: ../../docs/about/list_of_features.rst:311 msgid "" "Support for :ref:`cross-language scripting `." msgstr "" -#: ../../docs/about/list_of_features.rst:301 +#: ../../docs/about/list_of_features.rst:312 msgid "" "Many 2D and 3D linear algebra data types such as vectors and transforms." msgstr "" -#: ../../docs/about/list_of_features.rst:303 +#: ../../docs/about/list_of_features.rst:314 msgid ":ref:`GDScript: `" msgstr "" -#: ../../docs/about/list_of_features.rst:305 +#: ../../docs/about/list_of_features.rst:316 msgid "" ":ref:`High-level interpreted language ` with :ref:`optional " "static typing `." msgstr "" -#: ../../docs/about/list_of_features.rst:307 +#: ../../docs/about/list_of_features.rst:318 msgid "Syntax inspired by Python." msgstr "" -#: ../../docs/about/list_of_features.rst:308 +#: ../../docs/about/list_of_features.rst:319 msgid "Syntax highlighting is provided on GitHub." msgstr "" -#: ../../docs/about/list_of_features.rst:309 +#: ../../docs/about/list_of_features.rst:320 msgid "" ":ref:`Use threads ` to perform asynchronous " "actions or make use of multiple processor cores." msgstr "" -#: ../../docs/about/list_of_features.rst:312 +#: ../../docs/about/list_of_features.rst:323 msgid ":ref:`C#: `" msgstr "" -#: ../../docs/about/list_of_features.rst:314 +#: ../../docs/about/list_of_features.rst:325 msgid "Packaged in a separate binary to keep file sizes and dependencies down." msgstr "" -#: ../../docs/about/list_of_features.rst:315 +#: ../../docs/about/list_of_features.rst:326 msgid "Uses Mono 6.x." msgstr "" -#: ../../docs/about/list_of_features.rst:317 +#: ../../docs/about/list_of_features.rst:328 msgid "Full support for the C# 7.0 syntax and features." msgstr "" -#: ../../docs/about/list_of_features.rst:319 +#: ../../docs/about/list_of_features.rst:330 msgid "Supports all platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:320 +#: ../../docs/about/list_of_features.rst:331 msgid "" "Using an external editor is recommended to benefit from IDE functionality." msgstr "" -#: ../../docs/about/list_of_features.rst:322 +#: ../../docs/about/list_of_features.rst:333 msgid ":ref:`VisualScript: `" msgstr "" -#: ../../docs/about/list_of_features.rst:324 +#: ../../docs/about/list_of_features.rst:335 msgid "" ":ref:`Graph-based visual scripting language `." msgstr "" -#: ../../docs/about/list_of_features.rst:325 +#: ../../docs/about/list_of_features.rst:336 msgid "" "Works best when used for specific purposes (such as level-specific logic) " "rather than as a language to create entire projects." msgstr "" -#: ../../docs/about/list_of_features.rst:328 +#: ../../docs/about/list_of_features.rst:339 msgid "**GDNative (C, C++, Rust, D, ...):**" msgstr "" -#: ../../docs/about/list_of_features.rst:330 +#: ../../docs/about/list_of_features.rst:341 msgid "" "When you need it, link to native libraries for higher performance and third-" "party integrations." msgstr "" -#: ../../docs/about/list_of_features.rst:332 +#: ../../docs/about/list_of_features.rst:343 msgid "" "For scripting game logic, GDScript or C# are recommended if their " "performance is suitable." msgstr "" -#: ../../docs/about/list_of_features.rst:335 +#: ../../docs/about/list_of_features.rst:346 msgid "Official bindings for C and C++." msgstr "" -#: ../../docs/about/list_of_features.rst:337 +#: ../../docs/about/list_of_features.rst:348 msgid "Use any build system and language features you wish." msgstr "" -#: ../../docs/about/list_of_features.rst:339 +#: ../../docs/about/list_of_features.rst:350 msgid "" "Maintained D, Kotlin, Python, Nim, and Rust bindings provided by the " "community." msgstr "" -#: ../../docs/about/list_of_features.rst:342 +#: ../../docs/about/list_of_features.rst:353 #: ../../docs/about/docs_changelog.rst:28 #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:148 #: ../../docs/tutorials/audio/index.rst:2 msgid "Audio" msgstr "" -#: ../../docs/about/list_of_features.rst:346 +#: ../../docs/about/list_of_features.rst:357 msgid "Mono, stereo, 5.1 and 7.1 output." msgstr "" -#: ../../docs/about/list_of_features.rst:347 +#: ../../docs/about/list_of_features.rst:358 msgid "Non-positional and positional playback in 2D and 3D." msgstr "" -#: ../../docs/about/list_of_features.rst:349 +#: ../../docs/about/list_of_features.rst:360 msgid "Optional Doppler effect in 2D and 3D." msgstr "" -#: ../../docs/about/list_of_features.rst:351 +#: ../../docs/about/list_of_features.rst:362 msgid "" "Support for re-routable :ref:`audio buses ` and effects " "with dozens of effects included." msgstr "" -#: ../../docs/about/list_of_features.rst:353 +#: ../../docs/about/list_of_features.rst:364 msgid "" "Listener3D node to listen from a position different than the camera in 3D." msgstr "" -#: ../../docs/about/list_of_features.rst:354 +#: ../../docs/about/list_of_features.rst:365 msgid "" "Audio input to record microphones with real-time access using the " "AudioEffectCapture class." msgstr "" -#: ../../docs/about/list_of_features.rst:355 +#: ../../docs/about/list_of_features.rst:366 msgid "MIDI input." msgstr "" -#: ../../docs/about/list_of_features.rst:357 +#: ../../docs/about/list_of_features.rst:368 msgid "No support for MIDI output yet." msgstr "" -#: ../../docs/about/list_of_features.rst:359 +#: ../../docs/about/list_of_features.rst:370 msgid "**APIs used:**" msgstr "" -#: ../../docs/about/list_of_features.rst:361 +#: ../../docs/about/list_of_features.rst:372 msgid "*Windows:* WASAPI." msgstr "" -#: ../../docs/about/list_of_features.rst:362 +#: ../../docs/about/list_of_features.rst:373 msgid "*macOS:* CoreAudio." msgstr "" -#: ../../docs/about/list_of_features.rst:363 +#: ../../docs/about/list_of_features.rst:374 msgid "*Linux:* PulseAudio or ALSA." msgstr "" -#: ../../docs/about/list_of_features.rst:366 +#: ../../docs/about/list_of_features.rst:377 msgid "Import" msgstr "" -#: ../../docs/about/list_of_features.rst:368 +#: ../../docs/about/list_of_features.rst:379 msgid "Support for :ref:`custom import plugins `." msgstr "" -#: ../../docs/about/list_of_features.rst:370 +#: ../../docs/about/list_of_features.rst:381 msgid "**Formats:**" msgstr "" -#: ../../docs/about/list_of_features.rst:372 +#: ../../docs/about/list_of_features.rst:383 msgid "*Images:* See :ref:`doc_import_images`." msgstr "" -#: ../../docs/about/list_of_features.rst:373 +#: ../../docs/about/list_of_features.rst:384 msgid "*Audio:*" msgstr "" -#: ../../docs/about/list_of_features.rst:375 +#: ../../docs/about/list_of_features.rst:386 msgid "WAV with optional IMA-ADPCM compression." msgstr "" -#: ../../docs/about/list_of_features.rst:376 +#: ../../docs/about/list_of_features.rst:387 msgid "Ogg Vorbis." msgstr "" -#: ../../docs/about/list_of_features.rst:377 +#: ../../docs/about/list_of_features.rst:388 msgid "MP3." msgstr "" -#: ../../docs/about/list_of_features.rst:379 +#: ../../docs/about/list_of_features.rst:390 msgid "*3D scenes:*" msgstr "" -#: ../../docs/about/list_of_features.rst:381 +#: ../../docs/about/list_of_features.rst:392 msgid "glTF 2.0 *(recommended)*." msgstr "" -#: ../../docs/about/list_of_features.rst:382 +#: ../../docs/about/list_of_features.rst:393 msgid "" "`ESCN `__ (direct " "export from Blender)." msgstr "" -#: ../../docs/about/list_of_features.rst:384 +#: ../../docs/about/list_of_features.rst:395 msgid "FBX (experimental)." msgstr "" -#: ../../docs/about/list_of_features.rst:385 +#: ../../docs/about/list_of_features.rst:396 msgid "Collada (.dae)." msgstr "" -#: ../../docs/about/list_of_features.rst:386 +#: ../../docs/about/list_of_features.rst:397 msgid "Wavefront OBJ (static scenes only, can be loaded directly as a mesh)." msgstr "" -#: ../../docs/about/list_of_features.rst:389 +#: ../../docs/about/list_of_features.rst:400 #: ../../docs/tutorials/gui/custom_gui_controls.rst:112 #: ../../docs/tutorials/viewports/viewports.rst:38 msgid "Input" msgstr "" -#: ../../docs/about/list_of_features.rst:391 +#: ../../docs/about/list_of_features.rst:402 msgid "" "Input mapping system using hardcoded input events or remappable input " "actions." msgstr "" -#: ../../docs/about/list_of_features.rst:393 +#: ../../docs/about/list_of_features.rst:404 msgid "" "Axis values can be mapped to two different actions with a configurable " "deadzone." msgstr "" -#: ../../docs/about/list_of_features.rst:394 +#: ../../docs/about/list_of_features.rst:405 msgid "Use the same code to support both keyboards and gamepads." msgstr "" -#: ../../docs/about/list_of_features.rst:396 +#: ../../docs/about/list_of_features.rst:407 msgid "Keyboard input." msgstr "" -#: ../../docs/about/list_of_features.rst:398 +#: ../../docs/about/list_of_features.rst:409 msgid "" "Keys can be mapped in \"physical\" mode to be independent of the keyboard " "layout." msgstr "" -#: ../../docs/about/list_of_features.rst:400 +#: ../../docs/about/list_of_features.rst:411 msgid "Mouse input." msgstr "" -#: ../../docs/about/list_of_features.rst:402 +#: ../../docs/about/list_of_features.rst:413 msgid "" "The mouse cursor can be visible, hidden, captured or confined within the " "window." msgstr "" -#: ../../docs/about/list_of_features.rst:403 +#: ../../docs/about/list_of_features.rst:414 msgid "" "When captured, raw input will be used on Windows and Linux to sidestep the " "OS' mouse acceleration settings." msgstr "" -#: ../../docs/about/list_of_features.rst:406 +#: ../../docs/about/list_of_features.rst:417 msgid "Gamepad input (up to 8 simultaneous controllers)." msgstr "" -#: ../../docs/about/list_of_features.rst:407 +#: ../../docs/about/list_of_features.rst:418 msgid "Pen/tablet input with pressure support." msgstr "" -#: ../../docs/about/list_of_features.rst:408 +#: ../../docs/about/list_of_features.rst:419 msgid "" "Gamepad, keyboard and mouse input support are also available on Android." msgstr "" -#: ../../docs/about/list_of_features.rst:411 +#: ../../docs/about/list_of_features.rst:422 +#: ../../docs/tutorials/navigation/index.rst:2 msgid "Navigation" msgstr "" -#: ../../docs/about/list_of_features.rst:413 +#: ../../docs/about/list_of_features.rst:424 msgid "A* algorithm in 2D and 3D." msgstr "" -#: ../../docs/about/list_of_features.rst:414 +#: ../../docs/about/list_of_features.rst:425 msgid "Navigation meshes." msgstr "" -#: ../../docs/about/list_of_features.rst:415 +#: ../../docs/about/list_of_features.rst:427 msgid "Support for dynamic obstacle avoidance planned in Godot 4.0." msgstr "" -#: ../../docs/about/list_of_features.rst:416 +#: ../../docs/about/list_of_features.rst:429 msgid "Generate navigation meshes from the editor." msgstr "" -#: ../../docs/about/list_of_features.rst:419 +#: ../../docs/about/list_of_features.rst:432 #: ../../docs/about/docs_changelog.rst:60 #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:160 #: ../../docs/tutorials/networking/index.rst:2 msgid "Networking" msgstr "" -#: ../../docs/about/list_of_features.rst:421 +#: ../../docs/about/list_of_features.rst:434 msgid "Low-level TCP networking using StreamPeer and TCP_Server." msgstr "" -#: ../../docs/about/list_of_features.rst:422 +#: ../../docs/about/list_of_features.rst:435 msgid "Low-level UDP networking using PacketPeer and UDPServer." msgstr "" -#: ../../docs/about/list_of_features.rst:423 +#: ../../docs/about/list_of_features.rst:436 msgid "Low-level HTTP requests using HTTPClient." msgstr "" -#: ../../docs/about/list_of_features.rst:424 +#: ../../docs/about/list_of_features.rst:437 msgid "High-level HTTP requests using HTTPRequest." msgstr "" -#: ../../docs/about/list_of_features.rst:426 +#: ../../docs/about/list_of_features.rst:439 msgid "Supports HTTPS out of the box using bundled certificates." msgstr "" -#: ../../docs/about/list_of_features.rst:428 +#: ../../docs/about/list_of_features.rst:441 msgid "High-level multiplayer API using UDP and ENet." msgstr "" -#: ../../docs/about/list_of_features.rst:430 +#: ../../docs/about/list_of_features.rst:443 msgid "Automatic replication using remote procedure calls (RPCs)." msgstr "" -#: ../../docs/about/list_of_features.rst:431 +#: ../../docs/about/list_of_features.rst:444 msgid "Supports unreliable, reliable and ordered transfers." msgstr "" -#: ../../docs/about/list_of_features.rst:433 +#: ../../docs/about/list_of_features.rst:446 msgid "WebSocket client and server, available on all platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:434 +#: ../../docs/about/list_of_features.rst:447 msgid "WebRTC client and server, available on all platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:435 +#: ../../docs/about/list_of_features.rst:448 msgid "" "Support for UPnP to sidestep the requirement to forward ports when hosting a " "server behind a NAT." msgstr "" -#: ../../docs/about/list_of_features.rst:439 +#: ../../docs/about/list_of_features.rst:452 #: ../../docs/about/docs_changelog.rst:45 ../../docs/tutorials/i18n/index.rst:2 msgid "Internationalization" msgstr "" -#: ../../docs/about/list_of_features.rst:441 +#: ../../docs/about/list_of_features.rst:454 msgid "Full support for Unicode including emoji." msgstr "" -#: ../../docs/about/list_of_features.rst:442 +#: ../../docs/about/list_of_features.rst:455 msgid "" "Store localization strings using :ref:`CSV ` " "or :ref:`gettext `." msgstr "" -#: ../../docs/about/list_of_features.rst:444 +#: ../../docs/about/list_of_features.rst:457 msgid "" "Use localized strings in your project automatically in GUI elements or by " "using the ``tr()`` function." msgstr "" -#: ../../docs/about/list_of_features.rst:446 +#: ../../docs/about/list_of_features.rst:459 msgid "" "Support for right-to-left typesetting and text shaping planned in Godot 4.0." msgstr "" -#: ../../docs/about/list_of_features.rst:449 +#: ../../docs/about/list_of_features.rst:462 msgid "Windowing and OS integration" msgstr "" -#: ../../docs/about/list_of_features.rst:451 +#: ../../docs/about/list_of_features.rst:464 msgid "Move, resize, minimize, and maximize the window spawned by the project." msgstr "" -#: ../../docs/about/list_of_features.rst:452 +#: ../../docs/about/list_of_features.rst:465 msgid "Change the window title and icon." msgstr "" -#: ../../docs/about/list_of_features.rst:453 +#: ../../docs/about/list_of_features.rst:466 msgid "" "Request attention (will cause the title bar to blink on most platforms)." msgstr "" -#: ../../docs/about/list_of_features.rst:454 +#: ../../docs/about/list_of_features.rst:467 msgid "Fullscreen mode." msgstr "" -#: ../../docs/about/list_of_features.rst:456 +#: ../../docs/about/list_of_features.rst:469 msgid "" "Doesn't use exclusive fullscreen, so the screen resolution can't be changed " "this way. Use a Viewport with a different resolution instead." msgstr "" -#: ../../docs/about/list_of_features.rst:459 +#: ../../docs/about/list_of_features.rst:472 msgid "Borderless window (fullscreen or non-fullscreen)." msgstr "" -#: ../../docs/about/list_of_features.rst:460 +#: ../../docs/about/list_of_features.rst:473 msgid "Ability to keep the window always on top." msgstr "" -#: ../../docs/about/list_of_features.rst:461 +#: ../../docs/about/list_of_features.rst:474 msgid "Transparent window with per-pixel transparency." msgstr "" -#: ../../docs/about/list_of_features.rst:462 +#: ../../docs/about/list_of_features.rst:475 msgid "Global menu integration on macOS." msgstr "" -#: ../../docs/about/list_of_features.rst:463 +#: ../../docs/about/list_of_features.rst:476 msgid "Execute commands in a blocking or non-blocking manner." msgstr "" -#: ../../docs/about/list_of_features.rst:464 +#: ../../docs/about/list_of_features.rst:477 msgid "" "Open file paths and URLs using default or custom protocol handlers (if " "registered on the system)." msgstr "" -#: ../../docs/about/list_of_features.rst:465 +#: ../../docs/about/list_of_features.rst:478 msgid "Parse custom command line arguments." msgstr "" -#: ../../docs/about/list_of_features.rst:468 +#: ../../docs/about/list_of_features.rst:481 msgid "Mobile" msgstr "" -#: ../../docs/about/list_of_features.rst:470 +#: ../../docs/about/list_of_features.rst:483 msgid "In-app purchases on Android and iOS." msgstr "" -#: ../../docs/about/list_of_features.rst:471 +#: ../../docs/about/list_of_features.rst:484 msgid "Support for advertisements using third-party modules." msgstr "" -#: ../../docs/about/list_of_features.rst:472 +#: ../../docs/about/list_of_features.rst:485 msgid "Support for subview embedding on Android." msgstr "" -#: ../../docs/about/list_of_features.rst:475 +#: ../../docs/about/list_of_features.rst:488 msgid "XR support (AR and VR)" msgstr "" -#: ../../docs/about/list_of_features.rst:477 +#: ../../docs/about/list_of_features.rst:490 msgid "Support for ARKit on iOS out of the box." msgstr "" -#: ../../docs/about/list_of_features.rst:478 +#: ../../docs/about/list_of_features.rst:491 msgid "Support for the OpenXR and OpenVR APIs." msgstr "" -#: ../../docs/about/list_of_features.rst:479 +#: ../../docs/about/list_of_features.rst:492 msgid "" "Popular VR headsets like the Oculus Quest and HTC Vive are supported thanks " "to plugins." msgstr "" -#: ../../docs/about/list_of_features.rst:482 +#: ../../docs/about/list_of_features.rst:495 msgid "GUI system" msgstr "" -#: ../../docs/about/list_of_features.rst:484 +#: ../../docs/about/list_of_features.rst:497 msgid "" "Godot's GUI is built using the same Control nodes used to make games in " "Godot. The editor UI can easily be extended in many ways using add-ons." msgstr "" -#: ../../docs/about/list_of_features.rst:487 +#: ../../docs/about/list_of_features.rst:500 msgid "**Nodes:**" msgstr "" -#: ../../docs/about/list_of_features.rst:489 +#: ../../docs/about/list_of_features.rst:502 msgid "Buttons." msgstr "" -#: ../../docs/about/list_of_features.rst:490 +#: ../../docs/about/list_of_features.rst:503 msgid "Checkboxes, check buttons, radio buttons." msgstr "" -#: ../../docs/about/list_of_features.rst:491 +#: ../../docs/about/list_of_features.rst:504 msgid "Text entry using LineEdit (single line) and TextEdit (multiple lines)." msgstr "" -#: ../../docs/about/list_of_features.rst:492 +#: ../../docs/about/list_of_features.rst:505 msgid "Dropdown menus using PopupMenu and OptionButton." msgstr "" -#: ../../docs/about/list_of_features.rst:493 +#: ../../docs/about/list_of_features.rst:506 msgid "Scrollbars." msgstr "" -#: ../../docs/about/list_of_features.rst:494 +#: ../../docs/about/list_of_features.rst:507 msgid "Labels." msgstr "" -#: ../../docs/about/list_of_features.rst:495 +#: ../../docs/about/list_of_features.rst:508 msgid "" "RichTextLabel for :ref:`text formatted using BBCode " "`." msgstr "" -#: ../../docs/about/list_of_features.rst:496 +#: ../../docs/about/list_of_features.rst:509 msgid "Trees (can also be used to represent tables)." msgstr "" -#: ../../docs/about/list_of_features.rst:497 +#: ../../docs/about/list_of_features.rst:510 msgid "" "Containers (horizontal, vertical, grid, center, margin, draggable " "splitter, ...)." msgstr "" -#: ../../docs/about/list_of_features.rst:498 +#: ../../docs/about/list_of_features.rst:511 msgid "Controls can be rotated and scaled." msgstr "" -#: ../../docs/about/list_of_features.rst:500 +#: ../../docs/about/list_of_features.rst:513 msgid "**Sizing:**" msgstr "" -#: ../../docs/about/list_of_features.rst:502 +#: ../../docs/about/list_of_features.rst:515 msgid "Anchors to keep GUI elements in a specific corner, edge or centered." msgstr "" -#: ../../docs/about/list_of_features.rst:503 +#: ../../docs/about/list_of_features.rst:516 msgid "Containers to place GUI elements automatically following certain rules." msgstr "" -#: ../../docs/about/list_of_features.rst:505 +#: ../../docs/about/list_of_features.rst:518 msgid ":ref:`Stack ` layouts." msgstr "" -#: ../../docs/about/list_of_features.rst:506 +#: ../../docs/about/list_of_features.rst:519 msgid ":ref:`Grid ` layouts." msgstr "" -#: ../../docs/about/list_of_features.rst:507 +#: ../../docs/about/list_of_features.rst:520 msgid "" ":ref:`Margin ` and :ref:`centered " "` layouts." msgstr "" -#: ../../docs/about/list_of_features.rst:509 +#: ../../docs/about/list_of_features.rst:522 msgid ":ref:`Draggable splitter ` layouts." msgstr "" -#: ../../docs/about/list_of_features.rst:511 +#: ../../docs/about/list_of_features.rst:524 msgid "" "Scale to multiple resolutions using the ``2d`` or ``viewport`` stretch modes." msgstr "" -#: ../../docs/about/list_of_features.rst:512 +#: ../../docs/about/list_of_features.rst:525 msgid "" "Support any aspect ratio using anchors and the ``expand`` stretch aspect." msgstr "" -#: ../../docs/about/list_of_features.rst:514 +#: ../../docs/about/list_of_features.rst:527 msgid "**Theming:**" msgstr "" -#: ../../docs/about/list_of_features.rst:516 +#: ../../docs/about/list_of_features.rst:529 msgid "Built-in theme editor." msgstr "" -#: ../../docs/about/list_of_features.rst:518 +#: ../../docs/about/list_of_features.rst:531 msgid "Generate a theme based on the current editor theme settings." msgstr "" -#: ../../docs/about/list_of_features.rst:520 +#: ../../docs/about/list_of_features.rst:533 msgid "Procedural vector-based theming using :ref:`class_StyleBoxFlat`." msgstr "" -#: ../../docs/about/list_of_features.rst:522 +#: ../../docs/about/list_of_features.rst:535 msgid "Supports rounded/beveled corners, drop shadows and per-border widths." msgstr "" -#: ../../docs/about/list_of_features.rst:524 +#: ../../docs/about/list_of_features.rst:537 msgid "Texture-based theming using :ref:`class_StyleBoxTexture`." msgstr "" -#: ../../docs/about/list_of_features.rst:526 +#: ../../docs/about/list_of_features.rst:539 msgid "" "Godot's small distribution size can make it a suitable alternative to " "frameworks like Electron or Qt." msgstr "" -#: ../../docs/about/list_of_features.rst:530 +#: ../../docs/about/list_of_features.rst:543 #: ../../docs/about/docs_changelog.rst:153 #: ../../docs/getting_started/workflow/assets/escn_exporter/animation.rst:2 #: ../../docs/tutorials/animation/index.rst:2 -#: ../../docs/development/file_formats/tscn.rst:379 +#: ../../docs/development/file_formats/tscn.rst:381 msgid "Animation" msgstr "" -#: ../../docs/about/list_of_features.rst:532 +#: ../../docs/about/list_of_features.rst:545 msgid "Direct kinematics and inverse kinematics." msgstr "" -#: ../../docs/about/list_of_features.rst:533 +#: ../../docs/about/list_of_features.rst:546 msgid "Support for animating any property with customizable interpolation." msgstr "" -#: ../../docs/about/list_of_features.rst:534 +#: ../../docs/about/list_of_features.rst:547 msgid "Support for calling methods in animation tracks." msgstr "" -#: ../../docs/about/list_of_features.rst:535 +#: ../../docs/about/list_of_features.rst:548 msgid "Support for playing sounds in animation tracks." msgstr "" -#: ../../docs/about/list_of_features.rst:536 +#: ../../docs/about/list_of_features.rst:549 msgid "Support for Bézier curves in animation." msgstr "" -#: ../../docs/about/list_of_features.rst:539 -msgid "Formats" +#: ../../docs/about/list_of_features.rst:552 +msgid "File formats" msgstr "" -#: ../../docs/about/list_of_features.rst:541 +#: ../../docs/about/list_of_features.rst:554 msgid "" "Scenes and resources can be saved in :ref:`text-based " "` or binary formats." msgstr "" -#: ../../docs/about/list_of_features.rst:543 +#: ../../docs/about/list_of_features.rst:556 msgid "" "Text-based formats are human-readable and more friendly to version control." msgstr "" -#: ../../docs/about/list_of_features.rst:544 +#: ../../docs/about/list_of_features.rst:557 msgid "Binary formats are faster to save/load for large scenes/resources." msgstr "" -#: ../../docs/about/list_of_features.rst:546 +#: ../../docs/about/list_of_features.rst:559 msgid "Read and write text or binary files using :ref:`class_File`." msgstr "" -#: ../../docs/about/list_of_features.rst:548 +#: ../../docs/about/list_of_features.rst:561 msgid "Can optionally be compressed or encrypted." msgstr "" -#: ../../docs/about/list_of_features.rst:550 +#: ../../docs/about/list_of_features.rst:563 msgid "Read and write :ref:`class_JSON` files." msgstr "" -#: ../../docs/about/list_of_features.rst:551 +#: ../../docs/about/list_of_features.rst:564 msgid "" "Read and write INI-style configuration files using :ref:`class_ConfigFile`." msgstr "" -#: ../../docs/about/list_of_features.rst:553 +#: ../../docs/about/list_of_features.rst:566 msgid "Can (de)serialize any Godot datatype, including Vector, Color, ..." msgstr "" -#: ../../docs/about/list_of_features.rst:555 +#: ../../docs/about/list_of_features.rst:568 msgid "Read XML files using :ref:`class_XMLParser`." msgstr "" -#: ../../docs/about/list_of_features.rst:556 +#: ../../docs/about/list_of_features.rst:569 msgid "" "Pack game data into a PCK file (custom format optimized for fast seeking), " "into a ZIP archive, or directly into the executable for single-file " "distribution." msgstr "" -#: ../../docs/about/list_of_features.rst:558 +#: ../../docs/about/list_of_features.rst:571 msgid "" ":ref:`Export additional PCK files` that can be read by " "the engine to support mods and DLCs." msgstr "" -#: ../../docs/about/list_of_features.rst:562 +#: ../../docs/about/list_of_features.rst:575 #: ../../docs/about/docs_changelog.rst:206 #: ../../docs/tutorials/misc/index.rst:2 msgid "Miscellaneous" msgstr "" -#: ../../docs/about/list_of_features.rst:564 +#: ../../docs/about/list_of_features.rst:577 msgid "" ":ref:`Low-level access to servers ` which allows " "bypassing the scene tree's overhead when needed." msgstr "" -#: ../../docs/about/list_of_features.rst:566 +#: ../../docs/about/list_of_features.rst:579 msgid "Command line interface for automation." msgstr "" -#: ../../docs/about/list_of_features.rst:568 +#: ../../docs/about/list_of_features.rst:581 msgid "Export and deploy projects using continuous integration platforms." msgstr "" -#: ../../docs/about/list_of_features.rst:569 +#: ../../docs/about/list_of_features.rst:582 msgid "" "`Completion scripts `__ are available for Bash, zsh and fish." msgstr "" -#: ../../docs/about/list_of_features.rst:572 +#: ../../docs/about/list_of_features.rst:585 msgid "" "Support for :ref:`C++ modules ` statically linked " "into the engine binary." msgstr "" -#: ../../docs/about/list_of_features.rst:574 +#: ../../docs/about/list_of_features.rst:587 msgid "Engine and editor written in C++03." msgstr "" -#: ../../docs/about/list_of_features.rst:576 +#: ../../docs/about/list_of_features.rst:589 msgid "" "Can be :ref:`compiled ` using GCC, " "Clang and MSVC. MinGW is also supported." msgstr "" -#: ../../docs/about/list_of_features.rst:578 +#: ../../docs/about/list_of_features.rst:591 msgid "" "Friendly towards packagers. In most cases, system libraries can be used " "instead of the ones provided by Godot. The build system doesn't download " "anything. Builds can be fully reproducible." msgstr "" -#: ../../docs/about/list_of_features.rst:581 +#: ../../docs/about/list_of_features.rst:594 msgid "Godot 4.0 will be written in C++17." msgstr "" -#: ../../docs/about/list_of_features.rst:583 +#: ../../docs/about/list_of_features.rst:596 msgid "Licensed under the permissive MIT license." msgstr "" -#: ../../docs/about/list_of_features.rst:585 +#: ../../docs/about/list_of_features.rst:598 msgid "" "Open developement process with :ref:`contributions welcome " "`." msgstr "" -#: ../../docs/about/list_of_features.rst:589 +#: ../../docs/about/list_of_features.rst:602 msgid "" "The `Godot proposals repository `__ lists features that have been requested by the community and " @@ -3254,7 +3273,7 @@ msgstr "" msgid ":ref:`doc_animation_tree`" msgstr "" -#: ../../docs/about/docs_changelog.rst:159 ../../docs/tutorials/gui/index.rst:2 +#: ../../docs/about/docs_changelog.rst:159 msgid "GUI" msgstr "" @@ -3355,7 +3374,7 @@ msgstr "" #: ../../docs/about/docs_changelog.rst:214 #: ../../docs/tutorials/plugins/gdnative/gdnative-c-example.rst:349 #: ../../docs/development/compiling/index.rst:2 -#: ../../docs/development/compiling/compiling_for_windows.rst:104 +#: ../../docs/development/compiling/compiling_for_windows.rst:101 #: ../../docs/development/compiling/compiling_for_x11.rst:95 #: ../../docs/development/compiling/compiling_for_osx.rst:37 #: ../../docs/development/compiling/compiling_for_ios.rst:20 @@ -3495,186 +3514,190 @@ msgid "" "Whenever a new major version is released, we make the previous stable branch " "a long-term supported release, and do our best to provide fixes for issues " "encountered by users of that branch who cannot port complex projects to the " -"new major version. This is the case for the 2.1 branch, and will be the case " -"for the latest 3.x stable branch by the time Godot 4.0 is released." +"new major version. This was the case for the 2.1 branch, and will be the " +"case for the latest 3.x stable branch by the time Godot 4.0 is released." msgstr "" -#: ../../docs/about/release_policy.rst:84 +#: ../../docs/about/release_policy.rst:83 +msgid "" +"In a given minor release series, only the latest patch release receives " +"support. If you experience an issue using an older patch release, please " +"upgrade to the latest patch release of that series and test again before " +"reporting an issue on GitHub." +msgstr "" + +#: ../../docs/about/release_policy.rst:89 msgid "**Version**" msgstr "" -#: ../../docs/about/release_policy.rst:84 +#: ../../docs/about/release_policy.rst:89 msgid "**Release date**" msgstr "" -#: ../../docs/about/release_policy.rst:84 +#: ../../docs/about/release_policy.rst:89 msgid "**Support level**" msgstr "" -#: ../../docs/about/release_policy.rst:86 +#: ../../docs/about/release_policy.rst:91 msgid "Godot 4.0" msgstr "" -#: ../../docs/about/release_policy.rst:86 +#: ../../docs/about/release_policy.rst:91 msgid "~2022 (see below)" msgstr "" -#: ../../docs/about/release_policy.rst:86 +#: ../../docs/about/release_policy.rst:91 msgid "|unstable| *Current focus of development (unstable).*" msgstr "" -#: ../../docs/about/release_policy.rst:88 +#: ../../docs/about/release_policy.rst:93 msgid "Godot 3.4" msgstr "" -#: ../../docs/about/release_policy.rst:88 +#: ../../docs/about/release_policy.rst:93 msgid "Q4 2021" msgstr "" -#: ../../docs/about/release_policy.rst:88 +#: ../../docs/about/release_policy.rst:93 msgid "" "|supported| *Beta.* Receives new features as well as bug fixes while under " "development." msgstr "" -#: ../../docs/about/release_policy.rst:91 +#: ../../docs/about/release_policy.rst:96 msgid "Godot 3.3" msgstr "" -#: ../../docs/about/release_policy.rst:91 +#: ../../docs/about/release_policy.rst:96 msgid "April 2021" msgstr "" -#: ../../docs/about/release_policy.rst:91 +#: ../../docs/about/release_policy.rst:96 msgid "" "|supported| Receives fixes for bugs, security and platform support issues, " "as well as backwards-compatible usability enhancements." msgstr "" -#: ../../docs/about/release_policy.rst:94 +#: ../../docs/about/release_policy.rst:99 msgid "Godot 3.2" msgstr "" -#: ../../docs/about/release_policy.rst:94 +#: ../../docs/about/release_policy.rst:99 msgid "January 2020" msgstr "" -#: ../../docs/about/release_policy.rst:94 +#: ../../docs/about/release_policy.rst:99 msgid "" "|eol| No longer supported as fully superseded by the compatible 3.3 release " "(last update: 3.2.3)." msgstr "" -#: ../../docs/about/release_policy.rst:97 +#: ../../docs/about/release_policy.rst:102 msgid "Godot 3.1" msgstr "" -#: ../../docs/about/release_policy.rst:97 +#: ../../docs/about/release_policy.rst:102 msgid "March 2019" msgstr "" -#: ../../docs/about/release_policy.rst:97 -msgid "" -"|partial| Only critical, security and platform support fixes (last update: " -"3.1.2)." +#: ../../docs/about/release_policy.rst:102 +msgid "|eol| No longer supported (last update: 3.1.2)." msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:104 msgid "Godot 3.0" msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:104 msgid "January 2018" msgstr "" -#: ../../docs/about/release_policy.rst:100 +#: ../../docs/about/release_policy.rst:104 msgid "|eol| No longer supported (last update: 3.0.6)." msgstr "" -#: ../../docs/about/release_policy.rst:102 +#: ../../docs/about/release_policy.rst:106 msgid "Godot 2.1" msgstr "" -#: ../../docs/about/release_policy.rst:102 +#: ../../docs/about/release_policy.rst:106 msgid "July 2016" msgstr "" -#: ../../docs/about/release_policy.rst:102 -msgid "" -"|partial| Only critical, security and platform support fixes (last update: " -"2.1.6)." +#: ../../docs/about/release_policy.rst:106 +msgid "|eol| No longer supported (last update: 2.1.6)." msgstr "" -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:108 msgid "Godot 2.0" msgstr "" -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:108 msgid "February 2016" msgstr "" -#: ../../docs/about/release_policy.rst:105 +#: ../../docs/about/release_policy.rst:108 msgid "|eol| No longer supported (last update: 2.0.4.1)." msgstr "" -#: ../../docs/about/release_policy.rst:107 +#: ../../docs/about/release_policy.rst:110 msgid "Godot 1.1" msgstr "" -#: ../../docs/about/release_policy.rst:107 +#: ../../docs/about/release_policy.rst:110 msgid "May 2015" msgstr "" -#: ../../docs/about/release_policy.rst:107 -#: ../../docs/about/release_policy.rst:109 +#: ../../docs/about/release_policy.rst:110 +#: ../../docs/about/release_policy.rst:112 msgid "|eol| No longer supported." msgstr "" -#: ../../docs/about/release_policy.rst:109 +#: ../../docs/about/release_policy.rst:112 msgid "Godot 1.0" msgstr "" -#: ../../docs/about/release_policy.rst:109 +#: ../../docs/about/release_policy.rst:112 msgid "December 2014" msgstr "" -#: ../../docs/about/release_policy.rst:117 +#: ../../docs/about/release_policy.rst:120 msgid "" "**Legend:** |supported| Full support – |partial| Partial support – |eol| No " "support (end of life) – |unstable| Development version" msgstr "" -#: ../../docs/about/release_policy.rst:123 +#: ../../docs/about/release_policy.rst:126 msgid "" "Pre-release Godot versions aren't intended to be used in production and are " "provided for testing purposes only." msgstr "" -#: ../../docs/about/release_policy.rst:129 +#: ../../docs/about/release_policy.rst:132 msgid "When is the next release out?" msgstr "" -#: ../../docs/about/release_policy.rst:131 +#: ../../docs/about/release_policy.rst:134 msgid "" "While Godot contributors aren't working under any deadlines, we have " "historically had one major or minor release per year, with several " "maintenance updates between each." msgstr "" -#: ../../docs/about/release_policy.rst:135 +#: ../../docs/about/release_policy.rst:138 msgid "" "Starting with Godot 3.3, we aim to accelerate our development cycles for " "minor releases, so you can expect a new minor release every 3 to 6 months." msgstr "" -#: ../../docs/about/release_policy.rst:138 +#: ../../docs/about/release_policy.rst:141 msgid "" "Maintenance (patch) releases will be released as needed with potentially " "very short development cycles, to provide users of the current stable branch " "with the latest bug fixes for their production needs." msgstr "" -#: ../../docs/about/release_policy.rst:142 +#: ../../docs/about/release_policy.rst:145 msgid "" "As for the upcoming Godot 4.0, we can only say that we aim for a **2022** " "release, but any closer estimate is likely to be hard to uphold. Alpha " @@ -3962,9 +3985,10 @@ msgid "" msgstr "" #: ../../docs/getting_started/step_by_step/scenes_and_nodes.rst:29 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:223 #: ../../docs/getting_started/workflow/assets/importing_scenes.rst:143 #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:46 -#: ../../docs/development/file_formats/tscn.rst:28 +#: ../../docs/development/file_formats/tscn.rst:30 msgid "Nodes" msgstr "" @@ -4391,6 +4415,7 @@ msgstr "" #: ../../docs/getting_started/step_by_step/instancing.rst:119 #: ../../docs/getting_started/step_by_step/signals.rst:276 #: ../../docs/getting_started/workflow/best_practices/scenes_versus_scripts.rst:205 +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:80 #: ../../docs/tutorials/shading/your_first_shader/your_first_canvasitem_shader.rst:214 msgid "Conclusion" msgstr "" @@ -5261,10 +5286,10 @@ msgid "Signal" msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:7 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1364 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:531 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1389 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:579 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:164 -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:696 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:703 #: ../../docs/development/cpp/object_class.rst:219 msgid "Signals" msgstr "" @@ -5451,7 +5476,7 @@ msgstr "" #: ../../docs/getting_started/step_by_step/signals.rst:248 msgid "" -"To pass values, add them as subsequent arguments to the ``emit_signal`` " +"To pass values, add them as the second argument to the ``emit_signal`` " "function:" msgstr "" @@ -5475,6 +5500,7 @@ msgstr "" #: ../../docs/getting_started/step_by_step/your_first_game.rst:7 #: ../../docs/getting_started/step_by_step/exporting.rst:7 +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:7 #: ../../docs/tutorials/animation/introduction.rst:7 #: ../../docs/tutorials/assetlib/using_assetlib.rst:10 msgid "Overview" @@ -5491,30 +5517,31 @@ msgstr "" msgid "" "This project is an introduction to the Godot engine. It assumes that you " "have some programming experience already. If you're new to programming " -"entirely, you should start here: :ref:`doc_scripting`." +"entirely, you should start here: :ref:`doc_scripting`. If you want to use C# " +"in Godot, please also read :ref:`doc_c_sharp` before continuing." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:18 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:19 msgid "" "The game is called \"Dodge the Creeps!\". Your character must move and avoid " "the enemies for as long as possible. Here is a preview of the final result:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:24 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:25 msgid "" "**Why 2D?** 3D games are much more complex than 2D ones. You should stick to " "2D until you have a good understanding of the game development process and " "how to use Godot." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:29 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:30 #: ../../docs/getting_started/workflow/project_setup/index.rst:2 #: ../../docs/tutorials/2d/using_tilemaps.rst:21 #: ../../docs/tutorials/misc/state_design_pattern.rst:234 msgid "Project setup" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:31 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:32 msgid "" "Launch Godot and create a new project. Then, download :download:" "`dodge_assets.zip `. This contains the images and " @@ -5522,32 +5549,32 @@ msgid "" "folder." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:36 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:37 msgid "" "For this tutorial, we will assume you are familiar with the Godot editor. If " "you haven't read :ref:`doc_scenes_and_nodes`, do so now for an explanation " "of setting up a project and using the editor." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:40 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:41 msgid "" "This game is designed for portrait mode, so we need to adjust the size of " "the game window. Click on Project -> Project Settings -> Display -> Window " "and set \"Width\" to ``480`` and \"Height\" to ``720``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:44 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:45 msgid "" "Also in this section, under the \"Stretch\" options, set ``Mode`` to \"2d\" " "and ``Aspect`` to \"keep\". This ensures that the game scales consistently " "on different sized screens." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:49 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:50 msgid "Organizing the project" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:51 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:52 msgid "" "In this project, we will make 3 independent scenes: ``Player``, ``Mob``, and " "``HUD``, which we will combine into the game's ``Main`` scene. In a larger " @@ -5557,22 +5584,22 @@ msgid "" "see your project folders in the FileSystem Dock in the lower left corner:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:62 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:63 msgid "Player scene" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:64 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:65 msgid "" "The first scene will define the ``Player`` object. One of the benefits of " "creating a separate Player scene is that we can test it separately, even " "before we've created other parts of the game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:69 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:70 msgid "Node structure" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:71 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:72 msgid "" "To begin, we need to choose a root node for the player object. As a general " "rule, a scene's root node should reflect the object's desired functionality " @@ -5580,13 +5607,13 @@ msgid "" "`Area2D ` node to the scene." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:78 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:79 msgid "" "Godot will display a warning icon next to the node in the scene tree. You " "can ignore it for now. We will address it later." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:81 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:82 msgid "" "With ``Area2D`` we can detect objects that overlap or run into the player. " "Change the node's name to ``Player`` by double-clicking on it. Now that " @@ -5594,7 +5621,7 @@ msgid "" "functionality." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:86 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:87 msgid "" "Before we add any children to the ``Player`` node, we want to make sure we " "don't accidentally move or resize them by clicking on them. Select the node " @@ -5602,23 +5629,23 @@ msgid "" "the object's children are not selectable.\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:93 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:94 msgid "" "Save the scene. Click Scene -> Save, or press :kbd:`Ctrl + S` on Windows/" "Linux or :kbd:`Cmd + S` on macOS." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:95 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:96 msgid "For this project, we will be following the Godot naming conventions." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:97 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:98 msgid "" "**GDScript**: Classes (nodes) use PascalCase, variables and functions use " "snake_case, and constants use ALL_CAPS (See :ref:`doc_gdscript_styleguide`)." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:101 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:102 msgid "" "**C#**: Classes, export variables and methods use PascalCase, private fields " "use _camelCase, local variables and parameters use camelCase (See :ref:" @@ -5626,11 +5653,11 @@ msgid "" "when connecting signals." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:108 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:109 msgid "Sprite animation" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:110 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:111 msgid "" "Click on the ``Player`` node and add an :ref:`AnimatedSprite " "` node as a child. The ``AnimatedSprite`` will handle " @@ -5642,7 +5669,7 @@ msgid "" "\"SpriteFrames\" panel:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:121 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:122 msgid "" "On the left is a list of animations. Click the \"default\" one and rename it " "to \"walk\". Then click the \"New Animation\" button to create a second " @@ -5653,7 +5680,7 @@ msgid "" "animation:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:130 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:131 msgid "" "The player images are a bit too large for the game window, so we need to " "scale them down. Click on the ``AnimatedSprite`` node and set the ``Scale`` " @@ -5661,7 +5688,7 @@ msgid "" "``Node2D`` heading." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:137 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:138 msgid "" "Finally, add a :ref:`CollisionShape2D ` as a child " "of ``Player``. This will determine the player's \"hitbox\", or the bounds of " @@ -5671,48 +5698,42 @@ msgid "" "cover the sprite:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:146 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:147 msgid "When you're finished, your ``Player`` scene should look like this:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:150 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:151 msgid "Make sure to save the scene again after these changes." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:153 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:154 msgid "Moving the player" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:155 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:156 msgid "" "Now we need to add some functionality that we can't get from a built-in " "node, so we'll add a script. Click the ``Player`` node and click the " "\"Attach Script\" button:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:161 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:162 msgid "" "In the script settings window, you can leave the default settings alone. " "Just click \"Create\":" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:164 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:165 msgid "" "If you're creating a C# script or other languages, select the language from " "the `language` drop down menu before hitting create." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:169 -msgid "" -"If this is your first time encountering GDScript, please read :ref:" -"`doc_scripting` before continuing." -msgstr "" - -#: ../../docs/getting_started/step_by_step/your_first_game.rst:172 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:170 msgid "Start by declaring the member variables this object will need:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:193 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:191 msgid "" "Using the ``export`` keyword on the first variable ``speed`` allows us to " "set its value in the Inspector. This can be handy for values that you want " @@ -5722,7 +5743,7 @@ msgid "" "here, it will override the value written in the script." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:200 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:198 msgid "" "If you're using C#, you need to (re)build the project assemblies whenever " "you want to see new export variables or signals. This build can be manually " @@ -5730,13 +5751,13 @@ msgid "" "to reveal the Mono Panel, then clicking the \"Build Project\" button." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:208 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:206 msgid "" "The ``_ready()`` function is called when a node enters the scene tree, which " "is a good time to find the size of the game window:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:224 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:222 msgid "" "Now we can use the ``_process()`` function to define what the player will " "do. ``_process()`` is called every frame, so we'll use it to update elements " @@ -5744,19 +5765,19 @@ msgid "" "do the following:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:229 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:227 msgid "Check for input." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:230 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:228 msgid "Move in the given direction." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:231 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:229 msgid "Play the appropriate animation." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:233 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:231 msgid "" "First, we need to check for input - is the player pressing a key? For this " "game, we have 4 direction inputs to check. Input actions are defined in the " @@ -5766,13 +5787,13 @@ msgid "" "keyboard." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:240 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:238 msgid "" "You can detect whether a key is pressed using ``Input.is_action_pressed()``, " "which returns ``true`` if it's pressed or ``false`` if it isn't." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:302 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:300 msgid "" "We start by setting the ``velocity`` to ``(0, 0)`` - by default, the player " "should not be moving. Then we check each input and add/subtract from the " @@ -5783,41 +5804,41 @@ msgid "" "horizontally." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:309 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:307 msgid "" "We can prevent that if we *normalize* the velocity, which means we set its " "*length* to ``1``, then multiply by the desired speed. This means no more " "fast diagonal movement." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:313 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:311 msgid "" "If you've never used vector math before, or need a refresher, you can see an " "explanation of vector usage in Godot at :ref:`doc_vector_math`. It's good to " "know but won't be necessary for the rest of this tutorial." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:317 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:315 msgid "" "We also check whether the player is moving so we can call ``play()`` or " "``stop()`` on the AnimatedSprite." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:320 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:318 msgid "" "``$`` is shorthand for ``get_node()``. So in the code above, ``" "$AnimatedSprite.play()`` is the same as ``get_node(\"AnimatedSprite\")." "play()``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:323 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:321 msgid "" "In GDScript, ``$`` returns the node at the relative path from the current " "node, or returns ``null`` if the node is not found. Since AnimatedSprite is " "a child of the current node, we can use ``$AnimatedSprite``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:326 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:324 msgid "" "Now that we have a movement direction, we can update the player's position. " "We can also use ``clamp()`` to prevent it from leaving the screen. " @@ -5826,7 +5847,7 @@ msgid "" "under the `else`):" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:347 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:345 msgid "" "The `delta` parameter in the `_process()` function refers to the *frame " "length* - the amount of time that the previous frame took to complete. Using " @@ -5834,34 +5855,34 @@ msgid "" "frame rate changes." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:352 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:350 msgid "" "Click \"Play Scene\" (``F6``) and confirm you can move the player around the " "screen in all directions." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:355 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:353 msgid "If you get an error in the \"Debugger\" panel that says" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:357 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:355 msgid "" "``Attempt to call function 'play' in base 'null instance' on a null " "instance``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:359 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:357 msgid "" "this likely means you spelled the name of the AnimatedSprite node wrong. " "Node names are case-sensitive and ``$NodeName`` must match the name you see " "in the scene tree." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:364 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:362 msgid "Choosing animations" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:366 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:364 msgid "" "Now that the player can move, we need to change which animation the " "AnimatedSprite is playing based on its direction. We have the \"walk\" " @@ -5872,7 +5893,7 @@ msgid "" "the end of the ``_process()`` function:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:401 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:399 msgid "" "The boolean assignments in the code above are a common shorthand for " "programmers. Since we're doing a comparison test (boolean) and also " @@ -5880,13 +5901,13 @@ msgid "" "code versus the one-line boolean assignment above:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:425 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:423 msgid "" "Play the scene again and check that the animations are correct in each of " "the directions." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:428 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:426 msgid "" "A common mistake here is to type the names of the animations wrong. The " "animation names in the SpriteFrames panel must match what you type in the " @@ -5894,28 +5915,28 @@ msgid "" "\"W\" in the code." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:433 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:431 msgid "" "When you're sure the movement is working correctly, add this line to " "``_ready()``, so the player will be hidden when the game starts:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:446 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:444 msgid "Preparing for collisions" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:448 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:446 msgid "" "We want ``Player`` to detect when it's hit by an enemy, but we haven't made " "any enemies yet! That's OK, because we're going to use Godot's *signal* " "functionality to make it work." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:452 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:450 msgid "Add the following at the top of the script, after ``extends Area2D``:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:466 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:464 msgid "" "This defines a custom signal called \"hit\" that we will have our player " "emit (send out) when it collides with an enemy. We will use ``Area2D`` to " @@ -5923,7 +5944,7 @@ msgid "" "next to the Inspector tab to see the list of signals the player can emit:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:473 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:471 msgid "" "Notice our custom \"hit\" signal is there as well! Since our enemies are " "going to be ``RigidBody2D`` nodes, we want the ``body_entered(body: Node)`` " @@ -5933,84 +5954,84 @@ msgid "" "automatically create a function in your player's script." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:482 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:480 msgid "" "Note the green icon indicating that a signal is connected to this function. " "Add this code to the function:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:502 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:500 msgid "" "Each time an enemy hits the player, the signal is going to be emitted. We " "need to disable the player's collision so that we don't trigger the ``hit`` " "signal more than once." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:506 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:504 msgid "" "Disabling the area's collision shape can cause an error if it happens in the " "middle of the engine's collision processing. Using ``set_deferred()`` tells " "Godot to wait to disable the shape until it's safe to do so." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:510 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:508 msgid "" "The last piece is to add a function we can call to reset the player when " "starting a new game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:531 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:529 msgid "Enemy scene" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:533 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:531 msgid "" "Now it's time to make the enemies our player will have to dodge. Their " "behavior will not be very complex: mobs will spawn randomly at the edges of " "the screen, choose a random direction, and move in a straight line." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:537 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:535 msgid "" "We'll create a ``Mob`` scene, which we can then *instance* to create any " "number of independent mobs in the game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:540 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:538 msgid "See :ref:`doc_instancing` to learn more about instancing." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:543 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:541 msgid "Node setup" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:545 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:543 msgid "Click Scene -> New Scene and add the following nodes:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:547 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:545 msgid ":ref:`RigidBody2D ` (named ``Mob``)" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:549 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:547 msgid ":ref:`AnimatedSprite `" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:550 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:548 msgid ":ref:`CollisionShape2D `" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:551 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:549 msgid ":ref:`VisibilityNotifier2D `" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:553 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:551 msgid "" "Don't forget to set the children so they can't be selected, like you did " "with the Player scene." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:556 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:554 msgid "" "In the :ref:`RigidBody2D ` properties, set ``Gravity " "Scale`` to ``0``, so the mob will not fall downward. In addition, under the " @@ -6018,166 +6039,166 @@ msgid "" "box. This will ensure the mobs do not collide with each other." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:563 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:561 msgid "" "Set up the :ref:`AnimatedSprite ` like you did for the " "player. This time, we have 3 animations: ``fly``, ``swim``, and ``walk``. " "There are two images for each animation in the art folder." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:567 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:565 msgid "Adjust the \"Speed (FPS)\" to ``3`` for all animations." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:571 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:569 msgid "Set the ``Playing`` property in the Inspector to “On”." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:573 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:571 msgid "" "We'll select one of these animations randomly so that the mobs will have " "some variety." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:575 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:573 msgid "" "Like the player images, these mob images need to be scaled down. Set the " "``AnimatedSprite``'s ``Scale`` property to ``(0.75, 0.75)``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:578 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:576 msgid "" "As in the ``Player`` scene, add a ``CapsuleShape2D`` for the collision. To " "align the shape with the image, you'll need to set the ``Rotation Degrees`` " "property to ``90`` (under \"Transform\" in the Inspector)." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:582 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:580 msgid "Save the scene." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:585 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:583 msgid "Enemy script" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:587 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:585 msgid "Add a script to the ``Mob`` and add the following member variables:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:611 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:609 msgid "" "When we spawn a mob, we'll pick a random value between ``min_speed`` and " "``max_speed`` for how fast each mob will move (it would be boring if they " "were all moving at the same speed)." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:615 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:613 msgid "" "Now let's look at the rest of the script. In ``_ready()`` we randomly choose " "one of the three animation types:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:637 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:635 msgid "" "First, we get the list of animation names from the AnimatedSprite's " "``frames`` property. This returns an Array containing all three animation " "names: ``[\"walk\", \"swim\", \"fly\"]``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:641 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:639 msgid "" "We then need to pick a random number between ``0`` and ``2`` to select one " "of these names from the list (array indices start at ``0``). ``randi() % n`` " "selects a random integer between ``0`` and ``n-1``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:645 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:643 msgid "" "You must use ``randomize()`` if you want your sequence of \"random\" numbers " "to be different every time you run the scene. We're going to use " "``randomize()`` in our ``Main`` scene, so we won't need it here." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:649 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:647 msgid "" "The last piece is to make the mobs delete themselves when they leave the " "screen. Connect the ``screen_exited()`` signal of the " "``VisibilityNotifier2D`` node and add this code:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:666 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:664 msgid "This completes the `Mob` scene." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:669 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:667 msgid "Main scene" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:671 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:669 msgid "" "Now it's time to bring it all together. Create a new scene and add a :ref:" "`Node ` named ``Main``. Ensure you create a Node, **not** a " "Node2D. Click the \"Instance\" button and select your saved ``Player.tscn``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:678 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:676 msgid "" "Now, add the following nodes as children of ``Main``, and name them as shown " "(values are in seconds):" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:681 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:679 msgid "" ":ref:`Timer ` (named ``MobTimer``) - to control how often mobs " "spawn" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:682 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:680 msgid "" ":ref:`Timer ` (named ``ScoreTimer``) - to increment the score " "every second" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:683 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:681 msgid "" ":ref:`Timer ` (named ``StartTimer``) - to give a delay before " "starting" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:684 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:682 msgid "" ":ref:`Position2D ` (named ``StartPosition``) - to indicate " "the player's start position" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:686 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:684 msgid "" "Set the ``Wait Time`` property of each of the ``Timer`` nodes as follows:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:689 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:687 msgid "``MobTimer``: ``0.5``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:690 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:688 msgid "``ScoreTimer``: ``1``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:691 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:689 msgid "``StartTimer``: ``2``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:693 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:691 msgid "" "In addition, set the ``One Shot`` property of ``StartTimer`` to \"On\" and " "set ``Position`` of the ``StartPosition`` node to ``(240, 450)``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:697 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:695 msgid "Spawning mobs" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:699 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:697 msgid "" "The Main node will be spawning new mobs, and we want them to appear at a " "random location on the edge of the screen. Add a :ref:`Path2D " @@ -6185,7 +6206,7 @@ msgid "" "select ``Path2D``, you will see some new buttons at the top of the editor:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:706 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:704 msgid "" "Select the middle one (\"Add Point\") and draw the path by clicking to add " "the points at the corners shown. To have the points snap to the grid, make " @@ -6194,19 +6215,19 @@ msgid "" "some dots and intersecting lines, respectively." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:714 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:712 msgid "" "Draw the path in *clockwise* order, or your mobs will spawn pointing " "*outwards* instead of *inwards*!" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:719 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:717 msgid "" "After placing point ``4`` in the image, click the \"Close Curve\" button and " "your curve will be complete." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:722 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:720 msgid "" "Now that the path is defined, add a :ref:`PathFollow2D ` " "node as a child of ``MobPath`` and name it ``MobSpawnLocation``. This node " @@ -6214,49 +6235,49 @@ msgid "" "to select a random position and direction along the path." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:727 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:725 msgid "Your scene should look like this:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:732 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:730 msgid "Main script" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:734 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:732 msgid "" "Add a script to ``Main``. At the top of the script, we use ``export " "(PackedScene)`` to allow us to choose the Mob scene we want to instance." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:774 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:772 msgid "" "Click the ``Main`` node and you will see the ``Mob`` property in the " "Inspector under \"Script Variables\"." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:777 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:775 msgid "You can assign this property's value in two ways:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:779 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:777 msgid "" "Drag ``Mob.tscn`` from the \"FileSystem\" panel and drop it in the ``Mob`` " "property ." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:781 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:779 msgid "" "Click the down arrow next to \"[empty]\" and choose \"Load\". Select ``Mob." "tscn``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:784 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:782 msgid "" "Next, select the ``Player`` node in the Scene dock, and access the Node dock " "on the sidebar. Make sure to have the Signals tab selected in the Node dock." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:787 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:785 msgid "" "You should see a list of the signals for the ``Player`` node. Find and " "double-click the ``hit`` signal in the list (or right-click it and select " @@ -6268,7 +6289,7 @@ msgid "" "will set everything up for a new game:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:828 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:826 msgid "" "Now connect the ``timeout()`` signal of each of the Timer nodes " "(``StartTimer``, ``ScoreTimer`` , and ``MobTimer``) to the main script. " @@ -6276,7 +6297,7 @@ msgid "" "increment the score by 1." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:855 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:853 msgid "" "In ``_on_MobTimer_timeout()``, we will create a mob instance, pick a random " "starting location along the ``Path2D``, and set the mob in motion. The " @@ -6284,52 +6305,52 @@ msgid "" "we will use that to select the mob's direction as well as its position." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:861 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:859 msgid "" "Note that a new instance must be added to the scene using ``add_child()``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:909 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:907 msgid "" "Why ``PI``? In functions requiring angles, GDScript uses *radians*, not " "degrees. If you're more comfortable working with degrees, you'll need to use " "the ``deg2rad()`` and ``rad2deg()`` functions to convert between the two." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:915 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:913 msgid "Testing the scene" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:917 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:915 msgid "" "Let's test the scene to make sure everything is working. Add this to " "``_ready()``:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:934 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:932 msgid "" "Let's also assign ``Main`` as our \"Main Scene\" - the one that runs " "automatically when the game launches. Press the \"Play\" button and select " "``Main.tscn`` when prompted." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:938 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:936 msgid "" "You should be able to move the player around, see mobs spawning, and see the " "player disappear when hit by a mob." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:941 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:939 msgid "" "When you're sure everything is working, remove the call to ``new_game()`` " "from ``_ready()``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:945 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:943 msgid "HUD" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:947 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:945 msgid "" "The final piece our game needs is a UI: an interface to display things like " "score, a \"game over\" message, and a restart button. Create a new scene, " @@ -6338,57 +6359,57 @@ msgid "" "overlay on top of the game view." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:953 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:951 msgid "" "The :ref:`CanvasLayer ` node lets us draw our UI elements " "on a layer above the rest of the game, so that the information it displays " "isn't covered up by any game elements like the player or mobs." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:957 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:955 msgid "The HUD needs to display the following information:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:959 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:957 msgid "Score, changed by ``ScoreTimer``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:960 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:958 msgid "A message, such as \"Game Over\" or \"Get Ready!\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:961 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:959 msgid "A \"Start\" button to begin the game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:963 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:961 msgid "" "The basic node for UI elements is :ref:`Control `. To create " "our UI, we'll use two types of :ref:`Control ` nodes: :ref:" "`Label ` and :ref:`Button `." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:967 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:965 msgid "Create the following as children of the ``HUD`` node:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:969 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:967 msgid ":ref:`Label ` named ``ScoreLabel``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:970 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:968 msgid ":ref:`Label ` named ``Message``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:971 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:969 msgid ":ref:`Button ` named ``StartButton``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:972 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:970 msgid ":ref:`Timer ` named ``MessageTimer``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:974 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:972 msgid "" "Click on the ``ScoreLabel`` and type a number into the ``Text`` field in the " "Inspector. The default font for ``Control`` nodes is small and doesn't scale " @@ -6396,25 +6417,25 @@ msgid "" "Regular.ttf\". To use this font, do the following:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:979 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:977 msgid "Under \"Custom Fonts\", choose \"New DynamicFont\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:983 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:981 msgid "" "Click on the \"DynamicFont\" you added, and under \"Font/Font Data\", choose " "\"Load\" and select the \"Xolonium-Regular.ttf\" file. You must also set the " "font's ``Size``. A setting of ``64`` works well." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:989 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:987 msgid "" "Once you've done this on the ``ScoreLabel``, you can click the down arrow " "next to the DynamicFont property and choose \"Copy\", then \"Paste\" it in " "the same place on the other two Control nodes." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:993 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:991 msgid "" "**Anchors and Margins:** ``Control`` nodes have a position and size, but " "they also have anchors and margins. Anchors define the origin - the " @@ -6424,105 +6445,105 @@ msgid "" "`doc_design_interfaces_with_the_control_nodes` for more details." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1000 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:998 msgid "" "Arrange the nodes as shown below. Click the \"Layout\" button to set a " "Control node's layout:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1005 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1003 msgid "" "You can drag the nodes to place them manually, or for more precise " "placement, use the following settings:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1009 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1007 msgid "ScoreLabel" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1011 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1009 msgid "*Layout* : \"Top Wide\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1012 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1010 msgid "*Text* : ``0``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1013 -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1020 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1011 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1018 msgid "*Align* : \"Center\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1016 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1014 msgid "Message" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1018 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1016 msgid "*Layout* : \"HCenter Wide\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1019 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1017 msgid "*Text* : ``Dodge the Creeps!``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1021 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1019 msgid "*Autowrap* : \"On\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1024 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1022 msgid "StartButton" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1026 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1024 msgid "*Text* : ``Start``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1027 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1025 msgid "*Layout* : \"Center Bottom\"" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1028 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1026 msgid "*Margin* :" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1030 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1028 msgid "Top: ``-200``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1031 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1029 msgid "Bottom: ``-100``" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1033 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1031 msgid "" "On the ``MessageTimer``, set the ``Wait Time`` to ``2`` and set the ``One " "Shot`` property to \"On\"." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1036 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1034 msgid "Now add this script to ``HUD``:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1055 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1053 msgid "" "The ``start_game`` signal tells the ``Main`` node that the button has been " "pressed." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1077 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1075 msgid "" "This function is called when we want to display a message temporarily, such " "as \"Get Ready\"." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1111 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1109 msgid "" "This function is called when the player loses. It will show \"Game Over\" " "for 2 seconds, then return to the title screen and, after a brief pause, " "show the \"Start\" button." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1115 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1113 msgid "" "When you need to pause for a brief time, an alternative to using a Timer " "node is to use the SceneTree's ``create_timer()`` function. This can be very " @@ -6530,34 +6551,34 @@ msgid "" "time before showing the \"Start\" button." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1133 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1131 msgid "This function is called by ``Main`` whenever the score changes." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1135 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1133 msgid "" "Connect the ``timeout()`` signal of ``MessageTimer`` and the ``pressed()`` " "signal of ``StartButton`` and add the following code to the new functions:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1163 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1161 msgid "Connecting HUD to Main" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1165 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1163 msgid "" "Now that we're done creating the ``HUD`` scene, go back to ``Main``. " "Instance the ``HUD`` scene in ``Main`` like you did the ``Player`` scene. " "The scene tree should look like this, so make sure you didn't miss anything:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1171 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1169 msgid "" "Now we need to connect the ``HUD`` functionality to our ``Main`` script. " "This requires a few additions to the ``Main`` scene:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1174 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1172 msgid "" "In the Node tab, connect the HUD's ``start_game`` signal to the " "``new_game()`` function of the Main node by typing \"new_game\" in the " @@ -6565,33 +6586,33 @@ msgid "" "green connection icon now appears next to ``func new_game()`` in the script." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1179 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1177 msgid "" "In ``new_game()``, update the score display and show the \"Get Ready\" " "message:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1194 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1192 msgid "In ``game_over()`` we need to call the corresponding ``HUD`` function:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1205 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1203 msgid "" "Finally, add this to ``_on_ScoreTimer_timeout()`` to keep the display in " "sync with the changing score:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1217 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1215 msgid "" "Now you're ready to play! Click the \"Play the Project\" button. You will be " "asked to select a main scene, so choose ``Main.tscn``." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1221 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1219 msgid "Removing old creeps" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1223 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1221 msgid "" "If you play until \"Game Over\" and then start a new game right away, the " "creeps from the previous game may still be on the screen. It would be better " @@ -6600,7 +6621,7 @@ msgid "" "feature." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1228 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1226 msgid "" "In the ``Mob`` scene, select the root node and click the \"Node\" tab next " "to the Inspector (the same place where you find the node's signals). Next to " @@ -6608,35 +6629,35 @@ msgid "" "\"Add\"." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1234 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1232 msgid "" "Now all mobs will be in the \"mobs\" group. We can then add the following " "line to the ``game_over()`` function in ``Main``:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1247 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1245 msgid "" "The ``call_group()`` function calls the named function on every node in a " "group - in this case we are telling every mob to delete itself." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1251 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1249 msgid "Finishing up" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1253 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1251 msgid "" "We have now completed all the functionality for our game. Below are some " "remaining steps to add a bit more \"juice\" to improve the game experience. " "Feel free to expand the gameplay with your own ideas." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1258 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1256 #: ../../docs/tutorials/3d/environment_and_post_processing.rst:59 msgid "Background" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1260 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1258 msgid "" "The default gray background is not very appealing, so let's change its " "color. One way to do this is to use a :ref:`ColorRect ` " @@ -6646,17 +6667,17 @@ msgid "" "screen." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1266 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1264 msgid "" "You could also add a background image, if you have one, by using a " "``TextureRect`` node instead." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1270 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1268 msgid "Sound effects" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1272 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1270 msgid "" "Sound and music can be the single most effective way to add appeal to the " "game experience. In your game assets folder, you have two sound files: " @@ -6664,7 +6685,7 @@ msgid "" "for when the player loses." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1277 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1275 msgid "" "Add two :ref:`AudioStreamPlayer ` nodes as children " "of ``Main``. Name one of them ``Music`` and the other ``DeathSound``. On " @@ -6672,28 +6693,28 @@ msgid "" "corresponding audio file." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1282 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1280 msgid "" "To play the music, add ``$Music.play()`` in the ``new_game()`` function and " "``$Music.stop()`` in the ``game_over()`` function." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1285 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1283 msgid "Finally, add ``$DeathSound.play()`` in the ``game_over()`` function." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1288 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1286 msgid "Keyboard shortcut" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1290 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1288 msgid "" "Since the game is played with keyboard controls, it would be convenient if " "we could also start the game by pressing a key on the keyboard. We can do " "this with the \"Shortcut\" property of the ``Button`` node." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1294 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1292 msgid "" "In the ``HUD`` scene, select the ``StartButton`` and find its *Shortcut* " "property in the Inspector. Select \"New Shortcut\" and click on the " @@ -6703,25 +6724,25 @@ msgid "" "event associated with the spacebar." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1302 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1300 msgid "" "Now when the start button appears, you can either click it or press :kbd:" "`Space` to start the game." msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1306 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1304 msgid "Project files" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1311 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1309 msgid "You can find a completed version of this project at these locations:" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1309 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1307 msgid "https://github.com/kidscancode/Godot3_dodge/releases" msgstr "" -#: ../../docs/getting_started/step_by_step/your_first_game.rst:1310 +#: ../../docs/getting_started/step_by_step/your_first_game.rst:1308 msgid "https://github.com/godotengine/godot-demo-projects" msgstr "" @@ -6820,7 +6841,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/step_by_step/exporting.rst:250 -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:99 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:92 #: ../../docs/development/compiling/introduction_to_the_buildsystem.rst:307 #: ../../docs/development/compiling/compiling_with_mono.rst:172 msgid "Export templates" @@ -7934,8 +7955,8 @@ msgstr "" #: ../../docs/getting_started/step_by_step/ui_introduction_to_the_ui_system.rst:353 msgid "" "Godot's UI system is complex, and has a lot more to offer. To learn how to " -"design more advanced interfaces, head to the :ref:`GUI section ` of the docs." +"design more advanced interfaces, head to the :ref:`GUI section " +"` of the docs." msgstr "" #: ../../docs/getting_started/step_by_step/ui_main_menu.rst:4 @@ -10211,8 +10232,9 @@ msgid "" msgstr "" #: ../../docs/getting_started/step_by_step/resources.rst:4 -#: ../../docs/tutorials/threads/thread_safe_apis.rst:58 -#: ../../docs/development/file_formats/tscn.rst:261 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:240 +#: ../../docs/tutorials/threads/thread_safe_apis.rst:67 +#: ../../docs/development/file_formats/tscn.rst:263 #: ../../docs/community/tutorials.rst:59 msgid "Resources" msgstr "" @@ -10840,7 +10862,7 @@ msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:95 msgid "" "This means that as explained in previous tutorials, it will get the " -"_enter_tree() and _ready() callbacks (as well as _exit_tree())." +"``_enter_tree()`` and ``_ready()`` callbacks (as well as ``_exit_tree()``)." msgstr "" #: ../../docs/getting_started/step_by_step/scene_tree.rst:100 @@ -11223,6 +11245,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/editor/using_the_web_editor.rst:43 +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:24 #: ../../docs/getting_started/workflow/export/exporting_for_web.rst:82 #: ../../docs/tutorials/optimization/general_optimization.rst:70 msgid "Limitations" @@ -11434,13 +11457,13 @@ msgstr "" #: ../../docs/getting_started/editor/command_line_tutorial.rst:133 #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:141 #: ../../docs/getting_started/scripting/creating_script_templates.rst:125 -#: ../../docs/getting_started/workflow/assets/importing_images.rst:84 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:86 #: ../../docs/tutorials/inputs/inputevent.rst:130 #: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:53 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:21 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:479 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:523 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:569 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 #: ../../docs/tutorials/shading/shading_reference/spatial_shader.rst:15 #: ../../docs/tutorials/shading/shading_reference/spatial_shader.rst:94 #: ../../docs/tutorials/shading/shading_reference/spatial_shader.rst:139 @@ -15714,7 +15737,7 @@ msgid "else" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:149 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:848 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:873 msgid "for" msgstr "" @@ -15723,7 +15746,7 @@ msgid "See for_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:151 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:837 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:862 msgid "while" msgstr "" @@ -15732,7 +15755,7 @@ msgid "See while_." msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:153 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:883 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:908 msgid "match" msgstr "" @@ -16090,222 +16113,223 @@ msgstr "" msgid "" "These operators have the same behavior as C++. Integer division is truncated " "rather than returning a fractional number, and the % operator is only " -"available for ints (\"fmod\" for floats)" +"available for ints (\"fmod\" for floats), and is additionally used for " +"Format Strings" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:252 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:134 msgid "``+``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:252 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 msgid "Addition / Concatenation of arrays" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:143 msgid "``-``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:254 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 msgid "Subtraction" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 msgid "``<<`` ``>>``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:256 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 msgid "Bit shifting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 msgid "``&``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:258 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 msgid "Bitwise AND" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 msgid "``^``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:260 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 msgid "Bitwise XOR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 msgid "``|``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:262 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 msgid "Bitwise OR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 msgid "``<`` ``>`` ``==`` ``!=`` ``>=`` ``<=``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:264 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 msgid "Comparisons" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:268 msgid "``in``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:266 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:268 msgid "Content test" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:268 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:270 msgid "``!`` ``not``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:268 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:270 msgid "Boolean NOT" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:270 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:272 msgid "``and`` ``&&``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:270 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:272 msgid "Boolean AND" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:272 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 msgid "``or`` ``||``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:272 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 msgid "Boolean OR" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 msgid "``if x else``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:274 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 msgid "Ternary if/else" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 msgid "``as``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:276 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 msgid "Type casting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 -msgid "``=`` ``+=`` ``-=`` ``*=`` ``/=`` ``%=`` ``&=`` ``|=``" +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:280 +msgid "``=`` ``+=`` ``-=`` ``*=`` ``/=`` ``%=`` ``&=`` ``|=`` ``<<=`` ``>>=``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:278 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:280 msgid "Assignment (lowest priority)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:282 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:284 msgid "Literals" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:285 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 msgid "**Literal**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:285 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:242 #: ../../docs/getting_started/scripting/gdscript/gdscript_format_string.rst:264 msgid "**Type**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 msgid "``45``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:287 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 msgid "Base 10 integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 msgid "``0x8f51``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 msgid "Base 16 (hexadecimal) integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 msgid "``0b101010``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:291 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 msgid "Base 2 (binary) integer" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:295 msgid "``3.14``, ``58.1e-10``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:293 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:295 msgid "Floating-point number (real)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:295 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:297 msgid "``\"Hello\"``, ``\"Hi\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:295 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:297 msgid "Strings" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:297 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:299 msgid "``\"\"\"Hello\"\"\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:297 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:299 msgid "Multiline string" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:299 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:301 msgid "``@\"Node/Label\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:299 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:301 msgid ":ref:`class_NodePath` or StringName" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:301 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:303 msgid "``$NodePath``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:301 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:303 msgid "Shorthand for ``get_node(\"NodePath\")``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:304 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:306 msgid "" "Integers and floats can have their numbers separated with ``_`` to make them " "more readable. The following ways to write numbers are all valid::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:313 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:315 msgid "Comments" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:315 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:317 msgid "" "Anything from a ``#`` to the end of the line is ignored and is considered a " "comment." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:325 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:327 msgid "Built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:327 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:329 msgid "" "Built-in types are stack-allocated. They are passed as values. This means a " "copy is created on each assignment or when passing them as arguments to " @@ -16314,48 +16338,48 @@ msgid "" "``PoolByteArray`` are still passed as values.)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:334 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:336 msgid "Basic built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:336 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:338 msgid "A variable in GDScript can be assigned to several built-in types." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:339 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:341 #: ../../docs/tutorials/misc/binary_serialization_api.rst:31 msgid "null" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:341 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:343 msgid "" "``null`` is an empty data type that contains no information and can not be " "assigned any other value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:345 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:347 msgid ":ref:`bool `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:347 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:349 msgid "Short for \"boolean\", it can only contain ``true`` or ``false``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:350 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:352 msgid ":ref:`int `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:352 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:354 msgid "" "Short for \"integer\", it stores whole numbers (positive and negative). It " "is stored as a 64-bit value, equivalent to \"int64_t\" in C++." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:356 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:358 msgid ":ref:`float `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:358 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:360 msgid "" "Stores real numbers, including decimals, using floating-point values. It is " "stored as a 64-bit value, equivalent to \"double\" in C++. Note: Currently, " @@ -16363,264 +16387,264 @@ msgid "" "single-precision \"float\" values." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:364 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:366 msgid ":ref:`String `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:366 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:368 msgid "" "A sequence of characters in `Unicode format `_. Strings can contain the following escape sequences:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:370 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:372 msgid "**Escape sequence**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:370 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:372 msgid "**Expands to**" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:372 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:374 msgid "``\\n``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:372 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:374 msgid "Newline (line feed)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:374 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:376 msgid "``\\t``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:374 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:376 msgid "Horizontal tab character" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:376 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:378 msgid "``\\r``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:376 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:378 msgid "Carriage return" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:378 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:380 msgid "``\\a``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:378 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:380 msgid "Alert (beep/bell)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:380 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:382 msgid "``\\b``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:380 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:382 msgid "Backspace" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:382 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:384 msgid "``\\f``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:382 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:384 msgid "Formfeed page break" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:384 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:386 msgid "``\\v``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:384 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:386 msgid "Vertical tab character" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:386 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:388 msgid "``\\\"``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:386 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:388 msgid "Double quote" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:388 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:390 msgid "``\\'``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:388 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:390 msgid "Single quote" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:390 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:392 msgid "``\\\\``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:390 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:392 msgid "Backslash" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:392 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:394 msgid "``\\uXXXX``" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:392 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:394 msgid "Unicode codepoint ``XXXX`` (hexadecimal, case-insensitive)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:396 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:398 msgid "GDScript also supports :ref:`doc_gdscript_printf`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:399 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:401 msgid "Vector built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:402 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:404 msgid ":ref:`Vector2 `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:404 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:406 msgid "" "2D vector type containing ``x`` and ``y`` fields. Can also be accessed as an " "array." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:408 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:410 msgid ":ref:`Rect2 `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:410 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:412 msgid "" "2D Rectangle type containing two vectors fields: ``position`` and ``size``. " "Also contains an ``end`` field which is ``position + size``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:414 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:416 msgid ":ref:`Vector3 `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:416 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:418 msgid "" "3D vector type containing ``x``, ``y`` and ``z`` fields. This can also be " "accessed as an array." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:420 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:422 msgid ":ref:`Transform2D `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:422 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:424 msgid "3×2 matrix used for 2D transforms." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:425 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:427 msgid ":ref:`Plane `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:427 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:429 msgid "" "3D Plane type in normalized form that contains a ``normal`` vector field and " "a ``d`` scalar distance." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:431 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:433 msgid ":ref:`Quat `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:433 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:435 msgid "" "Quaternion is a datatype used for representing a 3D rotation. It's useful " "for interpolating rotations." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:437 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:439 msgid ":ref:`AABB `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:439 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:441 msgid "" "Axis-aligned bounding box (or 3D box) contains 2 vectors fields: " "``position`` and ``size``. Also contains an ``end`` field which is " "``position + size``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:444 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:446 msgid ":ref:`Basis `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:446 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:448 msgid "" "3x3 matrix used for 3D rotation and scale. It contains 3 vector fields " "(``x``, ``y`` and ``z``) and can also be accessed as an array of 3D vectors." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:451 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:453 msgid ":ref:`Transform `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:453 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:455 msgid "" "3D Transform contains a Basis field ``basis`` and a Vector3 field ``origin``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:457 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:459 msgid "Engine built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:460 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:462 msgid ":ref:`Color `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:462 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:464 msgid "" "Color data type contains ``r``, ``g``, ``b``, and ``a`` fields. It can also " "be accessed as ``h``, ``s``, and ``v`` for hue/saturation/value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:466 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:468 msgid ":ref:`NodePath `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:468 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:470 msgid "" "Compiled path to a node used mainly in the scene system. It can be easily " "assigned to, and from, a String." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:472 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:474 msgid ":ref:`RID `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:474 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:476 msgid "Resource ID (RID). Servers use generic RIDs to reference opaque data." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:477 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:479 msgid ":ref:`Object `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:479 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:481 msgid "Base class for anything that is not a built-in type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:482 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:484 msgid "Container built-in types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:485 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:487 msgid ":ref:`Array `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:487 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:489 msgid "" "Generic sequence of arbitrary object types, including other arrays or " "dictionaries (see below). The array can resize dynamically. Arrays are " "indexed starting from index ``0``. Negative indices count from the end." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:501 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:503 msgid "" "GDScript arrays are allocated linearly in memory for speed. Large arrays " "(more than tens of thousands of elements) may however cause memory " @@ -16630,51 +16654,51 @@ msgid "" "They are therefore only recommended to use for large data sets:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:508 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:510 msgid "" ":ref:`PoolByteArray `: An array of bytes (integers from " "0 to 255)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:509 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:511 msgid ":ref:`PoolIntArray `: An array of integers." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:510 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:512 msgid ":ref:`PoolRealArray `: An array of floats." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:511 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:513 msgid ":ref:`PoolStringArray `: An array of strings." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:512 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:514 msgid "" ":ref:`PoolVector2Array `: An array of :ref:`Vector2 " "` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:513 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:515 msgid "" ":ref:`PoolVector3Array `: An array of :ref:`Vector3 " "` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:514 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:516 msgid "" ":ref:`PoolColorArray `: An array of :ref:`Color " "` objects." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:517 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:519 msgid ":ref:`Dictionary `" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:519 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:521 msgid "Associative container which contains values referenced by unique keys." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:532 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:534 msgid "" "Lua-style table syntax is also supported. Lua-style uses ``=`` instead of ``:" "`` and doesn't use quotes to mark string keys (making for slightly less to " @@ -16682,13 +16706,13 @@ msgid "" "any GDScript identifier)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:546 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:548 msgid "" "To add a key to an existing dictionary, access it like an existing key and " "assign to it::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:562 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:564 msgid "" "The bracket syntax can be used to access properties of any :ref:" "`class_Object`, not just Dictionaries. Keep in mind it will cause a script " @@ -16697,13 +16721,13 @@ msgid "" "` methods instead." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:569 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:571 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:228 #: ../../docs/tutorials/3d/baked_lightmaps.rst:313 msgid "Data" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:572 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:574 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:131 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:86 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:148 @@ -16711,105 +16735,105 @@ msgstr "" msgid "Variables" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:574 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:576 msgid "" "Variables can exist as class members or local to functions. They are created " "with the ``var`` keyword and may, optionally, be assigned a value upon " "initialization." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:585 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:587 msgid "" "Variables can optionally have a type specification. When a type is " "specified, the variable will be forced to have always that same type, and " "trying to assign an incompatible value will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:589 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:591 msgid "" "Types are specified in the variable declaration using a ``:`` (colon) symbol " "after the variable name, followed by the type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:597 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:599 msgid "" "If the variable is initialized within the declaration, the type can be " "inferred, so it's possible to omit the type name::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:603 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:605 msgid "" "Type inference is only possible if the assigned value has a defined type, " "otherwise it will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:606 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:608 #: ../../docs/tutorials/shading/shading_reference/shaders.rst:39 msgid "Valid types are:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:608 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:610 msgid "Built-in types (Array, Vector2, int, String, etc.)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:609 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:611 msgid "Engine classes (Node, Resource, Reference, etc.)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:610 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:612 msgid "" "Constant names if they contain a script resource (``MyScript`` if you " "declared ``const MyScript = preload(\"res://my_script.gd\")``)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:611 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:613 msgid "" "Other classes in the same script, respecting scope (``InnerClass." "NestedClass`` if you declared ``class NestedClass`` inside the ``class " "InnerClass`` in the same scope)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:612 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:614 msgid "Script classes declared with the ``class_name`` keyword." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:615 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:617 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:85 msgid "Casting" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:617 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:619 msgid "" "Values assigned to typed variables must have a compatible type. If it's " "needed to coerce a value to be of a certain type, in particular for object " "types, you can use the casting operator ``as``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:621 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:623 msgid "" "Casting between object types results in the same object if the value is of " "the same type or a subtype of the cast type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:629 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:631 msgid "" "If the value is not a subtype, the casting operation will result in a " "``null`` value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:636 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:638 msgid "" "For built-in types, they will be forcibly converted if possible, otherwise " "the engine will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:645 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:647 msgid "" "Casting is also useful to have better type-safe variables when interacting " "with the scene tree::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:655 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:657 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:211 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:22 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:259 @@ -16819,7 +16843,7 @@ msgstr "" msgid "Constants" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:657 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:659 msgid "" "Constants are values you cannot change when the game is running. Their value " "must be known at compile-time. Using the ``const`` keyword allows you to " @@ -16827,21 +16851,21 @@ msgid "" "it's declared will give you an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:662 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:664 msgid "We recommend using constants whenever a value is not meant to change." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:675 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:677 msgid "" "Although the type of constants is inferred from the assigned value, it's " "also possible to add explicit type specification::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:681 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:683 msgid "Assigning a value of an incompatible type will raise an error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:685 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:687 msgid "" "Since arrays and dictionaries are passed by reference, constants are \"flat" "\". This means that if you declare a constant array or dictionary, it can " @@ -16849,36 +16873,36 @@ msgid "" "though." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:690 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:692 msgid "Enums" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:692 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:694 msgid "" "Enums are basically a shorthand for constants, and are pretty useful if you " "want to assign consecutive integers to some constant." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:695 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:697 msgid "" "If you pass a name to the enum, it will put all the keys inside a constant " "dictionary of that name." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:698 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:700 msgid "" "In Godot 3.1 and later, keys in a named enum are not registered as global " "constants. They should be accessed prefixed by the enum's name (``Name." "KEY``); see an example below." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:718 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:720 #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:391 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:386 msgid "Functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:720 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:722 msgid "" "Functions always belong to a `class `_. The scope priority for " "variable look-up is: local → class member → global. The ``self`` variable is " @@ -16887,30 +16911,30 @@ msgid "" "argument, unlike Python)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:733 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:735 msgid "" "A function can ``return`` at any point. The default return value is ``null``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:735 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:737 msgid "" "Functions can also have type specification for the arguments and for the " "return value. Types for arguments can be added in a similar way to " "variables::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:741 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:743 msgid "" "If a function argument has a default value, it's possible to infer the type::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:746 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:748 msgid "" "The return type of the function can be specified after the arguments list " "using the arrow token (``->``)::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:752 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:754 msgid "" "Functions that have a return type **must** return a proper value. Setting " "the type as ``void`` means the function doesn't return anything. Void " @@ -16918,7 +16942,7 @@ msgid "" "return any value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:761 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:763 msgid "" "Non-void functions must **always** return a value, so if your code has " "branching statements (such as an ``if``/``else`` construct), all the " @@ -16927,11 +16951,11 @@ msgid "" "block is not executed, the function won't have a valid value to return." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:769 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:771 msgid "Referencing functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:771 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:773 msgid "" "Contrary to Python, functions are *not* first-class objects in GDScript. " "This means they cannot be stored in variables, passed as an argument to " @@ -16939,40 +16963,40 @@ msgid "" "performance reasons." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:775 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:777 msgid "" "To reference a function by name at run-time, (e.g. to store it in a " "variable, or pass it to another function as an argument) one must use the " "``call`` or ``funcref`` helpers::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:789 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:791 msgid "Static functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:791 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:793 msgid "" "A function can be declared static. When a function is static, it has no " "access to the instance member variables or ``self``. This is mainly useful " "to make libraries of helper functions::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:800 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:802 msgid "Statements and control flow" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:802 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:804 msgid "" "Statements are standard and can be assignments, function calls, control flow " "structures, etc (see below). ``;`` as a statement separator is entirely " "optional." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:807 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:809 msgid "if/else/elif" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:809 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:811 msgid "" "Simple conditions are created by using the ``if``/``else``/``elif`` syntax. " "Parenthesis around conditions are allowed, but not required. Given the " @@ -16980,23 +17004,30 @@ msgid "" "``else``/``if`` to maintain a level of indentation." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:823 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:825 msgid "Short statements can be written on the same line as the condition::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:830 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:832 msgid "" "Sometimes, you might want to assign a different initial value based on a " "boolean expression. In this case, ternary-if expressions come in handy::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:839 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:838 +msgid "" +"Ternary-if expressions can be nested to handle more than 2 cases. When " +"nesting ternary-if expressions, it is recommended to wrap the complete " +"expression over multiple lines to preserve readability::" +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:864 msgid "" "Simple loops are created by using ``while`` syntax. Loops can be broken " "using ``break`` or continued using ``continue``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:850 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:875 msgid "" "To iterate through a range, such as an array or table, a *for* loop is used. " "When iterating over an array, the current array element is stored in the " @@ -17004,44 +17035,44 @@ msgid "" "loop variable." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:885 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:910 msgid "" "A ``match`` statement is used to branch execution of a program. It's the " "equivalent of the ``switch`` statement found in many other languages, but " "offers some additional features." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:888 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:913 msgid "Basic syntax::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:899 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:924 msgid "**Crash-course for people who are familiar with switch statements**:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:901 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:926 msgid "Replace ``switch`` with ``match``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:902 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:927 msgid "Remove ``case``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:903 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:928 msgid "" "Remove any ``break``\\ s. If you don't want to ``break`` by default, you can " "use ``continue`` for a fallthrough." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:904 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:929 msgid "Change ``default`` to a single underscore." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:907 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:932 msgid "**Control flow**:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:909 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:934 msgid "" "The patterns are matched from top to bottom. If a pattern matches, the first " "corresponding block will be executed. After that, the execution continues " @@ -17049,134 +17080,134 @@ msgid "" "the current block and check for an additional match in the patterns below it." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:913 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:938 msgid "There are 6 pattern types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:925 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:950 msgid "Constant pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:916 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:941 msgid "Constant primitives, like numbers and strings::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:937 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:962 msgid "Variable pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:928 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:953 msgid "Matches the contents of a variable/enum::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:951 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:976 msgid "Wildcard pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:940 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:965 msgid "This pattern matches everything. It's written as a single underscore." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:942 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:967 msgid "" "It can be used as the equivalent of the ``default`` in a ``switch`` " "statement in other languages::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:964 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:989 msgid "Binding pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:954 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:979 msgid "" "A binding pattern introduces a new variable. Like the wildcard pattern, it " "matches everything - and also gives that value a name. It's especially " "useful in array and dictionary patterns::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:985 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1010 msgid "Array pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:967 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:992 msgid "" "Matches an array. Every single element of the array pattern is a pattern " "itself, so you can nest them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:969 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:994 msgid "" "The length of the array is tested first, it has to be the same size as the " "pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:971 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:996 msgid "" "**Open-ended array**: An array can be bigger than the pattern by making the " "last subpattern ``..``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:973 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:998 msgid "Every subpattern has to be comma-separated." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1012 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1037 msgid "Dictionary pattern" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:988 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1013 msgid "" "Works in the same way as the array pattern. Every key has to be a constant " "pattern." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:990 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1015 msgid "" "The size of the dictionary is tested first, it has to be the same size as " "the pattern, otherwise the pattern doesn't match." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:992 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1017 msgid "" "**Open-ended dictionary**: A dictionary can be bigger than the pattern by " "making the last subpattern ``..``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:994 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1019 msgid "Every subpattern has to be comma separated." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:996 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1021 msgid "" "If you don't specify a value, then only the existence of the key is checked." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:998 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1023 msgid "A value pattern is separated from the key pattern with a ``:``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1025 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1050 msgid "Multiple patterns" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1015 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1040 msgid "" "You can also specify multiple patterns separated by a comma. These patterns " "aren't allowed to have any bindings in them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1028 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1053 msgid "Classes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1030 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1055 msgid "" "By default, all script files are unnamed classes. In this case, you can only " "reference them using the file's path, using either a relative or an absolute " "path. For example, if you name a script file ``character.gd``::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1043 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1068 msgid "" "Instead, you can give your class a name to register it as a new type in " "Godot's editor. For that, you use the ``class_name`` keyword. You can add an " @@ -17184,7 +17215,7 @@ msgid "" "class will then appear with its new icon in the editor::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1057 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1082 msgid "" "If the script is located in the ``res://addons/`` directory, ``class_name`` " "will only cause the node to show up in the **Create New Node** dialog if the " @@ -17192,11 +17223,11 @@ msgid "" "for more information." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1062 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1087 msgid "Here's a class file example:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1084 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1109 msgid "" "Godot's class syntax is compact: it can only contain member variables or " "functions. You can use static functions, but not static member variables. In " @@ -17206,48 +17237,48 @@ msgid "" "without the user knowing." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1092 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1117 #: ../../docs/getting_started/scripting/cross_language_scripting.rst:204 msgid "Inheritance" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1094 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1119 msgid "A class (stored as a file) can inherit from:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1096 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1121 msgid "A global class." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1097 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1122 msgid "Another class file." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1098 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1123 msgid "An inner class inside another class file." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1100 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1125 msgid "Multiple inheritance is not allowed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1102 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1127 msgid "Inheritance uses the ``extends`` keyword::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1114 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1139 msgid "" "To check if a given instance inherits from a given class, the ``is`` keyword " "can be used::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1126 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1151 msgid "" "To call a function in a *parent class* (i.e. one ``extend``-ed in your " "current class), prepend ``.`` to the function name::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1131 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1156 msgid "" "This is especially useful because functions in extending classes replace " "functions with the same name in their parent classes. If you still want to " @@ -17255,7 +17286,7 @@ msgid "" "other languages)::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1139 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1164 msgid "" "Default functions like ``_init``, and most notifications such as " "``_enter_tree``, ``_exit_tree``, ``_process``, ``_physics_process``, etc. " @@ -17263,11 +17294,11 @@ msgid "" "them explicitly when overloading them." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1146 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1171 msgid "Class constructor" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1148 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1173 msgid "" "The class constructor, called on class instantiation, is named ``_init``. As " "mentioned earlier, the constructors of parent classes are called " @@ -17275,22 +17306,22 @@ msgid "" "``._init()`` explicitly." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1153 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1178 msgid "" "Unlike the call of a regular function, like in the above example with ``." "some_func``, if the constructor from the inherited class takes arguments, " "they are passed like this::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1160 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1185 msgid "This is better explained through examples. Consider this scenario::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1183 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1208 msgid "There are a few things to keep in mind here:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1185 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1210 msgid "" "If the inherited class (``State.gd``) defines a ``_init`` constructor that " "takes arguments (``e`` in this case), then the inheriting class (``Idle." @@ -17298,19 +17329,19 @@ msgid "" "``_init`` from ``State.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1188 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1213 msgid "" "``Idle.gd`` can have a different number of arguments than the parent class " "``State.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1189 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1214 msgid "" "In the example above, ``e`` passed to the ``State.gd`` constructor is the " "same ``e`` passed in to ``Idle.gd``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1191 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1216 msgid "" "If ``Idle.gd``'s ``_init`` constructor takes 0 arguments, it still needs to " "pass some value to the ``State.gd`` parent class, even if it does nothing. " @@ -17318,21 +17349,21 @@ msgid "" "constructor as well, not just variables, e.g.::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1201 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1226 msgid "Inner classes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1203 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1228 msgid "" "A class file can contain inner classes. Inner classes are defined using the " "``class`` keyword. They are instanced using the ``ClassName.new()`` function." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1228 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1253 msgid "Classes as resources" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1230 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1255 msgid "" "Classes stored as files are treated as :ref:`resources `. " "They must be loaded from disk to access them in other classes. This is done " @@ -17341,33 +17372,33 @@ msgid "" "class object::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1247 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1272 msgid "Exports" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1251 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1276 msgid "" "Documentation about exports has been moved to :ref:`doc_gdscript_exports`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1254 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1279 msgid "Setters/getters" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1256 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1281 msgid "" "It is often useful to know when a class' member variable changes for " "whatever reason. It may also be desired to encapsulate its access in some " "way." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1259 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1284 msgid "" "For this, GDScript provides a *setter/getter* syntax using the ``setget`` " "keyword. It is used directly after a variable definition:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1266 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1291 msgid "" "Whenever the value of ``variable`` is modified by an *external* source (i.e. " "not from local usage in the class), the *setter* function (``setterfunc`` " @@ -17377,28 +17408,28 @@ msgid "" "``return`` the desired value. Below is an example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1282 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1307 msgid "Either of the *setter* or *getter* functions can be omitted::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1289 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1314 msgid "" "Setters and getters are useful when :ref:`exporting variables " "` to the editor in tool scripts or plugins, for " "validating input." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1292 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1317 msgid "" "As said, *local* access will *not* trigger the setter and getter. Here is an " "illustration of this:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1309 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1334 msgid "Tool mode" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1311 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1336 msgid "" "By default, scripts don't run inside the editor and only the exported " "properties can be changed. In some cases, it is desired that they do run " @@ -17407,22 +17438,22 @@ msgid "" "top of the file::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1325 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1350 msgid "See :ref:`doc_running_code_in_the_editor` for more information." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1327 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1352 msgid "" "Be cautious when freeing nodes with ``queue_free()`` or ``free()`` in a tool " "script (especially the script's owner itself). As tool scripts run their " "code in the editor, misusing them may lead to crashing the editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1333 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1358 msgid "Memory management" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1335 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1360 msgid "" "If a class inherits from :ref:`class_Reference`, then instances will be " "freed when no longer in use. No garbage collector exists, just reference " @@ -17433,20 +17464,20 @@ msgid "" "provided for creating weak references. Here is an example:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1357 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1382 msgid "" "Alternatively, when not using references, the " "``is_instance_valid(instance)`` can be used to check if an object has been " "freed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1366 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1391 msgid "" "Signals are a tool to emit messages from an object that other objects can " "react to. To create custom signals for a class, use the ``signal`` keyword." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1379 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1404 msgid "" "Signals are a `Callback `_ mechanism. They also fill the role of " @@ -17455,31 +17486,31 @@ msgid "" "the Game Programming Patterns ebook." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1386 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1411 msgid "" "You can connect these signals to methods the same way you connect built-in " "signals of nodes like :ref:`class_Button` or :ref:`class_RigidBody`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1389 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1414 msgid "" "In the example below, we connect the ``health_depleted`` signal from a " "``Character`` node to a ``Game`` node. When the ``Character`` node emits the " "signal, the game node's ``_on_Character_health_depleted`` is called::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1403 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1428 msgid "You can emit as many arguments as you want along with a signal." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1405 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1430 msgid "" "Here is an example where this is useful. Let's say we want a life bar on " "screen to react to health changes with an animation, but we want to keep the " "user interface separate from the player in our scene tree." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1409 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1434 msgid "" "In our ``Character.gd`` script, we define a ``health_changed`` signal and " "emit it with :ref:`Object.emit_signal() `, " @@ -17488,32 +17519,32 @@ msgid "" "method::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1450 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1475 msgid "" "To use signals, your class has to extend the ``Object`` class or any type " "extending it like ``Node``, ``KinematicBody``, ``Control``..." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1453 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1478 msgid "" "In the ``Game`` node, we get both the ``Character`` and ``Lifebar`` nodes, " "then connect the character, that emits the signal, to the receiver, the " "``Lifebar`` node in this case." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1467 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1492 msgid "" "This allows the ``Lifebar`` to react to health changes without coupling it " "to the ``Character`` node." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1470 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1495 msgid "" "You can write optional argument names in parentheses after the signal's " "definition::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1476 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1501 msgid "" "These arguments show up in the editor's node dock, and Godot can use them to " "generate callback functions for you. However, you can still emit any number " @@ -17521,7 +17552,7 @@ msgid "" "values." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1482 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1507 msgid "" "GDScript can bind an array of values to connections between a signal and a " "method. When the signal is emitted, the callback method receives the bound " @@ -17529,14 +17560,14 @@ msgid "" "will stay the same." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1487 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1512 msgid "" "You can use this array of values to add extra constant information to the " "connection if the emitted signal itself doesn't give you access to all the " "data that you need." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1491 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1516 msgid "" "Building on the example above, let's say we want to display a log of the " "damage taken by each character on the screen, like ``Player1 took 22 damage." @@ -17545,17 +17576,17 @@ msgid "" "can add the character's name in the binds array argument::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1505 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1530 msgid "" "Our ``BattleLog`` node receives each element in the binds array as an extra " "argument::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1518 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1543 msgid "Coroutines with yield" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1520 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1545 msgid "" "GDScript offers support for `coroutines `_ via the :ref:`yield` built-in " @@ -17566,62 +17597,62 @@ msgid "" "becomes invalid. Here is an example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1541 -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1562 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1566 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1587 msgid "Will print::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1547 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1572 msgid "" "It is also possible to pass values between ``yield()`` and ``resume()``, for " "example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1568 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1593 msgid "" "Remember to save the new function state, when using multiple ``yield``\\s::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1583 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1608 msgid "Coroutines & signals" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1585 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1610 msgid "" "The real strength of using ``yield`` is when combined with signals. " "``yield`` can accept two arguments, an object and a signal. When the signal " "is received, execution will recommence. Here are some examples::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1598 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1623 msgid "" "Coroutines themselves use the ``completed`` signal when they transition into " "an invalid state, for example::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1610 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1635 msgid "" "``my_func`` will only continue execution once both buttons have been pressed." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1612 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1637 msgid "You can also get the signal's argument once it's emitted by an object:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1619 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1644 msgid "" "If there is more than one argument, ``yield`` returns an array containing " "the arguments::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1637 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1662 msgid "" "If you're unsure whether a function may yield or not, or whether it may " "yield multiple times, you can yield to the ``completed`` signal " "conditionally:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1659 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1684 msgid "" "This ensures that the function returns whatever it was supposed to return " "regardless of whether coroutines were used internally. Note that using " @@ -17629,12 +17660,12 @@ msgid "" "emitted when the function didn't yield anymore." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1667 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1692 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:127 msgid "`onready` keyword" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1669 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1694 msgid "" "When using nodes, it's common to desire to keep references to parts of the " "scene in a variable. As scenes are only warranted to be configured when " @@ -17642,7 +17673,7 @@ msgid "" "call to ``Node._ready()`` is made." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1682 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1707 msgid "" "This can get a little cumbersome, especially when nodes and external " "references pile up. For this, GDScript has the ``onready`` keyword, that " @@ -17650,11 +17681,11 @@ msgid "" "can replace the above code with a single line::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1690 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1715 msgid "Assert keyword" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1692 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1717 msgid "" "The ``assert`` keyword can be used to check conditions in debug builds. " "These assertions are ignored in non-debug builds. This means that the " @@ -17664,7 +17695,7 @@ msgid "" "depending on whether the project is run in a debug build." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1704 +#: ../../docs/getting_started/scripting/gdscript/gdscript_basics.rst:1729 msgid "" "When running a project from the editor, the project will be paused if an " "assertion error occurs." @@ -18052,8 +18083,8 @@ msgstr "" msgid "" "It's possible that the object being hit doesn't have a smash() function. " "Some dynamically typed languages simply ignore a method call when it doesn't " -"exist (like Objective C), but GDScript is stricter, so checking if the " -"function exists is desirable:" +"exist, but GDScript is stricter, so checking if the function exists is " +"desirable:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_advanced.rst:527 @@ -18066,6 +18097,7 @@ msgid "GDScript exports" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:7 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:7 msgid "Introduction to exports" msgstr "" @@ -18095,10 +18127,11 @@ msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:29 msgid "" "Exporting properties can also be done in other languages such as C#. The " -"syntax varies depending on the language." +"syntax varies depending on the language. See :ref:`doc_c_sharp_exports` for " +"information on C# exports." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:33 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:34 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_features.rst:184 #: ../../docs/tutorials/physics/using_area_2d.rst:132 #: ../../docs/tutorials/physics/using_kinematic_body_2d.rst:192 @@ -18106,25 +18139,27 @@ msgstr "" msgid "Examples" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:136 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:137 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:262 msgid "" "It must be noted that even if the script is not being run while in the " "editor, the exported properties are still editable. This can be used in " "conjunction with a :ref:`script in \"tool\" mode `." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:141 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:142 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:267 msgid "Exporting bit flags" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:143 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:144 msgid "" "Integers used as bit flags can store multiple ``true``/``false`` (boolean) " "values in one property. By using the export hint ``int, FLAGS, ...``, they " "can be set from the editor::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:150 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:151 msgid "" "You must provide a string description for each flag. In this example, " "``Fire`` has value 1, ``Water`` has value 2, ``Earth`` has value 4 and " @@ -18132,39 +18167,43 @@ msgid "" "accordingly (e.g. ``const ELEMENT_WIND = 8`` and so on)." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:155 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:156 msgid "" "Export hints are also provided for the physics and render layers defined in " "the project settings::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:162 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:163 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:297 msgid "" "Using bit flags requires some understanding of bitwise operations. If in " "doubt, use boolean variables instead." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:166 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:167 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:301 msgid "Exporting arrays" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:168 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:169 msgid "" "Exported arrays can have initializers, but they must be constant expressions." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:170 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:171 msgid "" "If the exported array specifies a type which inherits from Resource, the " "array values can be set in the inspector by dragging and dropping multiple " "files from the FileSystem dock at once." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:208 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:209 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:339 msgid "Setting exported variables from a tool script" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:210 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:211 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:341 msgid "" "When changing an exported variable's value from a script in :ref:" "`doc_gdscript_tool_mode`, the value in the inspector won't be updated " @@ -18173,18 +18212,21 @@ msgid "" "exported variable's value." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:217 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:218 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:348 msgid "Advanced exports" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:219 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:220 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:350 msgid "" "Not every type of export can be provided on the level of the language itself " "to avoid unnecessary design complexity. The following describes some more or " "less common exporting features which can be implemented with a low-level API." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:223 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:224 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:354 msgid "" "Before reading further, you should get familiar with the way properties are " "handled and how they can be customized with :ref:`_set() " @@ -18194,34 +18236,36 @@ msgid "" "`doc_accessing_data_or_logic_from_object`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:230 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:231 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:361 msgid "" "For binding properties using the above methods in C++, see :ref:" "`doc_binding_properties_using_set_get_property_list`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:233 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:234 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:364 msgid "" "The script must operate in the ``tool`` mode so the above methods can work " "from within the editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:237 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:238 msgid "Adding script categories" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:239 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:240 msgid "" "For better visual distinguishing of properties, a special script category " "can be embedded into the inspector to act as a separator. ``Script " "Variables`` is one example of a built-in category." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:256 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:257 msgid "``name`` is the name of a category to be added to the inspector;" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:258 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:259 msgid "" "``PROPERTY_USAGE_CATEGORY`` indicates that the property should be treated as " "a script category specifically, so the type ``TYPE_NIL`` can be ignored as " @@ -18229,21 +18273,21 @@ msgid "" "anyway." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:263 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:264 msgid "Grouping properties" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:265 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:266 msgid "A list of properties with similar names can be grouped." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:279 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:280 msgid "" "``name`` is the name of a group which is going to be displayed as " "collapsible list of properties;" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:282 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:283 msgid "" "every successive property added after the group property will be collapsed " "and shortened as determined by the prefix defined via the ``hint_string`` " @@ -18251,7 +18295,7 @@ msgid "" "this case." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:286 +#: ../../docs/getting_started/scripting/gdscript/gdscript_exports.rst:287 msgid "" "``PROPERTY_USAGE_GROUP`` indicates that the property should be treated as a " "script group specifically, so the type ``TYPE_NIL`` can be ignored as it " @@ -18352,11 +18396,12 @@ msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:201 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:225 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:272 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:302 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:327 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:347 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:373 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:767 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:313 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:350 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:375 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:395 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:421 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:815 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:65 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:84 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:111 @@ -18374,11 +18419,12 @@ msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:212 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:231 #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:282 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:309 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:334 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:354 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:383 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:773 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:332 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:357 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:382 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:402 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:431 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:833 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:73 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:92 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:121 @@ -18467,126 +18513,155 @@ msgid "The only exception to that rule is the ternary operator:" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:297 -msgid "Avoid unnecessary parentheses" +msgid "Format multiline statements for readability" msgstr "" #: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:299 msgid "" -"Avoid parentheses in expressions and conditional statements. Unless " -"necessary for order of operations, they only reduce readability." +"When you have particularly long ``if`` statements or nested ternary " +"expressions, wrapping them over multiple lines improves readability. Since " +"continuation lines are still part of the same expression, 2 indent levels " +"should be used instead of one." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:317 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:303 +msgid "" +"GDScript allows wrapping statements using multiple lines using parentheses " +"or backslashes. Parentheses are favored in this style guide since they make " +"for easier refactoring. With backslashes, you have to ensure that the last " +"line never contains a backslash at the end. With parentheses, you don't have " +"to worry about the last line having a backslash at the end." +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:309 +msgid "" +"When wrapping a conditional expression over multiple lines, the ``and``/" +"``or`` keywords should be placed at the beginning of the line continuation, " +"not at the end of the previous line." +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:344 +msgid "Avoid unnecessary parentheses" +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:346 +msgid "" +"Avoid parentheses in expressions and conditional statements. Unless " +"necessary for order of operations or wrapping over multiple lines, they only " +"reduce readability." +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:365 msgid "Boolean operators" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:319 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:367 msgid "" "Prefer the plain English versions of boolean operators, as they are the most " "accessible:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:321 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:369 msgid "Use ``and`` instead of ``&&``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:322 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:370 msgid "Use ``or`` instead of ``||``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:324 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:372 msgid "" "You may also use parentheses around boolean operators to clear any " "ambiguity. This can make long expressions easier to read." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:342 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:390 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:189 msgid "Comment spacing" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:344 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:392 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:191 msgid "" "Regular comments should start with a space, but not code that you comment " "out. This helps differentiate text comments from disabled code." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:363 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:411 msgid "" "In the script editor, to toggle the selected code commented, press :kbd:" "`Ctrl + K`. This feature adds a single # sign at the start of the selected " "lines." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:368 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:416 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:221 msgid "Whitespace" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:370 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:418 msgid "" "Always use one space around operators and after commas. Also, avoid extra " "spaces in dictionary references and function calls." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:393 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:441 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:242 msgid "Don't use spaces to align expressions vertically:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:402 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:450 msgid "Quotes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:404 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:452 msgid "" "Use double quotes unless single quotes make it possible to escape fewer " "characters in a given string. See the examples below:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:422 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:470 msgid "Numbers" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:424 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:472 msgid "" "Don't omit the leading or trailing zero in floating-point numbers. " "Otherwise, this makes them less readable and harder to distinguish from " "integers at a glance." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:428 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:441 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:452 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:476 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:489 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:500 msgid "**Good**::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:433 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:445 -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:460 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:481 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:493 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:508 msgid "**Bad**::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:438 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:486 msgid "" "Use lowercase for letters in hexadecimal numbers, as their lower height " "makes the number easier to read." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:449 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:497 msgid "" "Take advantage of GDScript's underscores in literals to make large numbers " "more readable." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:471 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:519 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:197 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:293 msgid "Naming conventions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:473 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:521 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:295 msgid "" "These naming conventions follow the Godot Engine style. Breaking these will " @@ -18594,88 +18669,88 @@ msgid "" "inconsistent code." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:478 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:526 msgid "File names" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:480 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:528 msgid "" "Use snake_case for file names. For named classes, convert the PascalCase " "class name to snake_case::" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:493 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:541 msgid "" "This is consistent with how C++ files are named in Godot's source code. This " "also avoids case sensitivity issues that can crop up when exporting a " "project from Windows to other platforms." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:498 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:546 msgid "Classes and nodes" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:500 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:548 msgid "Use PascalCase for class and node names:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:506 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:554 msgid "Also use PascalCase when loading a class into a constant or a variable:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:513 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:561 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:300 msgid "Functions and variables" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:515 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:563 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:302 msgid "Use snake\\_case to name functions and variables:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:522 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:570 msgid "" "Prepend a single underscore (\\_) to virtual methods functions the user must " "override, private functions, and private variables:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:533 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:581 msgid "Use the past tense to name signals:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:541 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:589 msgid "Constants and enums" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:543 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:591 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:313 msgid "" "Write constants with CONSTANT\\_CASE, that is to say in all caps with an " "underscore (\\_) to separate words:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:550 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:598 msgid "" "Use PascalCase for enum *names* and CONSTANT\\_CASE for their members, as " "they are constants:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:564 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:612 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:321 msgid "Code order" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:566 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:614 msgid "" "This first section focuses on code order. For formatting, see :ref:" "`formatting`. For naming conventions, see :ref:`naming_conventions`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:569 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:617 msgid "We suggest to organize GDScript code this way:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:592 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:640 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:340 msgid "" "We optimized the order to make it easy to read the code from top to bottom, " @@ -18683,79 +18758,79 @@ msgid "" "works, and to avoid errors linked to the order of variable declarations." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:596 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:644 msgid "This code order follows four rules of thumb:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:598 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:646 msgid "Properties and signals come first, followed by methods." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:599 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:647 msgid "Public comes before private." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:600 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:648 msgid "Virtual callbacks come before the class's interface." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:601 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:649 msgid "" "The object's construction and initialization functions, ``_init`` and " "``_ready``, come before functions that modify the object at runtime." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:606 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:654 msgid "Class declaration" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:608 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:656 msgid "" "If the code is meant to run in the editor, place the ``tool`` keyword on the " "first line of the script." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:611 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:659 msgid "" "Follow with the `class_name` if necessary. You can turn a GDScript file into " "a global type in your project using this feature. For more information, see :" "ref:`doc_gdscript`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:615 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:663 msgid "Then, add the `extends` keyword if the class extends a built-in type." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:617 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:665 msgid "" "Following that, you should have the class's optional docstring as comments. " "You can use that to explain the role of your class to your teammates, how it " "works, and how other developers should use it, for example." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:629 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:677 msgid "Signals and properties" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:631 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:679 msgid "" "Write signal declarations, followed by properties, that is to say, member " "variables, after the docstring." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:634 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:682 msgid "" "Enums should come after signals, as you can use them as export hints for " "other properties." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:637 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:685 msgid "" "Then, write constants, exported variables, public, private, and onready " "variables, in that order." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:662 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:710 msgid "" "The GDScript compiler evaluates onready variables right before the " "``_ready`` callback. You can use that to cache node dependencies, that is to " @@ -18763,12 +18838,12 @@ msgid "" "the example above shows." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:668 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:716 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:268 msgid "Member variables" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:670 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:718 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:270 msgid "" "Don't declare member variables if they are only used locally in a method, as " @@ -18776,13 +18851,13 @@ msgid "" "variables in the method's body." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:675 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:723 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:275 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:351 msgid "Local variables" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:677 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:725 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:277 #: ../../docs/tutorials/shading/godot_shader_language_style_guide.rst:353 msgid "" @@ -18791,71 +18866,71 @@ msgid "" "where the variable was declared." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:682 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:730 msgid "Methods and static functions" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:684 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:732 msgid "After the class's properties come the methods." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:686 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:734 msgid "" "Start with the ``_init()`` callback method, that the engine will call upon " "creating the object in memory. Follow with the ``_ready()`` callback, that " "Godot calls when it adds a node to the scene tree." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:690 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:738 msgid "" "These functions should come first because they show how the object is " "initialized." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:693 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:741 msgid "" "Other built-in virtual callbacks, like ``_unhandled_input()`` and " "``_physics_process``, should come next. These control the object's main loop " "and interactions with the game engine." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:697 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:745 msgid "" "The rest of the class's interface, public and private methods, come after " "that, in that order." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:734 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:782 msgid "Static typing" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:736 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:784 msgid "" "Since Godot 3.1, GDScript supports :ref:`optional static " "typing`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:739 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:787 msgid "Declared types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:741 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:789 msgid "To declare a variable's type, use ``: ``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:747 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:795 msgid "To declare the return type of a function, use ``-> ``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:754 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:802 msgid "Inferred types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:756 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:804 msgid "In most cases you can let the compiler infer the type, using ``:=``:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:762 +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:810 msgid "" "However, in a few cases when context is missing, the compiler falls back to " "the function's return type. For example, ``get_node()`` cannot infer a type " @@ -18863,6 +18938,18 @@ msgid "" "should set the type explicitly." msgstr "" +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:821 +msgid "" +"Alternatively, you can use the ``as`` keyword to cast the return type, and " +"that type will be used to infer the type of the var." +msgstr "" + +#: ../../docs/getting_started/scripting/gdscript/gdscript_styleguide.rst:831 +msgid "" +"This option is also considered more :ref:`type-" +"safe` than the first." +msgstr "" + #: ../../docs/getting_started/scripting/gdscript/static_typing.rst:4 msgid "Static typing in GDScript" msgstr "" @@ -19072,11 +19159,11 @@ msgid "" "error." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:182 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:184 msgid "Safe lines" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:184 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:186 msgid "" "You can also use casting to ensure safe lines. Safe lines are a new tool in " "Godot 3.1 to tell you when ambiguous lines of code are type-safe. As you can " @@ -19085,7 +19172,7 @@ msgid "" "runtime." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:190 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:192 msgid "" "This happens when you get a child node. Let's take a timer for example: with " "dynamic code, you can get the node with ``$Timer``. GDScript supports `duck-" @@ -19095,7 +19182,7 @@ msgid "" "node's type as long as it has the methods you need to call." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:198 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:200 msgid "" "You can use casting to tell Godot the type you expect when you get a node: " "``($Timer as Timer)``, ``($Player as KinematicBody2D)``, etc. Godot will " @@ -19103,40 +19190,40 @@ msgid "" "of the script editor." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:206 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:208 msgid "Unsafe line (line 7) vs Safe Lines (line 6 and 8)" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:210 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:212 msgid "" "You can turn off safe lines or change their color in the editor settings." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:213 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:215 msgid "Define the return type of a function with the arrow ->" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:215 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:217 msgid "" "To define the return type of a function, write a dash and a right angle " "bracket ``->`` after its declaration, followed by the return type:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:223 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:225 msgid "" "The type ``void`` means the function does not return anything. You can use " "any type, as with variables:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:232 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:234 msgid "You can also use your own nodes as return types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:248 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:250 msgid "Typed or dynamic: stick to one style" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:250 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:252 msgid "" "Typed GDScript and dynamic GDScript can coexist in the same project. But " "it's recommended to stick to either style for consistency in your codebase, " @@ -19144,35 +19231,35 @@ msgid "" "the same guidelines, and faster to read and understand other people's code." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:256 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:258 msgid "" "Typed code takes a little more writing, but you get the benefits we " "discussed above. Here's an example of the same, empty script, in a dynamic " "style:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:272 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:274 msgid "And with static typing:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:286 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:288 msgid "" "As you can see, you can also use types with the engine's virtual methods. " "Signal callbacks, like any methods, can also use types. Here's a " "``body_entered`` signal in a dynamic style:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:295 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:297 msgid "And the same callback, with type hints:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:302 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:304 msgid "" "You're free to replace, e.g. the ``CollisionObject2D``, with your own type, " "to cast parameters automatically:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:313 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:315 msgid "" "The ``bullet`` variable could hold any ``CollisionObject2D`` here, but we " "make sure it is our ``Bullet``, a node we created for our project. If it's " @@ -19180,55 +19267,55 @@ msgid "" "``Bullet``, the ``bullet`` variable will be ``null``." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:319 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:321 msgid "Warning system" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:323 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:325 msgid "" "Documentation about the GDScript warning system has been moved to :ref:" "`doc_gdscript_warning_system`." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:327 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:329 msgid "Cases where you can't specify types" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:329 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:331 msgid "" "To wrap up this introduction, let's cover a few cases where you can't use " "type hints. All the examples below **will trigger errors**." msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:332 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:334 msgid "You can't use Enums as types:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:339 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:341 msgid "" "You can't specify the type of individual members in an array. This will give " "you an error:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:346 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:348 msgid "" "You can't force the assignment of types in a ``for`` loop, as each element " "the ``for`` keyword loops over already has a different type. So you " "**cannot** write:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:356 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:358 msgid "Two scripts can't depend on each other in a cyclic fashion:" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:379 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:381 #: ../../docs/getting_started/workflow/export/exporting_pcks.rst:138 #: ../../docs/tutorials/2d/2d_movement.rst:355 #: ../../docs/tutorials/2d/2d_sprite_animation.rst:264 msgid "Summary" msgstr "" -#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:381 +#: ../../docs/getting_started/scripting/gdscript/static_typing.rst:383 msgid "" "Typed GDScript is a powerful tool. Available as of version 3.1 of Godot, it " "helps you write more structured code, avoid common errors, and create " @@ -20079,7 +20166,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/scripting/visual_script/nodes_purposes.rst:58 -#: ../../docs/development/file_formats/tscn.rst:29 +#: ../../docs/development/file_formats/tscn.rst:31 msgid "Connections" msgstr "" @@ -20778,8 +20865,8 @@ msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_differences.rst:335 #: ../../docs/tutorials/io/background_loading.rst:272 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:90 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:259 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:306 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:313 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:360 #: ../../docs/community/contributing/code_style_guidelines.rst:150 msgid "Example:" msgstr "" @@ -20795,7 +20882,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/scripting/visual_script/custom_visualscript_nodes.rst:100 -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:263 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:259 msgid "Result:" msgstr "" @@ -20950,7 +21037,7 @@ msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:98 #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:114 -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:142 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:146 msgid "In Godot's **Editor → Editor Settings** menu:" msgstr "" @@ -21011,17 +21098,24 @@ msgstr "" #: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:124 msgid "" +"If you are using Linux you need to install the `Mono SDK `__ for the C# tools plugin to " +"work." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:128 +msgid "" "To configure a project for debugging open the Godot project folder in VS " "Code. Go to the Run tab and click on **create a launch.json file**. Select " "**C# Godot** from the dropdown menu. Now, when you start the debugger in VS " "Code your Godot project will run." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:129 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:133 msgid "Visual Studio (Windows only)" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:131 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:135 msgid "" "Download and install the latest version of `Visual Studio `__. Visual Studio will include the " @@ -21029,23 +21123,23 @@ msgid "" "to manually install the things listed in the \"Prerequisites\" section." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:137 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:141 msgid "While installing Visual Studio, select these workloads:" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:139 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:143 msgid "Mobile development with .NET" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:140 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:144 msgid ".NET Core cross-platform development" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:144 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:148 msgid "Set **Mono** -> **Editor** -> **External Editor** to **Visual Studio**." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:146 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:150 msgid "" "Next, you need to download the Godot Visual Studio extension from github " "`here `." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:214 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:218 msgid "" "Keep in mind that the class you wish to attach to your node should have the " "same name as the ``.cs`` file. Otherwise, you will get the following error " @@ -21117,11 +21211,11 @@ msgid "" "res://XXX.cs\"*" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:220 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:224 msgid "General differences between C# and GDScript" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:222 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:226 msgid "" "The C# API uses ``PascalCase`` instead of ``snake_case`` in GDScript/C++. " "Where possible, fields and getters/setters have been converted to " @@ -21129,11 +21223,11 @@ msgid "" "reasonably possible." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:226 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:230 msgid "For more information, see the :ref:`doc_c_sharp_differences` page." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:230 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:234 msgid "" "You need to (re)build the project assemblies whenever you want to see new " "exported variables or signals in the editor. This build can be manually " @@ -21142,17 +21236,17 @@ msgid "" "reveal the Mono panel, then click the **Build Project** button." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:236 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:240 msgid "" "You will also need to rebuild the project assemblies to apply changes in " "\"tool\" scripts." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:240 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:244 msgid "Current gotchas and known issues" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:242 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:246 msgid "" "As C# support is quite new in Godot, there are some growing pains and things " "that need to be ironed out. Below is a list of the most important issues you " @@ -21161,24 +21255,24 @@ msgid "" "godotengine/godot/labels/topic%3Amono>`_." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:248 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:252 msgid "" "Writing editor plugins is possible, but it is currently quite convoluted." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:249 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:253 msgid "" "State is currently not saved and restored when hot-reloading, with the " "exception of exported variables." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:251 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:255 msgid "" "Attached C# scripts should refer to a class that has a class name that " "matches the file name." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:253 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:257 msgid "" "There are some methods such as ``Get()``/``Set()``, ``Call()``/" "``CallDeferred()`` and signal connection method ``Connect()`` that rely on " @@ -21188,18 +21282,18 @@ msgid "" "can use any custom properties or methods without this limitation." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:261 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:265 msgid "" "Exporting Mono projects is supported for desktop platforms (Linux, Windows " "and macOS), Android, HTML5, and iOS. The only platform not supported yet is " "UWP." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:265 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:269 msgid "Performance of C# in Godot" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:267 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:271 msgid "" "According to some preliminary `benchmarks `_, the performance of C# in Godot — while generally in the same " @@ -21210,11 +21304,11 @@ msgid "" "when talking to Godot." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:275 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:279 msgid "Using NuGet packages in Godot" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:277 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:281 msgid "" "`NuGet `_ packages can be installed and used with " "Godot, as with any C# project. Many IDEs are able to add packages directly. " @@ -21222,24 +21316,24 @@ msgid "" "csproj`` file located in the project root:" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:291 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:295 msgid "" "As of Godot 3.2.3, Godot automatically downloads and sets up newly added " "NuGet packages the next time it builds the project." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:295 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:299 msgid "Profiling your C# code" msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:297 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:301 msgid "" "`Mono log profiler `_ is available for Linux and macOS. Due to a Mono change, it does " "not work on Windows currently." msgstr "" -#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:298 +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_basics.rst:302 msgid "" "External Mono profiler like `JetBrains dotTrace `_ can be used as described `here `) " +"they're attached to. They will also be available for editing in the property " +"editor. Exporting is done by using the ``[Export]`` attribute." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:22 +msgid "" +"In that example the value ``5`` will be saved, and after building the " +"current project it will be visible in the property editor. This way, artists " +"and game designers can modify values that later influence how the program " +"runs. For this, a special export syntax is provided." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:27 +msgid "" +"Exporting can only be done with built-in types or objects derived from the :" +"ref:`Resource class `." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:31 +msgid "" +"Exporting properties can also be done in GDScript, for information on that " +"see :ref:`doc_gdscript_exports`." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:35 +msgid "Basic use" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:37 +msgid "" +"Exporting can work with and without setting a default value. For int and " +"float ``0`` will then be used as the default." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:45 +msgid "Export works with resource types." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:54 +msgid "" +"There are many resource types that can be used this way, try e.g. the " +"following to list them:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:99 +msgid "Strings as paths" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:101 +msgid "Property hints can be used to export strings as paths" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:103 +msgid "String as a path to a file." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:110 +msgid "String as a path to a directory." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:117 +msgid "String as a path to a file, custom filter provided as hint." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:124 +msgid "" +"Using paths in the global filesystem is also possible, but only in scripts " +"in tool mode." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:127 +msgid "String as a path to a PNG file in the global filesystem." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:134 +msgid "String as a path to a directory in the global filesystem." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:141 +msgid "" +"The multiline annotation tells the editor to show a large input field for " +"editing over multiple lines." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:150 +msgid "Limiting editor input ranges" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:152 +msgid "" +"Using the range property hint allows you to limit what can be input as a " +"value using the editor." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:155 +msgid "Allow integer values from 0 to 20." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:162 +msgid "Allow integer values from -10 to 20." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:169 +msgid "Allow floats from -10 to 20 and snap the value to multiples of 0.2." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:176 +msgid "" +"If you add the hints \"or_greater\" and/or \"or_lesser\" you can go above or " +"below the limits when adjusting the value by typing it instead of using the " +"slider." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:185 +msgid "" +"Allow values 'y = exp(x)' where 'y' varies between 100 and 1000 while " +"snapping to steps of 20. The editor will present a slider for easily editing " +"the value. This only works with floats." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:195 +msgid "Floats with easing hint" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:197 +msgid "Display a visual representation of the 'ease()' function when editing." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:206 +msgid "Colors" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:208 +msgid "Regular color given as red-green-blue-alpha value." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:215 +msgid "Color given as red-green-blue value (alpha will always be 1)." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:225 +msgid "" +"Nodes can't be directly exported. Instead you need to export a node path, " +"then use that node path with ``GetNode()``." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:247 +msgid "" +"In the Inspector, you can then drag and drop a resource file from the " +"FileSystem dock into the variable slot." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:250 +msgid "" +"Opening the inspector dropdown may result in an extremely long list of " +"possible classes to create, however. Therefore, if you specify an extension " +"of Resource such as:" +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:259 +msgid "" +"The drop-down menu will be limited to AnimationNode and all its inherited " +"classes." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:269 +msgid "" +"Integers used as bit flags can store multiple ``true``/``false`` (boolean) " +"values in one property. By using the ``Flags`` property hint, they can be " +"set from the editor." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:279 +msgid "" +"You must provide a string description for each flag. In this example, " +"``Fire`` has value 1, ``Water`` has value 2, ``Earth`` has value 4 and " +"``Wind`` corresponds to value 8. Usually, constants should be defined " +"accordingly (e.g. ``private const int ElementWind = 8`` and so on)." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:284 +msgid "" +"Export annotations are also provided for the physics and render layers " +"defined in the project settings." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:303 +msgid "Exported arrays should be initialized empty." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:313 +msgid "" +"You can omit the default value, but then it would be null if not assigned." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:320 +msgid "" +"Arrays with specified types which inherit from resource can be set by drag-" +"and-dropping multiple files from the FileSystem dock." +msgstr "" + +#: ../../docs/getting_started/scripting/c_sharp/c_sharp_exports.rst:330 +msgid "" +"Arrays where the default value includes run-time values can't be exported." +msgstr "" + #: ../../docs/getting_started/scripting/c_sharp/c_sharp_style_guide.rst:4 msgid "C# style guide" msgstr "" @@ -22580,9 +22888,9 @@ msgid "" "The script templates have the same extension as the regular script files. " "This may lead to an issue of a script parser treating those templates as " "actual scripts within a project. To avoid this, make sure to ignore the " -"directory containing them by creating a ``.gdignore`` file. The directory " -"won't be visible throughout the project's filesystem anymore, yet the " -"templates can be modified by an external text editor anytime." +"directory containing them by creating an empty ``.gdignore`` file. The " +"directory won't be visible throughout the project's filesystem anymore, yet " +"the templates can be modified by an external text editor anytime." msgstr "" #: ../../docs/getting_started/scripting/creating_script_templates.rst:59 @@ -22805,20 +23113,23 @@ msgstr "" #: ../../docs/getting_started/workflow/project_setup/project_organization.rst:87 msgid "" "Once the folder is ignored, resources in that folder can't be loaded anymore " -"using the ``load()`` and ``preload()`` methods." +"using the ``load()`` and ``preload()`` methods. Ignoring a folder will also " +"automatically hide it from the FileSystem dock, which can be useful to " +"reduce clutter." msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:90 +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:91 msgid "" -"Ignoring a folder will also automatically hide it from the FileSystem dock, " -"which can be useful to reduce clutter." +"Note that the ``.gdignore`` file's contents are ignored, which is why the " +"file should be empty. It does not support patterns like ``.gitignore`` files " +"do." msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:96 +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:97 msgid "Case sensitivity" msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:98 +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:99 msgid "" "Windows and recent macOS versions use case-insensitive filesystems by " "default, whereas Linux distributions use a case-sensitive filesystem by " @@ -22828,13 +23139,13 @@ msgid "" "characters in general)." msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:107 +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:108 msgid "" "You can break this rule when style guides say otherwise (such as the C# " "style guide). Still, be consistent to avoid mistakes." msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:110 +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:111 msgid "" "On Windows 10, to further avoid mistakes related to case sensitivity, you " "can also make the project folder case-sensitive. After enabling the Windows " @@ -22842,7 +23153,7 @@ msgid "" "window::" msgstr "" -#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:120 +#: ../../docs/getting_started/workflow/project_setup/project_organization.rst:121 msgid "" "If you haven't enabled the Windows Subsystem for Linux, you can enter the " "following line in a PowerShell window *running as Administrator* then reboot " @@ -23146,35 +23457,37 @@ msgid "" msgstr "" #: ../../docs/getting_started/workflow/assets/importing_images.rst:30 -msgid "WebP (``.webp``)" +msgid "" +"WebP (``.webp``) - WebP files support transparency and can be compressed " +"lossily or losslessly. The precision is limited to 8 bits per channel." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:34 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:36 msgid "" "If you've compiled the Godot editor from source with specific modules " "disabled, some formats may not be available." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:38 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:40 msgid "Importing textures" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:40 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:42 msgid "" "The default action in Godot is to import images as textures. Textures are " "stored in video memory and can't be accessed directly. This is what makes " "drawing them efficient." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:44 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:46 msgid "Import options are vast:" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:49 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:51 msgid "Detect 3D" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:51 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:53 msgid "" "This option makes Godot be aware of when a texture (which is imported for 2D " "as default) is used in 3D. If this happens, setting are changed so the " @@ -23183,22 +23496,22 @@ msgid "" "automatically." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:55 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:57 msgid "Compression" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:57 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:59 msgid "" "Images are one of the largest assets in a game. To handle them efficiently, " "they need to be compressed. Godot offers several compression methods, " "depending on the use case." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:61 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:63 msgid "Compress Mode" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:63 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:65 msgid "" "**VRAM Compression:** This is the most common compression mode for 3D " "assets. Size on disk is reduced and video memory usage is also decreased " @@ -23206,7 +23519,7 @@ msgid "" "avoided for 2D as it exhibits noticeable artifacts." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:67 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:69 msgid "" "**Lossless Compression:** This is the most common compression mode for 2D " "assets. It shows assets without any kind of artifacting, and disk " @@ -23215,7 +23528,7 @@ msgid "" "pixel art." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:71 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:73 msgid "" "**Lossy Compression:** This is a good choice for large 2D assets. It has " "some artifacts, but less than VRAM and the file size is several times lower " @@ -23223,118 +23536,118 @@ msgid "" "this mode; it's the same as with Lossless Compression or Uncompressed." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:75 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:77 msgid "" "**Uncompressed:** Only useful for formats that can't be compressed (such as " "raw float images)." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:78 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:80 msgid "" "In this table, each of the four options are described together with their " "advantages and disadvantages (|good| = best, |bad| = worst):" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:82 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:84 msgid "Uncompressed" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:82 -msgid "Compress Lossless (PNG)" +#: ../../docs/getting_started/workflow/assets/importing_images.rst:84 +msgid "Compress Lossless" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:82 -msgid "Compress Lossy (WebP)" +#: ../../docs/getting_started/workflow/assets/importing_images.rst:84 +msgid "Compress Lossy" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:82 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:84 msgid "Compress VRAM" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:84 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:86 msgid "Stored as raw pixels" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:84 -msgid "Stored as PNG" +#: ../../docs/getting_started/workflow/assets/importing_images.rst:86 +msgid "Stored as Lossless WebP / PNG" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:84 -msgid "Stored as WebP" +#: ../../docs/getting_started/workflow/assets/importing_images.rst:86 +msgid "Stored as Lossy WebP" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:84 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:86 msgid "Stored as S3TC/BC or PVRTC/ETC depending on platform" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:86 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:88 msgid "Size on Disk" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:86 #: ../../docs/getting_started/workflow/assets/importing_images.rst:88 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:90 msgid "|bad| Large" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:86 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:88 msgid "|regular| Small" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:86 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:88 msgid "|good| Very Small" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:88 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:90 msgid "Memory Usage" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:88 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:90 msgid "|good| Small" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:90 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:92 msgid "Performance" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:90 -#: ../../docs/getting_started/workflow/assets/importing_images.rst:94 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:92 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:96 msgid "|regular| Normal" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:90 -#: ../../docs/getting_started/workflow/assets/importing_images.rst:94 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:92 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:96 msgid "|good| Fast" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:92 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:94 msgid "Quality Loss" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:92 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:94 msgid "|good| None" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:92 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:94 msgid "|regular| Slight" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:92 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:94 msgid "|bad| Moderate" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:94 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:96 msgid "Load Time" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:94 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:96 msgid "|bad| Slow" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:104 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:106 msgid "HDR Mode" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:106 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:108 msgid "" "Godot supports high dynamic range textures (as .HDR or .EXR). These are " "mostly useful as high dynamic range equirectangular panorama skies (the " @@ -23343,17 +23656,17 @@ msgid "" "that do not." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:109 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:111 msgid "" "If you want Godot to ensure full compatibility in terms of the kind of " "textures, enable the \"Force RGBE\" option." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:112 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:114 msgid "Normal Map" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:114 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:116 msgid "" "When using a texture as normal map, only the red and green channels are " "required. Given regular texture compression algorithms produce artifacts " @@ -23364,14 +23677,14 @@ msgid "" "changed to \"Enabled\" and reimported automatically." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:119 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:121 msgid "" "Note that RGTC compression affects the resulting normal map image. You will " "have to adjust custom shaders that use the normal map to take this into " "account." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:123 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:125 #: ../../docs/tutorials/3d/spatial_material.rst:378 msgid "" "Godot requires the normal map to use the X+, Y- and Z+ coordinates. In other " @@ -23380,7 +23693,7 @@ msgid "" "the normal map direction may appear to be inverted on the Y axis." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:128 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:130 #: ../../docs/tutorials/3d/spatial_material.rst:383 msgid "" "More information about normal maps (including a coordinate order table for " @@ -23388,38 +23701,38 @@ msgid "" "Normal_Map_Technical_Details>`__." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:133 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:135 #: ../../docs/tutorials/3d/spatial_material.rst:30 msgid "Flags" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:135 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:137 msgid "" "There are plenty of settings that can be toggled when importing an image as " "a texture, depending on the use case." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:138 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:140 msgid "Repeat" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:140 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:142 msgid "" "This setting is most commonly used in 3D, and is therefore generally " "disabled in 2D. It sets UV coordinates going beyond the 0,0 - 1,1 range to " "\"loop\"." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:142 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:144 msgid "Repeating can optionally be set to mirrored mode." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:145 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:147 #: ../../docs/tutorials/audio/audio_buses.rst:180 msgid "Filter" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:147 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:149 msgid "" "When pixels become larger than the screen pixels, this option enables linear " "interpolation for them. The result is a smoother (less blocky) texture. This " @@ -23427,11 +23740,11 @@ msgid "" "making pixel perfect games." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:150 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:152 msgid "Mipmaps" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:152 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:154 msgid "" "When pixels become smaller than the screen, mipmaps kick in. This helps " "reduce the grainy effect when shrinking the textures. Keep in mind that, in " @@ -23439,79 +23752,93 @@ msgid "" "mipmaps:" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:155 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:157 msgid "Texture width and height must be powers of 2" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:156 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:158 msgid "Repeat must be enabled" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:158 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:160 msgid "" "Keep in mind the above when making phone games and applications, want to aim " "for full compatibility, and need mipmaps." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:160 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:162 msgid "" "When doing 3D, mipmap should be turned on, as this also improves performance " "(smaller versions of the texture are used for objects further away)." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:163 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:165 msgid "Anisotropic" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:165 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:167 msgid "" "When textures are near parallel to the view (like floors), this option makes " "them have more detail by reducing blurriness." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:168 -msgid "SRGB" +#: ../../docs/getting_started/workflow/assets/importing_images.rst:170 +msgid "sRGB" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:170 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:172 msgid "" "Godot uses Linear colorspace when rendering 3D. Textures mapped to albedo or " "detail channels need to have this option turned on in order for colors to " -"look correct. When set to \"Detect\" mode, the texture will be marked as " -"SRGB when used in albedo channels." +"look correct. When set to **Detect** mode, the texture will be marked as " +"sRGB when used in albedo channels." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:174 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:177 +msgid "" +"Since the texture will have its data modified when sRGB is enabled, this " +"means using the same texture in both 2D and 3D will make the texture display " +"with incorrect colors in either 2D or 3D." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_images.rst:181 +msgid "" +"To work around this, make a copy of the texture on the filesystem and enable " +"sRGB on one of the copies only. Use the copy with sRGB enabled in 3D, and " +"the copy with sRGB disabled in 2D." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/importing_images.rst:186 msgid "Process" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:176 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:188 msgid "" "Some special processes can be applied to images when imported as textures." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:179 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:191 msgid "Fix Alpha Border" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:181 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:193 msgid "" "This puts pixels of the same surrounding color in transition from " "transparency to non transparency. It helps mitigate the outline effect when " "exporting images from Photoshop and the like." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:186 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:198 msgid "" "It's a good idea to leave it on by default, unless specific values are " "needed." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:189 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:201 msgid "Premultiplied Alpha" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:191 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:203 msgid "" "An alternative to fix darkened borders is to use premultiplied alpha. By " "enabling this option, the texture will be converted to this format. Keep in " @@ -23519,39 +23846,39 @@ msgid "" "blend mode on canvas items that need it." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:195 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:207 msgid "HDR as sRGB" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:197 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:209 msgid "" "A few HDR files are broken and contain sRGB color data. It is advised not to " "use them, but, in the worst-case scenario, toggling this option on will make " "them look right." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:200 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:212 msgid "Invert Color" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:202 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:214 msgid "" "Reverses the image's color. This is useful, for example, to convert a height " "map generated by external programs to depth map to use with :ref:" "`doc_spatial_material`." msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:205 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:217 msgid "Svg" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:208 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:220 #: ../../docs/tutorials/2d/particle_systems_2d.rst:286 #: ../../docs/tutorials/3d/using_multi_mesh_instance.rst:87 msgid "Scale" msgstr "" -#: ../../docs/getting_started/workflow/assets/importing_images.rst:210 +#: ../../docs/getting_started/workflow/assets/importing_images.rst:222 msgid "" "This option only applies to SVG files. It controls the scale of the SVG " "image. The default scale (1.0) will make the imported SVG match its original " @@ -24894,6 +25221,50 @@ msgid "" "the ``loop`` or ``cycle`` prefix or suffix." msgstr "" +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:4 +msgid "Exporting 3D scenes" +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:9 +msgid "" +"In Godot it is possible to export 3D scenes as a glTF 2.0 file. You can " +"export as a glTF binary (``.glb`` file) or glTF embedded with textures " +"(``gltf`` + ``.bin`` + textures). This allows you to create scenes in Godot, " +"such as a CSG mesh blockout for a level, export it to clean it up in a " +"program such as Blender, and then bring it back into Godot." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:17 +msgid "Only Blender 2.83 and newer can import glTF files exported by Godot." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:19 +msgid "" +"To export a scene in the editor go to **Project > Tools > Export GLTF...**" +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:26 +msgid "There are several limitations with glTF export." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:28 +msgid "" +"No support for exporting particles since their implementation varies across " +"engines." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:29 +msgid "ShaderMaterials cannot be exported." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:30 +msgid "No support for exporting 2D scenes." +msgstr "" + +#: ../../docs/getting_started/workflow/assets/exporting_3d_scenes.rst:31 +msgid "Only supported in editor builds (``tools=yes``)." +msgstr "" + #: ../../docs/getting_started/workflow/assets/escn_exporter/index.rst:2 msgid "Blender ESCN exporter" msgstr "" @@ -25236,7 +25607,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/workflow/assets/escn_exporter/skeleton.rst:2 -#: ../../docs/development/file_formats/tscn.rst:165 +#: ../../docs/development/file_formats/tscn.rst:167 msgid "Skeleton" msgstr "" @@ -25491,26 +25862,18 @@ msgid "" "extra package files `." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:39 -msgid "" -"Godot does not support loading PCK files larger than 2 GB yet. If your " -"exported project data is larger than 2 GB, you will need to split it into " -"several PCK files by :ref:`exporting additional PCKs ` " -"and loading them at run-time." -msgstr "" - -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:45 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:38 msgid "On mobile" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:47 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:40 msgid "" "The same scenario on mobile platforms is a little worse. To distribute a " "project on those devices, a binary for each of those platforms is built, " "then added to a native project together with the game data." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:52 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:45 msgid "" "This can be troublesome because it means that the developer must be " "familiarized with the SDK of each platform before even being able to export. " @@ -25518,7 +25881,7 @@ msgid "" "forced to do it at an undesired time." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:57 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:50 msgid "" "There is also another problem with this approach: different devices prefer " "some data in different formats to run. The main example of this is texture " @@ -25527,35 +25890,35 @@ msgid "" "formats for texture compression, such as PVRTC (iOS) or ETC (Android)." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:65 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:58 msgid "Export menu" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:67 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:60 msgid "" "After many attempts at different export workflows, the current one has " "proven to work the best. At the time of this writing, not all platforms are " "supported yet, but the supported platforms continue to grow." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:71 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:64 msgid "To open the export menu, click the **Export** button:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:75 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:68 msgid "" "The export menu will open. However, it will be completely empty. This is " "because we need to add an export preset." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:80 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:73 msgid "" "To create an export preset, click the **Add…** button at the top of the " "export menu. This will open a drop-down list of platforms to choose from for " "an export preset." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:86 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:79 msgid "" "The default options are often enough to export, so tweaking them is usually " "not necessary. However, many platforms require additional tools (SDKs) to be " @@ -25565,13 +25928,13 @@ msgid "" "they resolve it:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:95 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:88 msgid "" "At that time, the user is expected to come back to the documentation and " "follow instructions on how to properly set up that platform." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:101 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:94 msgid "" "Apart from setting up the platform, the export templates must be installed " "to be able to export projects. They can be obtained as a TPZ file (which is " @@ -25579,35 +25942,35 @@ msgid "" "godotengine.org/download>`_." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:106 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:99 msgid "" "Once downloaded, they can be installed using the **Install Export " "Templates** option in the editor:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:114 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:107 msgid "Export mode" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:116 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:109 msgid "" "When exporting, Godot makes a list of all the files to export and then " "creates the package. There are 3 different modes for exporting:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:119 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:112 msgid "Export all resources in the project" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:120 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:113 msgid "Export selected scenes (and dependencies)" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:121 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:114 msgid "Export selected resources (and dependencies)" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:125 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:118 msgid "" "**Export all resources in the project** will export every resource in the " "project. **Export selected scenes** and **Export selected resources** gives " @@ -25615,11 +25978,11 @@ msgid "" "every scene or resource you want to export." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:133 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:126 msgid "Exporting from the command line" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:135 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:128 msgid "" "In production, it is useful to automate builds, and Godot supports this with " "the ``--export`` and ``--export-debug`` command line parameters. Exporting " @@ -25627,7 +25990,7 @@ msgid "" "parameters. A basic invocation of the command would be:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:144 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:137 msgid "" "This will export to ``some_name.exe``, assuming there is a preset called " "\"Windows Desktop\" and the template can be found. The output path is " @@ -25635,61 +25998,61 @@ msgid "" "the command was invoked from." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:149 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:142 msgid "" "You can also configure it to export only the PCK or ZIP file, allowing a " "single export to be used with multiple Godot executables. This takes place " "if the target name ends with ``.pck`` or ``.zip``." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:153 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:146 msgid "" "It is often useful to combine the ``--export`` flag with the ``--path`` " "flag, and to create a dedicated export preset for automated export:" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:161 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:154 msgid "PCK versus ZIP pack file formats" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:163 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:156 msgid "" "Each format has its upsides and downsides. PCK is the default and " "recommended format for most use cases, but you may want to use a ZIP archive " "instead depending on your needs." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:167 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:160 msgid "**PCK format:**" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:169 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:162 msgid "Uncompressed format. Larger file size, but faster to read/write." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:170 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:163 msgid "" "Not readable and writable using tools normally present on the user's " "operating system, even though there are `third-party tools `__ to extract and create PCK files." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:175 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:168 msgid "**ZIP format:**" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:177 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:170 msgid "Compressed format. Smaller file size, but slower to read/write." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:178 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:171 msgid "" "Readable and writable using tools normally present on the user's operating " "system. This can be useful to make modding easier (see also :ref:" "`doc_exporting_pcks`)." msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:183 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:176 msgid "" "Due to a `known bug `__, " "when using a ZIP file as a pack file, the exported binary will not try to " @@ -25697,7 +26060,7 @@ msgid "" "the player can double-click or run from a terminal to launch the project::" msgstr "" -#: ../../docs/getting_started/workflow/export/exporting_projects.rst:195 +#: ../../docs/getting_started/workflow/export/exporting_projects.rst:188 msgid "" "Save the launcher script and place it in the same folder as the exported " "binary. On Linux, make sure to give executable permissions to the launcher " @@ -26890,13 +27253,13 @@ msgid "" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:40 -msgid "Install OpenJDK 8" +msgid "Install OpenJDK 11" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:42 msgid "" -"Download and install `OpenJDK 8 `__." +"Download and install `OpenJDK 11 `__." msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_android.rst:45 @@ -27858,7 +28221,7 @@ msgid "" msgstr "" #: ../../docs/getting_started/workflow/export/exporting_for_dedicated_servers.rst:114 -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:849 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:856 msgid "Next steps" msgstr "" @@ -29395,38 +29758,30 @@ msgid "``_physics_process(delta)`` : NOTIFICATION_PHYSICS_PROCESS" msgstr "" #: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:26 -msgid "``_input()`` : NOTIFICATION_INPUT" -msgstr "" - -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:28 -msgid "``_unhandled_input()`` : NOTIFICATION_UNHANDLED_INPUT" -msgstr "" - -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:30 msgid "``_draw()`` : NOTIFICATION_DRAW" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:32 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:28 msgid "" "What users might *not* realize is that notifications exist for types other " "than Node alone:" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:35 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:31 msgid "" ":ref:`Object::NOTIFICATION_POSTINITIALIZE " "`: a callback that " "triggers during object initialization. Not accessible to scripts." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:38 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:34 msgid "" ":ref:`Object::NOTIFICATION_PREDELETE " "`: a callback that triggers " "before the engine deletes an Object, i.e. a 'destructor'." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:42 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:38 msgid "" ":ref:`MainLoop::NOTIFICATION_WM_MOUSE_ENTER " "`: a callback that " @@ -29434,27 +29789,27 @@ msgid "" "displays the game content." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:46 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:42 msgid "" "And many of the callbacks that *do* exist in Nodes don't have any dedicated " "methods, but are still quite useful." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:49 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:45 msgid "" ":ref:`Node::NOTIFICATION_PARENTED " "`: a callback that triggers " "anytime one adds a child node to another node." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:52 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:48 msgid "" ":ref:`Node::NOTIFICATION_UNPARENTED " "`: a callback that triggers " "anytime one removes a child node from another node." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:56 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:52 msgid "" ":ref:`Popup::NOTIFICATION_POST_POPUP " "`: a callback that triggers " @@ -29462,36 +29817,36 @@ msgid "" "its ``about_to_show`` signal which triggers *before* its appearance." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:61 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:57 msgid "" "One can access all these custom notifications from the universal " "``_notification`` method." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:65 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:61 msgid "" "Methods in the documentation labeled as \"virtual\" are also intended to be " "overridden by scripts." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:68 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:64 msgid "" "A classic example is the :ref:`_init ` method in " "Object. While it has no ``NOTIFICATION_*`` equivalent, the engine still " "calls the method. Most languages (except C#) rely on it as a constructor." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:73 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:69 msgid "" "So, in which situation should one use each of these notifications or virtual " "functions?" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:77 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:73 msgid "_process vs. _physics_process vs. \\*_input" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:79 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:75 msgid "" "Use ``_process`` when one needs a framerate-dependent deltatime between " "frames. If code that updates object data needs to update as often as " @@ -29501,7 +29856,7 @@ msgid "" "implementing a Timer-yield-timeout loop is another option." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:97 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:93 msgid "" "Use ``_physics_process`` when one needs a framerate-independent deltatime " "between frames. If code needs consistent updates over time, regardless of " @@ -29509,7 +29864,7 @@ msgid "" "and object transform operations should execute here." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:102 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:98 msgid "" "While it is possible, to achieve the best performance, one should avoid " "making input checks during these callbacks. ``_process`` and " @@ -29518,18 +29873,18 @@ msgid "" "in which the engine has actually detected the input." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:108 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:104 msgid "" "One can check for input actions within the input callbacks just the same. If " "one wants to use delta time, one can fetch it from the related deltatime " "methods as needed." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:156 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:152 msgid "_init vs. initialization vs. export" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:158 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:154 msgid "" "If the script initializes its own node subtree, without a scene, that code " "should execute here. Other property or SceneTree-independent initializations " @@ -29537,43 +29892,43 @@ msgid "" "but after a script creates and initializes its properties." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:163 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:159 msgid "" "Scripts have three types of property assignments that can occur during " "instantiation:" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:210 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:206 msgid "" "When instantiating a scene, property values will set up according to the " "following sequence:" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:213 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:209 msgid "" "**Initial value assignment:** instantiation will assign either the " "initialization value or the init assignment value. Init assignments take " "priority over initialization values." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:217 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:213 msgid "" "**Exported value assignment:** If instancing from a scene rather than a " "script, Godot will assign the exported value to replace the initial value " "defined in the script." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:221 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:217 msgid "" "As a result, instantiating a script versus a scene will affect both the " "initialization *and* the number of times the engine calls the setter." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:225 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:221 msgid "_ready vs. _enter_tree vs. NOTIFICATION_PARENTED" msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:227 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:223 msgid "" "When instantiating a scene connected to the first executed scene, Godot will " "instantiate nodes down the tree (making ``_init`` calls) and build the tree " @@ -29583,7 +29938,7 @@ msgid "" "This then causes a reverse cascade going up back to the tree's root." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:234 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:230 msgid "" "When instantiating a script or a standalone scene, nodes are not added to " "the SceneTree upon creation, so no ``_enter_tree`` callbacks trigger. " @@ -29591,7 +29946,7 @@ msgid "" "SceneTree, the ``_enter_tree`` and ``_ready`` calls occur." msgstr "" -#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:239 +#: ../../docs/getting_started/workflow/best_practices/godot_notifications.rst:235 msgid "" "If one needs to trigger behavior that occurs as nodes parent to another, " "regardless of whether it occurs as part of the main/active scene or not, one " @@ -30490,7 +30845,7 @@ msgstr "" #: ../../docs/tutorials/2d/2d_transforms.rst:63 #: ../../docs/tutorials/io/data_paths.rst:51 #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:21 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:569 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:92 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:158 #: ../../docs/tutorials/shading/migrating_to_godot_shader_language.rst:218 @@ -30605,7 +30960,7 @@ msgstr "" #: ../../docs/tutorials/2d/using_tilemaps.rst:23 msgid "" -"This demo we'll use the following tiles taken from Kenney's \"Abstract " +"This demo will use the following tiles taken from Kenney's \"Abstract " "Platformer\" art pack. You can find the complete set `here `_ but for this demo we'll stick to this small " "set." @@ -31646,7 +32001,6 @@ msgstr "" #: ../../docs/tutorials/2d/2d_lights_and_shadows.rst:22 #: ../../docs/tutorials/animation/2d_skeletons.rst:30 #: ../../docs/tutorials/shading/your_first_shader/your_first_canvasitem_shader.rst:21 -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:12 #: ../../docs/tutorials/platform/customizing_html5_shell.rst:44 #: ../../docs/development/compiling/introduction_to_the_buildsystem.rst:40 msgid "Setup" @@ -32294,10 +32648,6 @@ msgstr "" msgid "Custom drawing in 2D" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:7 -msgid "Why?" -msgstr "" - #: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:9 msgid "" "Godot has nodes to draw sprites, polygons, particles, and all sorts of " @@ -32309,92 +32659,89 @@ msgid "" "too." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:17 -msgid "But..." -msgstr "" - -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:19 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:16 msgid "" -"Custom drawing manually in a node is *really* useful. Here are some examples " -"why:" +"Custom drawing in a 2D node is *really* useful. Here are some use cases:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:22 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:18 msgid "" -"Drawing shapes or logic that is not handled by nodes (example: making a node " -"that draws a circle, an image with trails, a special kind of animated " -"polygon, etc)." +"Drawing shapes or logic that existing nodes can't do, such as an image with " +"trails or a special animated polygon." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:25 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:20 msgid "" -"Visualizations that are not that compatible with nodes: (example: a tetris " -"board). The tetris example uses a custom draw function to draw the blocks." +"Visualizations that are not that compatible with nodes, such as a tetris " +"board. (The tetris example uses a custom draw function to draw the blocks.)" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:28 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:23 msgid "" "Drawing a large number of simple objects. Custom drawing avoids the overhead " -"of using nodes which makes it less memory intensive and potentially faster." +"of using a large number of nodes, possibly lowering memory usage and " +"improving performance." +msgstr "" + +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:26 +msgid "" +"Making a custom UI control. There are plenty of controls available, but when " +"you have unusual needs, you will likely need a custom control." msgstr "" #: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:31 -msgid "" -"Making a custom UI control. There are plenty of controls available, but it's " -"easy to run into the need to make a new, custom one." +#: ../../docs/tutorials/math/beziers_and_curves.rst:233 +#: ../../docs/tutorials/gui/custom_gui_controls.rst:17 +msgid "Drawing" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:35 -msgid "OK, how?" -msgstr "" - -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:37 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:33 msgid "" "Add a script to any :ref:`CanvasItem ` derived node, like :" "ref:`Control ` or :ref:`Node2D `. Then override " "the ``_draw()`` function." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:57 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:53 msgid "" "Draw commands are described in the :ref:`CanvasItem ` " "class reference. There are plenty of them." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:61 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:57 msgid "Updating" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:63 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:59 msgid "" "The ``_draw()`` function is only called once, and then the draw commands are " "cached and remembered, so further calls are unnecessary." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:66 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:62 msgid "" -"If re-drawing is required because a state or something else changed, simply " -"call :ref:`CanvasItem.update() ` in that " -"same node and a new ``_draw()`` call will happen." +"If re-drawing is required because a state or something else changed, call :" +"ref:`CanvasItem.update() ` in that same node " +"and a new ``_draw()`` call will happen." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:70 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:66 msgid "" "Here is a little more complex example, a texture variable that will be " "redrawn if modified:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:114 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:110 msgid "" "In some cases, it may be desired to draw every frame. For this, just call " "``update()`` from the ``_process()`` callback, like this:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:146 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:142 msgid "An example: drawing circular arcs" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:148 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:144 msgid "" "We will now use the custom drawing functionality of the Godot Engine to draw " "something that Godot doesn't provide functions for. As an example, Godot " @@ -32403,11 +32750,11 @@ msgid "" "to perform this and draw it yourself." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:154 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:150 msgid "Arc function" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:156 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:152 msgid "" "An arc is defined by its support circle parameters, that is, the center " "position and the radius. The arc itself is then defined by the angle it " @@ -32416,7 +32763,7 @@ msgid "" "value, so we can draw the arc in different colors if we wish." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:161 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:157 msgid "" "Basically, drawing a shape on the screen requires it to be decomposed into a " "certain number of points linked from one to the next. As you can imagine, " @@ -32430,7 +32777,7 @@ msgid "" "radius." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:201 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:197 msgid "" "Remember the number of points our shape has to be decomposed into? We fixed " "this number in the ``nb_points`` variable to a value of ``32``. Then, we " @@ -32438,7 +32785,7 @@ msgid "" "``Vector2``\\ s." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:205 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:201 msgid "" "The next step consists of computing the actual positions of these 32 points " "that compose an arc. This is done in the first for-loop: we iterate over the " @@ -32447,7 +32794,7 @@ msgid "" "the starting and ending angles." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:210 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:206 msgid "" "The reason why each angle is decreased by 90° is that we will compute 2D " "positions out of each angle using trigonometry (you know, cosine and sine " @@ -32457,7 +32804,7 @@ msgid "" "start counting from 12 o'clock." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:216 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:212 msgid "" "The actual position of a point located on a circle at angle ``angle`` (in " "radians) is given by ``Vector2(cos(angle), sin(angle))``. Since ``cos()`` " @@ -32469,7 +32816,7 @@ msgid "" "the point in the ``PoolVector2Array`` which was previously defined." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:224 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:220 msgid "" "Now, we need to actually draw our points. As you can imagine, we will not " "simply draw our 32 points: we need to draw everything that is between each " @@ -32481,21 +32828,21 @@ msgid "" "were to happen, we would simply need to increase the number of points." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:234 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:230 msgid "Draw the arc on the screen" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:236 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:232 msgid "" "We now have a function that draws stuff on the screen; it is time to call it " "inside the ``_draw()`` function:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:268 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:264 msgid "Arc polygon function" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:270 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:266 msgid "" "We can take this a step further and not only write a function that draws the " "plain portion of the disc defined by the arc, but also its shape. The method " @@ -32503,11 +32850,11 @@ msgid "" "lines:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:310 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:306 msgid "Dynamic custom drawing" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:312 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:308 msgid "" "All right, we are now able to draw custom stuff on the screen. However, it " "is static; let's make this shape turn around the center. The solution to do " @@ -32516,18 +32863,18 @@ msgid "" "to remain constant or else the rotation speed will change accordingly." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:318 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:314 msgid "" "First, we have to make both angle_from and angle_to variables global at the " "top of our script. Also note that you can store them in other nodes and " "access them using ``get_node()``." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:340 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:336 msgid "We make these values change in the _process(delta) function." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:342 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:338 msgid "" "We also increment our angle_from and angle_to values here. However, we must " "not forget to ``wrap()`` the resulting values between 0 and 360°! That is, " @@ -32538,25 +32885,25 @@ msgid "" "unexpected behavior." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:349 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:345 msgid "" "Finally, we must not forget to call the ``update()`` function, which " "automatically calls ``_draw()``. This way, you can control when you want to " "refresh the frame." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:389 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:378 msgid "" "Also, don't forget to modify the ``_draw()`` function to make use of these " "variables:" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:413 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:402 msgid "" "Let's run! It works, but the arc is rotating insanely fast! What's wrong?" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:416 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:405 msgid "" "The reason is that your GPU is actually displaying the frames as fast as it " "can. We need to \"normalize\" the drawing by this speed; to achieve that, we " @@ -32567,7 +32914,7 @@ msgid "" "program runs at the same speed on everybody's hardware." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:424 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:413 msgid "" "In our case, we simply need to multiply our ``rotation_angle`` variable by " "``delta`` in the ``_process()`` function. This way, our 2 angles will be " @@ -32575,23 +32922,23 @@ msgid "" "speed." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:458 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:447 msgid "Let's run again! This time, the rotation displays fine!" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:461 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:450 #: ../../docs/tutorials/content/procedural_geometry/index.rst:75 #: ../../docs/development/compiling/introduction_to_the_buildsystem.rst:130 msgid "Tools" msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:463 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:452 msgid "" "Drawing your own nodes might also be desired while running them in the " "editor to use as a preview or visualization of some feature or behavior." msgstr "" -#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:467 +#: ../../docs/tutorials/2d/custom_drawing_in_2d.rst:456 msgid "" "Remember to use the \"tool\" keyword at the top of the script (check the :" "ref:`doc_gdscript` reference if you forgot what this does)." @@ -34062,11 +34409,13 @@ msgid "" msgstr "" #: ../../docs/tutorials/3d/spatial_material.rst:161 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:109 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:149 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:252 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:296 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:441 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:123 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:163 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:216 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:233 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:306 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:350 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:495 msgid "Parameters" msgstr "" @@ -34795,7 +35144,7 @@ msgstr "" #: ../../docs/tutorials/3d/lights_and_shadows.rst:55 msgid "" -"**Reverse Cull Faces**: Some scenes work better when shadow mapping is " +"**Reverse Cull Face**: Some scenes work better when shadow mapping is " "rendered with face-culling inverted." msgstr "" @@ -34806,21 +35155,60 @@ msgid "" msgstr "" #: ../../docs/tutorials/3d/lights_and_shadows.rst:62 -msgid "Finally, if gaps can't be solved, the **Contact** option can help:" +msgid "" +"Finally, if gaps can't be solved, the **Contact** option can help (at a " +"performance cost):" msgstr "" #: ../../docs/tutorials/3d/lights_and_shadows.rst:66 msgid "" "Any sort of bias issues can always be fixed by increasing the shadow map " -"resolution, although that may lead to decreased performance on low-end " -"hardware." +"resolution, although that may lead to decreased performance." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:70 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:71 +msgid "" +"If shadow biasing is a problem in your scene, the following settings are a " +"good starting point:" +msgstr "" + +#: ../../docs/tutorials/3d/lights_and_shadows.rst:73 +msgid "" +"Enable **Reverse Cull Face**. This reduces shadow peter-panning " +"significantly and prevents lights from exhibiting shadow acne at grazing " +"angles. The main downside is that it may cause lighting to leak in some " +"corners. The other downside is that materials that have their cull mode set " +"to **Disabled** or MeshInstances with Cast Shadow set to **Double-Sided** " +"may exhibit shadow acne." +msgstr "" + +#: ../../docs/tutorials/3d/lights_and_shadows.rst:79 +msgid "" +"Set **Bias** to ``-0.01``. The bias should be a negative value when " +"**Reverse Cull Face** is enabled, but it should be a positive value when " +"it's disabled." +msgstr "" + +#: ../../docs/tutorials/3d/lights_and_shadows.rst:81 +msgid "" +"For DirectionalLight, set the directional shadow **Normal Bias** to ``0.0`` " +"and **Bias Split Scale** to ``0.0``. Depending on your scene, you may also " +"want to further decrease **Bias** to a value between ``-0.05`` and ``-0.1``." +msgstr "" + +#: ../../docs/tutorials/3d/lights_and_shadows.rst:85 +msgid "" +"Following the above tips should make it possible to avoid gaps in shadows " +"without resorting to contact shadows (which have many issues of their own). " +"If shadow acne is still visible after performing the above tweaks, try " +"subdividing your meshes further in your 3D modeling software." +msgstr "" + +#: ../../docs/tutorials/3d/lights_and_shadows.rst:91 msgid "Directional light" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:72 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:93 msgid "" "This is the most common type of light and represents a light source very far " "away (such as the sun). It is also the cheapest light to compute and should " @@ -34828,7 +35216,7 @@ msgid "" "compute, but more on that later)." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:76 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:97 msgid "" "Directional light models an infinite number of parallel light rays covering " "the whole scene. The directional light node is represented by a big arrow " @@ -34836,18 +35224,18 @@ msgid "" "the node does not affect the lighting at all and can be anywhere." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:83 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:104 msgid "" "Every face whose front-side is hit by the light rays is lit, while the " "others stay dark. Most light types have specific parameters, but directional " "lights are pretty simple in nature, so they don't." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:87 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:108 msgid "Directional shadow mapping" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:89 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:110 msgid "" "To compute shadow maps, the scene is rendered (only depth) from an " "orthogonal point of view that covers the whole scene (or up to the max " @@ -34855,7 +35243,7 @@ msgid "" "closer to the camera receive blocky shadows." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:95 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:116 msgid "" "To fix this, a technique named \"Parallel Split Shadow Maps\" (or PSSM) is " "used. This splits the view frustum in 2 or 4 areas. Each area gets its own " @@ -34863,15 +35251,15 @@ msgid "" "shadow resolution as a huge, far-away area." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:100 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:121 msgid "With this, shadows become more detailed:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:104 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:125 msgid "To control PSSM, a number of parameters are exposed:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:108 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:129 msgid "" "Each split distance is controlled relative to the camera far (or shadow " "**Max Distance** if greater than zero), so *0.0* is the eye position and " @@ -34880,38 +35268,38 @@ msgid "" "give more detail to close objects (like a character in a third person game)." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:114 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:135 msgid "" "Always make sure to set a shadow *Max Distance* according to what the scene " "needs. A lower maximum distance will result in better-looking shadows." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:117 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:138 msgid "" "Sometimes, the transition between a split and the next can look bad. To fix " "this, the **\"Blend Splits\"** option can be turned on, which sacrifices " "detail in exchange for smoother transitions:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:123 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:144 msgid "" "The **\"Normal Bias\"** parameter can be used to fix special cases of self " "shadowing when objects are perpendicular to the light. The only downside is " "that it makes the shadow a bit thinner." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:129 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:150 msgid "" "The **\"Bias Split Scale\"** parameter can control extra bias for the splits " "that are far away. If self shadowing occurs only on the splits far away, " "this value can fix them." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:132 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:153 msgid "Finally, the **\"Depth Range\"** has two settings:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:134 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:155 msgid "" "**Stable**: Keeps the shadow stable while the camera moves, and the blocks " "that appear in the outline when close to the shadow edges remain in-place. " @@ -34919,7 +35307,7 @@ msgid "" "shadow resolution." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:135 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:156 msgid "" "**Optimized**: Tries to achieve the maximum resolution available at any " "given time. This may result in a \"moving saw\" effect on shadow edges, but " @@ -34927,68 +35315,68 @@ msgid "" "subtle enough to be forgiven)." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:137 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:158 msgid "Just experiment which setting works better for your scene." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:139 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:160 msgid "" "Shadowmap size for directional lights can be changed in Project Settings -> " "Rendering -> Quality:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:143 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:164 msgid "" "Increasing it can solve bias problems, but decrease performance. Shadow " "mapping is an art of tweaking." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:146 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:167 msgid "Omni light" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:148 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:169 msgid "" "Omni light is a point source that emits light spherically in all directions " "up to a given radius." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:153 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:174 msgid "" "In real life, light attenuation is an inverse function, which means omni " "lights don't have a radius. This is a problem because it means computing " "several omni lights would become demanding." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:156 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:177 msgid "" "To solve this, a *Range* is introduced together with an attenuation function." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:160 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:181 msgid "" "These two parameters allow tweaking how this works visually in order to find " "aesthetically pleasing results." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:166 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:187 msgid "Omni shadow mapping" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:168 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:189 msgid "" "Omni light shadow mapping is relatively straightforward. The main issue that " "needs to be considered is the algorithm used to render it." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:171 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:192 msgid "" "Omni Shadows can be rendered as either **\"Dual Paraboloid\" or \"Cube Mapped" "\"**. The former renders quickly, but can cause deformations, while the " "later is more correct, but costlier." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:177 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:198 msgid "" "If the objects being rendered are mostly irregular, Dual Paraboloid is " "usually enough. In any case, as these shadows are cached in a shadow atlas " @@ -34996,11 +35384,11 @@ msgid "" "most scenes." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:182 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:203 msgid "Spot light" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:184 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:205 msgid "" "Spot lights are similar to omni lights, except they emit light only into a " "cone (or \"cutoff\"). They are useful to simulate flashlights, car lights, " @@ -35008,57 +35396,57 @@ msgid "" "opposite direction it points to." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:191 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:212 msgid "" "Spot lights share the same **Range** and **Attenuation** as **OmniLight**, " "and add two extra parameters:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:193 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:214 msgid "**Angle**: The aperture angle of the light" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:194 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:215 msgid "" "**Angle Attenuation**: The cone attenuation, which helps soften the cone " "borders." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:197 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:218 msgid "Spot shadow mapping" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:199 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:220 msgid "" "Spots don't need any parameters for shadow mapping. Keep in mind that, at " "more than 89 degrees of aperture, shadows stop functioning for spots, and " "you should consider using an Omni light instead." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:203 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:224 msgid "Shadow atlas" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:205 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:226 msgid "" "Unlike Directional lights, which have their own shadow texture, Omni and " "Spot lights are assigned to slots of a shadow atlas. This atlas can be " "configured in Project Settings -> Rendering -> Quality -> Shadow Atlas." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:210 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:231 msgid "" "The resolution applies to the whole Shadow Atlas. This atlas is divided into " "four quadrants:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:214 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:235 msgid "" "Each quadrant can be subdivided to allocate any number of shadow maps; the " "following is the default subdivision:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:218 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:239 msgid "" "The allocation logic is simple. The biggest shadow map size (when no " "subdivision is used) represents a light the size of the screen (or bigger). " @@ -35066,53 +35454,53 @@ msgid "" "away from view and proportionally smaller." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:223 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:244 msgid "Every frame, the following procedure is performed for all lights:" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:225 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:246 msgid "" "Check if the light is on a slot of the right size. If not, re-render it and " "move it to a larger/smaller slot." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:226 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:247 msgid "" "Check if any object affecting the shadow map has changed. If it did, re-" "render the light." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:227 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:248 msgid "" "If neither of the above has happened, nothing is done, and the shadow is " "left untouched." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:229 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:250 msgid "" "If the slots in a quadrant are full, lights are pushed back to smaller " "slots, depending on size and distance." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:231 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:252 msgid "" "This allocation strategy works for most games, but you may want to use a " "separate one in some cases (for example, a top-down game where all lights " "are around the same size and quadrants may all have the same subdivision)." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:235 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:256 msgid "Shadow filter quality" msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:237 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:258 msgid "" "The filter quality of shadows can be tweaked. This can be found in Project " "Settings -> Rendering -> Quality -> Shadows. Godot supports no filter, PCF5 " "and PCF13." msgstr "" -#: ../../docs/tutorials/3d/lights_and_shadows.rst:243 +#: ../../docs/tutorials/3d/lights_and_shadows.rst:264 msgid "It affects the blockyness of the shadow outline:" msgstr "" @@ -45406,6 +45794,1676 @@ msgid "" "for more information on particle shaders." msgstr "" +#: ../../docs/tutorials/3d/portals/index.rst:4 +msgid "Rooms and Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:4 +msgid "Introduction to Rooms and Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:6 +msgid "" +"The rooms and portals system is an optional component of Godot that allows " +"you to partition your 3D game levels into a series of :ref:" +"`Room` s (*aka cells*), and :ref:`Portal` s. " +"Portals are openings between the rooms that the :ref:`Camera` " +"(and lights) can see through." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:8 +msgid "This allows several features:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:10 +msgid "" +"**Portal occlusion culling**, which can increase performance by reducing the " +"number of objects that are drawn, both to cameras and to shadow maps." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:12 +msgid "" +"**Gameplay callbacks**, which allow turning off activity outside the " +"gameplay area - AI, physics, animation, processing etc." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:14 +msgid "" +"The trade off for these features is that we have to manually partition our " +"level into rooms, and add portals between them." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:16 +msgid "" +"Godot portals should not be confused with those in the `game of the same " +"name `__. They do not " +"warp space, they simply represent a window that the camera (or lights) can " +"see through." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:19 +msgid "Minimizing manual labour" +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:21 +msgid "" +"Although the effort involved in creating rooms for a large level may seem " +"daunting, there are several factors which can make this much easier:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:23 +msgid "" +"If you are \"kit bashing\" and reusing rooms or areas already, this is an " +"ideal way to save effort. Your level tiles can be rooms, with portals " +"already placed." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:24 +msgid "" +"If you are creating procedural levels, you can create rooms and portals as " +"part of the procedural generation algorithm you're writing." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:25 +msgid "" +"Finally, if you are manually creating freeform levels, bear in mind there " +"are absolutely no rules as to how far you go with portalling. Even if you " +"separate a large game level into only two rooms, with a single portal " +"between them, this can still result in relatively large performance gains." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:27 +msgid "" +"The performance benefits (especially in terms of occlusion) follow an L-" +"shaped curve, with the lion's share occurring when you have created just a " +"few rooms. So do not be afraid to be lazy - **\\*work smart\\***." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:29 +msgid "" +"In general, when it comes to medium and large-sized levels, it is better to " +"do a little portalling than none at all." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:32 +msgid "Some caveats" +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:34 +msgid "" +"The portal system should be considered an **advanced feature** of Godot. You " +"should not attempt to use rooms and portals until you are familiar with the " +"Godot editor, and have successfully made at least a couple of test games." +msgstr "" + +#: ../../docs/tutorials/3d/portals/introduction_to_rooms_and_portals.rst:36 +msgid "" +"It gives you great power as a game designer, but the trade off is that it " +"requires a very technical approach to level design. It is aimed at producing " +"professional-grade results, and assumes the user is prepared to put in the " +"work for this. It is not intended to be used for all 3D games. Not all games " +"will significantly benefit from portals, and it may require more time than a " +"short game jam allows." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:2 +msgid "First steps with Rooms and Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:5 +msgid "The RoomManager" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:7 +msgid "" +"Anytime you want to use the portal system, you need to include a special " +"node in your scene tree, called the :ref:`RoomManager`. " +"The RoomManager is responsible for the runtime maintenance of the system, " +"especially converting the objects in your rooms into a *room graph* which is " +"used at runtime to perform occlusion culling and other tasks." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:10 +msgid "Room Conversion" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:12 +msgid "" +"This conversion must take place every time you want to activate the system. " +"It does not store the *room graph* in your project (for flexibility and to " +"save memory). You can either trigger it by pressing the **Convert Rooms** " +"button in the editor toolbar (which also has a keyboard shortcut), or you " +"can call the ``rooms_convert()`` method in the RoomManager. This latter " +"method will be what you use in-game. Note that for safety, best practice is " +"to call ``rooms_clear()`` before unloading or changing levels." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:16 +msgid "" +"If you convert the level while the editor is running, the portal culling " +"system will take over from the normal Godot frustum culling. This may affect " +"some editor features. For this reason, you can turn the portal culling on " +"and off, using either the **View Portal Culling** toggle in the **View** " +"menu on the editor toolbar (which also has a keyboard shortcut), or via the " +"**Active** setting in the RoomManager node." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:18 +msgid "" +"To use the RoomManager, you have to tell it where the rooms are in your " +"scene tree, or rather where the RoomList node is. This RoomList is the " +"parent of your rooms - see below. If the RoomList is not set, conversion " +"will fail, and you will see a warning dialog box." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:23 +msgid "The RoomList" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:25 +msgid "" +"Before we create any rooms, we must first create a node to be the parent of " +"all the static objects, rooms, roomgroups and so on in our level. This node " +"is referred to as the the ``RoomList``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:29 +msgid "" +"The roomlist is **not** a special node type, it can just be a regular " +"Spatial." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:31 +msgid "" +"You will need to assign the roomlist node in the RoomManager, so the " +"RoomManager knows where to find the rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:33 +msgid "" +"Why do we use a specific branch of the scene tree, and not use the scene " +"root? The answer is that there are many internal details of the system which " +"are easier to manage if the rooms are placed on their own branch." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:35 +msgid "" +"Often, you will end up completely replacing the roomlist branch at runtime " +"in your game as you load and unload levels." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:38 +msgid "Rooms" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:41 +msgid "What is a room?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:43 +msgid "" +":ref:`Room`\\ s are a way of spatially partitioning your level " +"into areas that make sense in terms of the level design. Rooms often quite " +"literally *are* rooms (for instance in a building). Ultimately though, as " +"far as the engine is concerned, a room respresents a **non-overlapping** " +"convex volume, in which you would typically place most of your objects that " +"fall within that area." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:45 +msgid "" +"A room doesn't need to correspond to a literal room. It could for example " +"also be a canyon in an outdoor area, or a smaller part of a concave room. " +"With a little imagination, you can use the system in almost any scenario." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:48 +msgid "Why convex?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:50 +msgid "" +"The reason why rooms are defined as convex volumes (or *convex hulls* as " +"they are known), is that mathematically, it is very easy to determine " +"whether a point is within a convex hull. A simple plane check will tell you " +"the distance of a point from a plane. If a point is behind all the planes " +"bounding the convex hull, then by definition, it is inside the room. This " +"makes all kinds of things easier in the internals of the system, such as " +"checking which room a camera is within." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:52 +msgid "" +"*A convex hull. The hull is defined as a series of planes facing outward. If " +"a point is behind all the planes, it is within the hull.*" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:57 +msgid "Why non-overlapping?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:59 +msgid "" +"If two rooms overlap, and a camera or player is in this overlapping zone, " +"then there is no way to tell which room the object should be in (and hence " +"render from), or be rendered in. This requirement for non-overlapping rooms " +"does have implications for level design." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:61 +msgid "" +"If you accidentally create overlapping rooms, the editor will flag a warning " +"when you convert the rooms, and indicate any overlapping zones in red." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:65 +msgid "" +"The system does attempt to cope with overlapping rooms as best as possible " +"by making the current room *\"sticky\"*. Each object remembers which room it " +"was in last frame, and stays within it as long as it does not move outside " +"the convex hull room bound. This can result in some hysteresis in these " +"overlapping zones." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:67 +msgid "" +"There is one exception however for :ref:`internal " +"rooms`. You do not have to worry about " +"these to start with." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:70 +msgid "How do I create a room?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:72 +msgid "" +"A :ref:`Room` is a node type that can be added to the scene tree " +"like any other. You can place objects within the room by making them " +"children and grand-children of the Room node." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:75 +msgid "How do I define the shape and position of my room convex hull?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:77 +msgid "" +"Because defining the room bound is the most important aspect of the system, " +"there are THREE methods available to define the shape of a room in Godot:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:79 +msgid "" +"Use the geometry of the objects contained within the room to automatically " +"create an approximate bound." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:80 +msgid "" +"By manually editing the points that define the convex hull, in the room " +"inspector, or dragging the points using the editor gizmo (see :ref:" +"`doc_room_point_editing`)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:81 +msgid "" +"Provide a manual bound. This is a MeshInstance in the room that has geometry " +"in the shape of the desired bound, with a name with a postfix ``-bound``. " +"This is something you might choose to do if you create your levels in " +"Blender or similar (see :ref:`doc_rooms_and_portals_blender`)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:83 +msgid "" +"While the first option can be all that is required, particularly with simple " +"rooms, or for pre-production, the power of the manual bounds gives you " +"ultimate control (at the expense of a small amount of editing). You can also " +"combine the two approaches, perhaps using automatic bounds for most rooms " +"but manually editing problem areas." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:85 +msgid "The automatic method is used whenever a manual bound is not supplied." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:87 +msgid "" +"*A simple pair of rooms. The portal margin is shown with translucent red, " +"and the room hulls are shown with green wireframe.*" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:92 +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:43 +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:119 +msgid "Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:94 +msgid "" +"If you create some rooms, place objects within them, then convert the level " +"in the editor, you will see the objects in the rooms appearing and showing " +"as you move between rooms. There is one problem however! Although you can " +"see the objects within the room that the camera is in, you can't see to any " +"neighbouring rooms! For that we need portals." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:96 +msgid "" +":ref:`Portal`\\ s are special convex polygons. You position " +"over the openings between rooms, in order to allow the system to see between " +"them. You can create a portal node directly in the editor. The default " +"portal has 4 points and behaves much like a ``plane`` :ref:" +"`MeshInstance`. You can add or remove points using the " +"inspector. A portal will require at least 3 points to work - this is because " +"it needs to form a polygon rather than a point or line." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:98 +msgid "" +"To save editing effort, **only one Portal is required between each pair of " +"Rooms**. You *do not need* to (and indeed should not) create two Portals " +"that overlap in opposite directions. Portals default to being two-way (but " +"you can make them one-way in the Portal inspector)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:100 +msgid "" +"You should therefore place a portal in only one of each pair of neighbouring " +"rooms - this is the portal's *\"source room\"*. Generally it doesn't matter " +"which you choose as the source room. The portal normal (the arrow in the " +"gizmo) should face *outward* from the source room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:104 +msgid "" +"Do not be confused by the arrow. Although the arrow shows which direction " +"the portal faces, most portals will be *two-way*, and can be seen through " +"from both directions. The arrow is more important for ensuring that the " +"portal links to the correct neighbouring room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:107 +msgid "Portal linking" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:109 +msgid "" +"There are two options for dealing with specifying which room the portal " +"should link to." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:111 +msgid "" +"Leave the **Linked Room** in the inspector blank. The system will attempt to " +"*autolink* the portal to the nearest neighbour room during conversion. This " +"works fine in most cases." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:112 +msgid "" +"You can explicitly specify the room by setting the **Linked Room** in the " +"inspector." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:114 +msgid "" +"Portals are defined as a set of 2D points. This ensures that the polygon " +"formed is in a single plane. The transform determines the portal " +"orientation. The points must also form a *convex* polygon. This is enforced " +"by validating the points you specify, ignoring any that do not form a convex " +"shape. This makes editing easier while making it difficult to break the " +"system." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:117 +msgid "Trying it out" +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:119 +msgid "" +"By now you should be able to create a couple of rooms, add some nodes such " +"as MeshInstances within the rooms, and add a portal between the rooms. Try " +"converting the rooms in the editor, and see if you can now see the objects " +"in neighbouring rooms, through the portal." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:123 +msgid "You have now mastered the basic principles of the system." +msgstr "" + +#: ../../docs/tutorials/3d/portals/first_steps_with_rooms_and_portals.rst:125 +msgid "" +"The next step is to look at the different types of objects that can be " +"managed by the system." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:2 +msgid "Using objects in Rooms and Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:4 +msgid "" +"Normally, when you use Godot, all objects that you can see (:ref:" +"`VisualInstance`\\ s) are treated in the same way by " +"the engine. The portal renderer is slightly different, in that it makes a " +"distinction between the different roles objects will have in your game. It " +"makes this distinction to define the :ref:`Room`\\ s, and to " +"render and process everything in the most efficient way." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:7 +msgid "Portal mode" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:9 +msgid "" +"If you look in the inspector, every VisualInstance in Godot is derived from " +"a :ref:`CullInstance`, where you can set a " +"``PortalMode``. This determines how objects will behave in the portal system." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:14 +msgid "STATIC" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:16 +msgid "" +"The default mode for objects is ``STATIC``. Static objects are objects " +"within rooms that will not move throughout the lifecycle of the level. " +"Things like floors, walls, ceilings are good candidates for ``STATIC`` " +"objects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:19 +msgid "DYNAMIC" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:21 +msgid "" +"Dynamic mode is for objects that are expected to move during the game. But " +"there is a limitation - **they must not move outside of their original " +"room**. These objects are handled very efficiently by the system. Examples " +"might include moving platforms, and elevators." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:24 +msgid "ROAMING" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:26 +msgid "" +"Roaming mode is for objects that can move between rooms. Things like players " +"and enemies should be marked as roaming. These are more expensive to " +"calculate than ``STATIC`` or ``DYNAMIC`` modes, because the system has to " +"keep track of which room a roaming object is within." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:29 +msgid "GLOBAL" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:31 +msgid "" +"Global mode is for objects that you don't want occlusion culled at all. " +"Things like a main player's weapon, bullets and some particle effects are " +"good candidates for ``GLOBAL`` mode." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:34 +msgid "IGNORE" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:36 +msgid "" +"Ignore is a special mode for objects that will be essentially free in the " +"system. Manual bounds (``-bound``) get converted to ignore portal mode " +"automatically. They don't need to show up during the game, but are kept in " +"the scene tree in case you need to convert the level multiple times (e.g. in " +"the Editor). You might also choose to use this for objects that you *only* " +"want to show up in the editor (when RoomManager is inactive)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:39 +msgid "Should you place objects within rooms (in the scene tree) or not?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:41 +msgid "" +"``STATIC`` and ``DYNAMIC`` objects are ideally placed within rooms in the " +"scene tree. The system needs to know which room they are in during " +"conversion as it assumes they will never change room. Placing them within " +"rooms in the scene tree allows you to explicitly tell the system where you " +"want them." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:44 +msgid "Autoplace" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:46 +msgid "" +"However, for ease of use, it is also possible to place ``STATIC`` and " +"``DYNAMIC`` objects *outside* the rooms in the scene tree, but within the " +"RoomList branch. The system will attempt to **autoplace** the objects into " +"the appropriate room. This works in most cases but if in doubt, use the " +"explicit approach. The explicit approach is especially needed when dealing " +"with internal rooms, which have some restrictions for sprawling objects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:50 +msgid "" +"Note that if you place ``STATIC`` and ``DYNAMIC`` objects outside of rooms, " +"they will not contribute to the room bound. If you are using the room " +"geometry to derive the bound, tables and chairs can be placed outside the " +"room. However, walls and floors should be explicitly within the Room's " +"branch of the scene tree to ensure the bound is correct." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:52 +msgid "" +"``ROAMING`` and ``GLOBAL`` objects are recommended to be kept in a branch of " +"the scene tree outside of any rooms or the RoomList. They *can* be placed " +"inside the rooms, but to save confusion, they are normally better kept on " +"their own branch. There are no restrictions on the placement of ``IGNORE`` " +"objects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:55 +msgid "Object Lifetimes" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:57 +msgid "" +"It is important to note that the lifetime of ``STATIC`` and ``DYNAMIC`` " +"objects is tied to the lifetime of the level, between when you call " +"``rooms_convert()`` to activate the portal system, and calling " +"``rooms_clear()`` to unload the system. This is because quite a bit of pre-" +"processing goes on during the conversion phase in order to render them " +"efficiently." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:59 +msgid "" +"You should therefore not try to create or delete ``STATIC`` or ``DYNAMIC`` " +"objects while the portal system is active. Doing so will cause the system to " +"automatically unload because it is in an invalid state. You can however, " +"freely ``show()`` and ``hide()`` these objects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:61 +msgid "The sequence should be therefore:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:63 +msgid "Load your level." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:64 +msgid "Place any ``STATIC`` or ``DYNAMIC`` objects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:65 +msgid "" +"Then run ``rooms_convert()`` *after* all the ``STATIC`` and ``DYNAMIC`` " +"objects were added to the scene tree." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:67 +msgid "" +"Objects that are ``ROAMING``, ``GLOBAL`` or ``IGNORE`` can be freely created " +"and deleted as required." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:70 +msgid "Sprawling" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:72 +msgid "" +"Although users can usually ignore the internals of the portal system, they " +"should be aware that it is capable of handling objects that are so big they " +"end up in more than one room. Each object has a central room, but using the " +"AABB or geometry the system can detect when an object extends across a " +"portal into a neighbouring room (or several rooms). This is referred to as " +"**sprawling**." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:74 +msgid "" +"This means that if the corner of an object extends into a neighbouring room, " +"but the object's main room is not showing (e.g. a train where the end is in " +"a different room), the object will not be culled, and will still be shown. " +"The object will only be culled if it is not present in any of the rooms that " +"are visible." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:77 +msgid "Portal Margins" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:79 +msgid "" +"It is hard to place objects exactly at the edges of rooms, and if we chose " +"to sprawl objects to the adjacent room the moment a portal was crossed (even " +"by a very small amount), there would be an unnecessary amount of sprawling, " +"and objects would end up being rendered when not really required. To counter " +"this, portals have an adjustable ``margin`` over which an object can cross " +"without being considered in the next room. The margin is shown in the editor " +"gizmo as a red translucent area." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:81 +msgid "" +"You can set the margin globally in the RoomManager. You can also override " +"this margin value in any portal if you need to finetune things. As you edit " +"the margin values in the inspector, you should see the margins update in the " +"3D editor viewport." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:84 +msgid "Include in Bound" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:86 +msgid "" +"The support for objects that are larger than a single room has one side " +"effect. You may not want to include some objects in the calculation of the " +"automatic room bound. You can turn this on and off in the inspector for each " +"object. See **Cull Instance > Include In Bound**." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:88 +msgid "" +"While sprawling works great for large moving objects, it also gives you a " +"lot more leeway in level design. You can for instance create a large terrain " +"section and have it present in multiple rooms, without having to split up " +"the mesh." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:91 +msgid "Lighting" +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:93 +msgid "" +"In general lights are handled like any other visual instance. They can be " +"placed in rooms, and they will sprawl to affect neighbouring rooms, " +"following the dimensions and direction of the light. The exception to this " +"is :ref:`DirectionalLight`\\ s. DirectionalLights " +"have no source room as they affect *everywhere*. They should therefore not " +"be placed in a room. As DirectionalLights can be expensive, it is a good " +"idea to turn them off when inside, see the later :ref:" +"`doc_rooms_and_portals_roomgroups` section for details on how to do this." +msgstr "" + +#: ../../docs/tutorials/3d/portals/using_objects_in_rooms_and_portals.rst:95 +msgid "" +"Congratulations! You have now mastered the intermediate techniques required " +"to use rooms and portals. You can use these to make games already, but there " +"are many more features." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:2 +msgid "Advanced Room and Portal usage" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:5 +msgid "Gameplay callbacks" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:7 +msgid "" +"Although occlusion culling greatly reduces the number of objects that need " +"to be rendered, there are other costs to maintaining objects in a game " +"besides the final rendering. For instance, in Godot, animated objects will " +"still be animated whether they appear on screen or not. This can take up a " +"lot of processing power, especially for objects that use software skinning " +"(where skinning is calculated on the CPU)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:9 +msgid "Fear not, rooms and portals can solve these problems, and more." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:11 +msgid "" +"By building our system of rooms for our game level, not only do we have the " +"information needed for occlusion culling, we also have handily created the " +"information required to know which rooms are in the local \"gameplay area\" " +"of the player (or camera). If you think about it, in a lot of cases, there " +"is no need to do a lot of simulation on objects that have nothing to do with " +"gameplay." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:13 +msgid "" +"The gameplay area is not confined to just the objects you can see in front " +"of you. AI monsters behind you still need to attack you when your back is " +"turned! In Godot the gameplay area is defined as the *potentially visible " +"set* (PVS) of rooms, from the room you are currently within. That is, if " +"there is any part of a room that can possibly be viewed from any part of the " +"room you are in (even from a corner), it is considered within the PVS, and " +"hence the gameplay area." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:15 +msgid "" +"This works because if a monster is in an area that is completely out of view " +"for yourself or the monster, you are less likely to care what it is doing." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:18 +msgid "How does a monster know whether it is within the gameplay area?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:20 +msgid "" +"This problem is solved because the portal system contains a subsystem called " +"the **Gameplay Monitor** that can be turned on and off from the :ref:" +"`RoomManager`. When switched on, any roaming objects that " +"move inside or outside the gameplay area (whether by moving themselves, or " +"the camera moving) will receive callbacks to let them know of this change." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:22 +msgid "" +"You can choose to either receive these callbacks as ``signals``, or as " +"``notifications``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:24 +msgid "Notifications can be handled in GDScript or other scripting languages:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:35 +msgid "" +"Signals are sent just as any other signal. They can be attached to functions " +"using the editor inspector. The signals are called ``gameplay_entered`` and " +"``gameplay_exited``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:37 +msgid "" +"In fact, you don't just receive these callbacks for ``ROAMING`` objects. In " +"addition Rooms and RoomGroups (which can be used to form groups of rooms) " +"can also receive callbacks. For example, you can use this to trigger AI " +"behaviour when the player reaches certain points in a level." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:40 +msgid "VisbilityNotifiers / VisibilityEnablers" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:42 +msgid "" +"Gameplay callbacks have one more useful function. By default in Godot, " +"animation and physics are still processed regardless of whether an object is " +"within view. This can sap performance, especially when using software " +"skinning." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:44 +msgid "" +"The engine's solution to this problem is the :ref:" +"`VisibilityNotifier` node, and its slightly easier " +"to use variation, the :ref:`VisibilityEnabler` " +"node. VisibilityEnabler can be used to switch off animation and sleep " +"physics when an object is outside the view frustum. You do this by simply " +"placing a VisibilityEnabler node in your subscene (for e.g. a monster). It " +"will do the rest. Consult the :ref:" +"`VisibilityEnabler` documentation for full details." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:48 +msgid "" +"What if the VisibilityEnabler could turn off objects when they were " +"occlusion culled? Well it turns out VisibilityEnabler can. All you have to " +"do is enable the **Gameplay Monitor** in the RoomManager and the rest " +"happens automatically." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:53 +msgid "RoomGroups" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:55 +msgid "" +"A :ref:`RoomGroup` is a special node which allows you to " +"deal with a group of rooms at once, instead of having write code for them " +"individually. This is especially useful in conjunction with gameplay " +"callbacks. The most important use for RoomGroups is to delineate between " +"\"inside\" and \"outside\" areas." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:59 +msgid "" +"For instance, when outside you may wish to use a :ref:" +"`DirectionalLight` to represent the sun. When the " +"outside RoomGroup receives an ``enter gameplay`` callback, you can turn the " +"light on, and you can turn it off when the RoomGroup exits gameplay. With " +"the light off, performance will increase as there is no need to render it " +"indoors." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:61 +msgid "" +"This is an example of a simple RoomGroup script to turn on and off a " +"DirectionalLight. Note that you can also use signals for callbacks (the " +"choice is up to you):" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:65 +msgid "" +"You can apply the same technique for switching on and off weather effects, " +"skyboxes and much more." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:70 +msgid "Internal Rooms" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:72 +msgid "" +"There is one more trick that RoomGroups have up their sleeve. A very common " +"desire is to have a game level with a mixed outdoor and indoor environment. " +"We have already mentioned that rooms can be used to represent both rooms in " +"a building, and areas of landscape, such as a canyon." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:75 +msgid "What happens if you wish to have a house in a terrain 'room'?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:77 +msgid "" +"With the functionality described so far you *can* do it - you would need to " +"place portals around the exterior of the house though, forming needless " +"rooms above the house. This has been done in many games. But what if there " +"was a simpler way?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:79 +msgid "" +"It turns out there is a simpler way of handling this scenario. Godot " +"supports *rooms **within** rooms* (we will call them **\"internal rooms" +"\"**). That is, you can place a house within a terrain room, or even a " +"building, or set of buildings, and even have exit portals in different " +"terrain rooms!" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:81 +msgid "" +"To create internal rooms, you don't need to place a room within another room " +"in the scene tree - in fact you will get a warning if you try this. Instead, " +"create them as regular rooms. The internal rooms should be grouped together " +"with a RoomGroup as parent. If you look in the inspector for the RoomGroup, " +"there is a **Room Group Priority** which defaults to ``0``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:83 +msgid "" +"If you want a room or set of rooms to be internal, set the priority to a " +"higher value than the outer (enclosing) room, using the RoomGroup." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:85 +msgid "" +"The system uses the priority setting to give priority to the internal room " +"when deciding which room a camera or object is within. Higher priority " +"*always* wins. Everything else works in a mostly similar way." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:87 +msgid "The only differences:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:89 +msgid "" +"Portals between internal rooms and outer rooms should always *be placed in " +"the inner (internal) room*." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:90 +msgid "" +"Portals of internal rooms are not considered as part of the bound of outer " +"rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:91 +msgid "" +"``STATIC`` and ``DYNAMIC`` objects from outer rooms will not sprawl into " +"internal rooms. If you want objects to cross these portals, place them in " +"the internal room. This is to prevent large objects like terrain sections " +"sprawling into entire buildings, and rendering when not necessary." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:94 +msgid "Internal room example" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:96 +msgid "" +"The tent is a simple room inside a terrain room (which contains the ground, " +"the trees etc)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:100 +msgid "" +"To use internal rooms for buildings, it is usually a good idea to split the " +"*interior* mesh of the building from the *exterior*. The exterior can be " +"placed in the outer room (so it can be seen from outside, but not from the " +"inside), and the interior should be placed in the interior room (so it only " +"visible inside, or through the portal)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:104 +msgid "" +"This is perfect for improving performance in open world games. Often your " +"buildings can be scenes (including the rooms and portals) that can be " +"reused. When viewed from the outside, interiors will mostly be culled, and " +"when viewing from the inside other buildings and most of the outside will be " +"culled. The same goes for other players and objects that are inside and " +"outside the buildings." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:106 +msgid "" +"*Scene is 'Diorama Eco scene' by Odo, with slight changes for illustration " +"purposes.* `CC Attribution `_" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:109 +msgid "Internal room scenes" +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:111 +msgid "" +"Let us look in detail at another practical example for an open world. We " +"want to place houses (as internal rooms) on an island, but have each house " +"as a self-contained scene containing both the interior *and* the external " +"mesh of the house." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:115 +msgid "" +"We have created a Room node (which will become the internal room) into which " +"we have placed the interior meshes. We have also created a Portal with no " +"links (so autolinking will be used). The exterior mesh is *not* within the " +"room. It will be autoplaced, and we are intending for it to be placed within " +"the outer room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:117 +msgid "" +"However there is a problem. The naive autoplace algorithm will look at the " +"center of the exterior mesh, and attempt to place it *within* the internal " +"room. We want to avoid this somehow, as the idea of the exterior mesh is to " +"have something rendered from the outside, so it must be in the outer room " +"for everything to work." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:119 +msgid "" +"To get around this problem, there is a special setting to enable you to " +"express a preference for autoplacing in an outer room. Each object has an " +"**Autoplace Priority** setting. When set to ``0``, there is no preference " +"(the object will be placed in the highest priority room)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:121 +msgid "" +"However, if we set this autoplace priority to ``-1`` for example, the " +"autoplace will always choose a ``-1`` priority room (if one is present at " +"that location). So if we set the outer room priority to ``-1``, it will " +"always place our exterior into our \"outside\" room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:125 +msgid "" +"This gives us a helpful extra bit of control for these kinds of situations, " +"and makes the entire system much more flexible." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:127 +msgid "" +"As the default autoplace priority is ``0``, you can't effectively force " +"objects into RoomGroups with priority ``0``. However there are plenty of " +"priority values available so this should not be a problem in practice." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:129 +msgid "" +"The final scene looks something like this, with houses instanced wherever " +"you want them on a giant outer room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/advanced_room_and_portal_usage.rst:133 +msgid "" +"The house exteriors will be placed in the outer room, and therefore can " +"always be seen when looking from the outside. The interiors will only be " +"rendered when a view into the entry portals is visible." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:2 +msgid "Editing Rooms and Portals" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:5 +msgid "Example SceneTree" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:7 +msgid "Putting all the ideas together, here is an example scene tree:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:11 +msgid "" +"We have used a :ref:`RoomGroup` to denote an outside area." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:12 +msgid "" +"The :ref:`MeshInstance`\\ s inside the :ref:" +"`Room`\\ s are either ``STATIC`` or ``DYNAMIC``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:13 +msgid "" +"We have created a :ref:`Spatial` (I decided to call it " +"'Freeform', but you could use any name) under which to place ``STATIC`` and " +"``DYNAMIC`` objects that will be autoplaced in rooms (Freeform is inside the " +"``roomlist``, but *not* inside a room.)" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:15 +msgid "The player and the monsters are on branches *OUTSIDE* the ``roomlist``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:16 +msgid "" +"The player and monster meshes have portal mode ``ROAMING`` so they can be in " +"any room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:17 +msgid "The camera is outside the ``roomlist``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:22 +msgid "Creating room systems in Blender (or other modeling tools)" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:24 +msgid "" +"Although you can create your room system entirely within the editor, you can " +"also build rooms and portals within your modeling tool. There is one small " +"snag - modeling tools such as Blender have no knowledge of Room, RoomGroup " +"and Portal nodes. In order to work around this we use a series of naming " +"conventions. The first time Godot encounters these specially named nodes, it " +"will convert them into Rooms, RoomGroups and Portals." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:27 +msgid "Postfix convention" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:29 +msgid "``-room`` becomes a :ref:`Room`." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:30 +msgid "``-roomgroup`` becomes a :ref:`RoomGroup`." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:31 +msgid "``-portal`` becomes a :ref:`Portal`." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:32 +msgid "``-bound`` becomes a manual bound." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:34 +msgid "" +"Rooms and RoomGroups should be created as Empties within Blender. Any mesh " +"children of the ``-room`` Empty will thus be placed in the Room during " +"conversion in Godot." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:36 +#: ../../docs/development/cpp/object_class.rst:139 +msgid "For example:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:38 +msgid "``kitchen-room`` - create a Room called \"kitchen\"." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:39 +msgid "``outside-roomgroup`` - create a RoomGroup called \"outside\"." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:40 +msgid "``kitchen-portal`` - create a Portal leading to the \"kitchen\" Room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:45 +msgid "" +"Portals are different from Rooms. In Portals, we need to specify the " +"geometry of the Portal in our modelling tool, in addition to just the name. " +"To do this your \"portal-to-be\" should be created as a Mesh." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:47 +msgid "" +"Portal meshes have some restrictions to work properly. They must be convex, " +"and the polygon points should be in the same plane. The accuracy to the " +"plane does not have to be exact, as Godot will automatically average the " +"direction of the portal plane. Once converted to a :ref:" +"`Portal` node, the snapping to the portal plane is enforced, " +"and the vertices are specified (and editable) as 2D coordinates in the " +"inspector, rather than 3D points." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:49 +msgid "" +"The portal's naming is quite important. You can either name the portal ``-" +"portal`` which will attempt to autolink the Portal in Godot, or you can use " +"the name of the Room you wish to link the Portal to as a prefix." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:52 +msgid "Wildcard" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:54 +msgid "" +"In most cases, this can be done using a name such as ``kitchen-portal``. " +"However, there is one problem. Blender and Godot do not deal well when you " +"have multiple objects with the same name. What happens when we want more " +"than one Portal to lead to the kitchen?" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:56 +msgid "" +"The workaround is the use of a *wildcard* character, ``*``. When Godot reads " +"the wildcard, it will ignore anything placed after it in the name." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:58 +msgid "This means we can use the following portal names:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:60 +msgid "``kitchen*1-portal`` - creates a Portal leading to the \"kitchen\"." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:61 +msgid "" +"``kitchen*2-portal`` - also creates a Portal leading to the \"kitchen\"." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:62 +msgid "``kitchen*anything_you_want_here-portal`` - also works." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:64 +msgid "Wildcards work on all of the nodes which use these naming conventions." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:67 +msgid "Manual bounds" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:69 +msgid "" +"Manual bounds are a way of explicitly setting the convex hull for a room, " +"and are used if they are present as children of a room in the scene tree. " +"Aside from the postfix, the naming is unimportant. They should be meshes (i." +"e. MeshInstance in Godot). Bear in mind they will be converted to convex " +"hulls during the conversion process, so they don't have to be perfect." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:71 +msgid "" +"Once used during conversion, they will be converted to the ``IGNORE`` " +"**Portal Mode** and won't be shown. You can alternatively use **Generate " +"Points** within the editor to convert these to a set of points stored in the " +"room, and delete the original ``-bound`` MeshInstance." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:74 +msgid "Portal point editing" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:76 +msgid "" +"Portals are defined by a combination of the transform of the portal node, " +"and by a set of points which form the corners." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:78 +msgid "The default portal has 4 corners as shown in the inspector:" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:82 +msgid "" +"You can edit these points in the gizmo or inspector to make a better match " +"to the opening in your game level. It's generally better to keep the number " +"of points as low as possible for the efficiency of the system. For example, " +"it's better to risk rendering a little too much than to spend the time " +"culling objects at 20 different edges." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:87 +msgid "Room point editing" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:89 +msgid "" +"You also have the option to manually edit the points used to define the " +"convex hull of a room. These points are not present by default. You would " +"typically create them by pressing the **Generate Points** button in the " +"editor toolbar when a room is selected. This will transfer the auto bound " +"from the geometry (or manual ``-bound`` mesh) into the inspector. Once there " +"are points in the inspector, they will be used and override any other " +"method. So if you wish to revert your manual editing, delete all the room's " +"points." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:93 +msgid "" +"Manually editing points can be useful in some situations, especially where " +"the auto-bound doesn't *quite* get the right result you want. It is usually " +"a good idea to use a lot of **Simplification** in the inspector for the Room " +"before generating the points. Be aware though that by default, the " +"**Simplification** value will be inherited from the RoomManager." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:96 +msgid "RoomManager" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:99 +msgid "Show Debug" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:101 +msgid "" +"This can be used to control the amount of logging, especially the room " +"conversion logs. Debug will always be set to ``false`` on exported projects." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:104 +msgid "Debug Sprawl" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:106 +msgid "" +"This mode will only display meshes that are sprawling through portals from " +"the current camera room. Large statics that cross portals are usually the " +"ones you want to sprawl. Typical examples might be terrain mesh areas, or " +"large floor or ceiling meshes. You usually don't want things like door " +"frames to sprawl to the adjacent room - that is what fine tuning the " +"**Portal Margin** is for." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:109 +msgid "Merge Meshes" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:111 +msgid "" +"To keep drawcalls to a minimum, the system offers the option to " +"automatically merge similar ``STATIC`` meshes within a room (also known as " +"*static batching*). This can increase performance in many cases. The culling " +"accuracy is reduced, but as a room is a fairly logical unit for culling, " +"this trade off usually works in your favor." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:114 +msgid "Plane Simplification" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:116 +msgid "" +"In some cases, the convex hulls automatically generated for rooms may " +"contain a very large number of planes, particularly if you use curved " +"surfaces. This is not ideal because it slows down the system. This option " +"can optionally simplify hulls. The degree of simplification can be selected " +"by the user, between ``0`` (no simplification) and ``1`` (maximum " +"simplification). You can also override this value in individual rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:122 +msgid "Portal Active" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:124 +msgid "" +"Portals can be turned on and off at runtime. This is especially useful if " +"you have doors that can open and close." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:127 +msgid "Two Way" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:129 +msgid "" +"Portals can either be two-way or one-way. The default two-way portals are " +"quicker to set up in most circumstances, but one-way portals can be useful " +"in some cases. For example, you can use one-way portals to create windows " +"that can be seen out of, but not seen into. This can help performance when " +"viewing buildings from outdoors." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:132 +msgid "Particle Systems" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:134 +msgid "" +"Be aware that when placing ``STATIC`` particle systems, the AABB on " +"conversion may have zero size. This means the particle system may be " +"unexpectedly culled early. To prevent this, either set the particle system " +"``portal mode`` to ``DYNAMIC``, or alternatively, add an **Extra Cull " +"Margin** to the particle system in the Geometry Inspector." +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:137 +msgid "Multimeshes" +msgstr "" + +#: ../../docs/tutorials/3d/portals/editing_rooms_and_portals.rst:139 +msgid "" +"Note that multimeshes will be culled as a group, rather than individually. " +"You should therefore attempt to keep them localised to the same area " +"wherever possible." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:2 +msgid "Rooms and Portals example" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:4 +msgid "" +"Download this tutorial project: `Simple Portals Example `_ ." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:11 +msgid "" +"This tutorial will introduce you to building a \"Hello World\" room system " +"with two rooms, and a portal in between." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:14 +msgid "Step 1" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:18 +msgid "Create a new project." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:19 +msgid "" +"Add a :ref:`Spatial` as the scene root (on the screenshot, " +"it's called \"Root\")." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:20 +msgid "" +"Next add a :ref:`RoomManager` node. We will need this " +"later to process the room system." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:21 +msgid "" +"Next we need to start defining our rooms. We create all our rooms under " +"another Spatial we have called 'RoomList'." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:22 +msgid "Add a new :ref:`Room` node as a child of the roomlist." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:23 +msgid "We have named the room ``Kitchen``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:24 +msgid "" +"We will now create the geometry of our room. The names you give to the " +"geometry is up to you." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:25 +msgid "" +"Create a :ref:`MeshInstance` for the floor. Create a box " +"by adding a CubeMesh resource to the MeshInstance. Scale and position it to " +"form a floor." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:26 +msgid "" +"Create MeshInstances for the walls. Create more box meshes for this, then " +"scale and position them. Be sure to leave an opening on one side. You will " +"need to create two wall segments to do this on that side." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:29 +msgid "Step 2" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:33 +msgid "Now we need to create the other room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:34 +msgid "" +"You can do this simply by duplicating the first room (select the ``Kitchen`` " +"node, right click and choose **Duplicate**)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:35 +msgid "Rotate and position the second room so that the openings line up." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:36 +msgid "Rename the second room to ``Lounge``." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:39 +msgid "Step 3" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:43 +msgid "Next, we will add a portal between the two rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:44 +msgid "Create a new :ref:`Portal` in the kitchen." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:45 +msgid "" +"Scale and position the portal using the node ``Transform`` in the inspector, " +"so it fits within the opening between the two rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:46 +msgid "" +"The portal plane should face *outward* from the source room, i.e. towards " +"the lounge. This direction is indicated by the arrow in the editor gizmo, " +"and portal gizmo's color." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:49 +msgid "Step 4" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:53 +msgid "" +"To make things more exciting, we want to add a few more boxes to the rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:54 +msgid "" +"Placing these boxes as children or grandchildren of the room nodes " +"explicitly tells the system which room the objects should be in. However, we " +"can also create these objects *outside* the rooms. Provided they are in the " +"RoomList branch, the system will attempt to automatically place them in the " +"correct room at runtime." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:55 +msgid "" +"On the screenshot, the boxes were places as children of a Spatial I have " +"called ``Freeform`` to keep things tidy." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:56 +msgid "" +"Boxes also have a green SpatialMaterial assigned to them to make them stand " +"out more from the rest of the room." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:57 +msgid "" +"Let's also create an :ref:`OmniLight` so it will be " +"autoplaced in one of the rooms." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:60 +msgid "Step 5" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:64 +msgid "" +"Next comes a crucial stage. We must let the RoomManager know where the rooms " +"are!" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:65 +msgid "" +"Select the RoomManager and look in the Inspector window in the **Paths** " +"section." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:66 +msgid "" +"You need to assign the **Room List** to point to the RoomList node we " +"created earlier (which is the parent of all the rooms)." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:69 +msgid "Step 6" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:73 +msgid "" +"Make sure you have saved your project before this next step. It is always a " +"good idea to save and make a backup before converting." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:74 +msgid "" +"Select the RoomManager, and you will see a button in the toolbar at the top " +"of the 3d editor viewport called **Convert Rooms**. Press this button." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:75 +msgid "" +"If all goes well, the RoomManager will have created the runtime data (the " +"*room graph*) to perform occlusion culling at runtime." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:76 +msgid "" +"You can see a log of the conversion process in the output window. This is " +"helpful for finding problems." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:77 +msgid "" +"If you now move the editor camera inside the rooms, you should see the " +"meshes in the opposite room being culled depending on what you can see " +"through the portal." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:82 +msgid "" +"This concludes this simple tutorial. Don't be afraid to experiment with the " +"new room system you have created." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:85 +msgid "Some things to try" +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:87 +msgid "" +"Create different types of geometry. CSG nodes, Particle systems, and " +"Multimeshes are all supported by the portal system." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:88 +msgid "" +"Try creating a Camera and adding it to the scene. If you run the scene you " +"will notice that the portal culling is not active. This is because the " +"``room graph`` must be created each time you load a level, by converting the " +"rooms. Instead of using a button in the editor, in real games you call a " +"function in the RoomManager to convert the level, called " +"``rooms_convert()``. Try this out with a script, perhaps running within a " +"``_ready()`` function." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:89 +msgid "" +"The geometry you created so far is all ``STATIC`` (non-moving). If you look " +"in the inspector for geometry nodes, you will see they derive from " +"``CullInstance``. Here you can set the **Portal Mode** for objects in the " +"portal system. This determines how the node is processed." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:90 +msgid "" +"If you now write a script to move one of your objects within a room and view " +"it through a Camera as the scene runs, you may notice that the object gets " +"culled incorrectly. This is because ``STATIC`` objects are assumed not to " +"move in the system. If you instead change the object to ``DYNAMIC``, it " +"should now update the culling correctly." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:91 +msgid "" +"There are several ``portal_modes``, these are described in the main " +"documentation." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:92 +msgid "" +"Try turning the portal on and off at runtime from your script. You can call " +"``set_portal_active()`` to open and close the portal." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:93 +msgid "" +"If you select the portal, you should see 4 handles appear. Try dragging the " +"portal points with the mouse, and see how it affects the objects that are " +"culled." +msgstr "" + +#: ../../docs/tutorials/3d/portals/rooms_and_portals_example.rst:94 +msgid "" +"If you select a room and click the **Generate Points** button in the " +"toolbar, it will store the points of the room hull in the room inspector. " +"You can now edit these with the gizmo handles." +msgstr "" + #: ../../docs/tutorials/audio/audio_buses.rst:4 #: ../../docs/tutorials/audio/audio_buses.rst:48 msgid "Audio buses" @@ -48627,7 +50685,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/math/vector_math.rst:251 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 msgid "Dot product" msgstr "" @@ -48689,7 +50747,7 @@ msgid "In code it would look like this:" msgstr "" #: ../../docs/tutorials/math/vector_math.rst:324 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 msgid "Cross product" msgstr "" @@ -49759,29 +51817,29 @@ msgid "" "described as:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:19 +#: ../../docs/tutorials/math/interpolation.rst:18 msgid "And often simplified to:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:26 +#: ../../docs/tutorials/math/interpolation.rst:24 msgid "" "The name of this type of interpolation, which transforms a value into " "another at *constant speed* is *\"linear\"*. So, when you hear about *Linear " "Interpolation*, you know they are referring to this simple formula." msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:28 +#: ../../docs/tutorials/math/interpolation.rst:26 msgid "" "There are other types of interpolations, which will not be covered here. A " "recommended read afterwards is the :ref:`Bezier ` " "page." msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:31 +#: ../../docs/tutorials/math/interpolation.rst:29 msgid "Vector interpolation" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:33 +#: ../../docs/tutorials/math/interpolation.rst:31 msgid "" "Vector types (:ref:`Vector2 ` and :ref:`Vector3 " "`) can also be interpolated, they come with handy functions " @@ -49790,7 +51848,7 @@ msgid "" "linear_interpolate() `." msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:36 +#: ../../docs/tutorials/math/interpolation.rst:34 msgid "" "For cubic interpolation, there are also :ref:`Vector2.cubic_interpolate() " "` and :ref:`Vector3." @@ -49798,20 +51856,20 @@ msgid "" "ref:`Bezier ` style interpolation." msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:38 +#: ../../docs/tutorials/math/interpolation.rst:36 msgid "" "Here is simple pseudo-code for going from point A to B using interpolation:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:48 +#: ../../docs/tutorials/math/interpolation.rst:63 msgid "It will produce the following motion:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:53 +#: ../../docs/tutorials/math/interpolation.rst:68 msgid "Transform interpolation" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:55 +#: ../../docs/tutorials/math/interpolation.rst:70 msgid "" "It is also possible to interpolate whole transforms (make sure they have " "either uniform scale or, at least, the same non-uniform scale). For this, " @@ -49819,34 +51877,34 @@ msgid "" "` can be used." msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:58 +#: ../../docs/tutorials/math/interpolation.rst:73 msgid "" "Here is an example of transforming a monkey from Position1 to Position2:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:62 +#: ../../docs/tutorials/math/interpolation.rst:77 msgid "Using the following pseudocode:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:74 +#: ../../docs/tutorials/math/interpolation.rst:104 msgid "And again, it will produce the following motion:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:80 +#: ../../docs/tutorials/math/interpolation.rst:110 msgid "Smoothing motion" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:82 +#: ../../docs/tutorials/math/interpolation.rst:112 msgid "" "Interpolation can be used to smooth movement, rotation, etc. Here is an " "example of a circle following the mouse using smoothed motion:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:94 +#: ../../docs/tutorials/math/interpolation.rst:137 msgid "Here is how it looks:" msgstr "" -#: ../../docs/tutorials/math/interpolation.rst:98 +#: ../../docs/tutorials/math/interpolation.rst:141 msgid "" "This useful for smoothing camera movement, allies following you (ensuring " "they stay within a certain range), and many other common game patterns." @@ -49893,135 +51951,135 @@ msgid "" "segments as we change the value of ``t`` from 0 to 1." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:37 +#: ../../docs/tutorials/math/beziers_and_curves.rst:45 msgid "" "We then interpolate ``q0`` and ``q1`` to obtain a single point ``r`` that " "moves along a curve." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:46 +#: ../../docs/tutorials/math/beziers_and_curves.rst:59 msgid "This type of is called a *Quadratic Bezier* curve." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:50 -#: ../../docs/tutorials/math/beziers_and_curves.rst:114 +#: ../../docs/tutorials/math/beziers_and_curves.rst:63 +#: ../../docs/tutorials/math/beziers_and_curves.rst:165 msgid "*(Image credit: Wikipedia)*" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:53 +#: ../../docs/tutorials/math/beziers_and_curves.rst:66 msgid "Cubic Bezier" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:55 +#: ../../docs/tutorials/math/beziers_and_curves.rst:68 msgid "" "Building upon the previous example, we can get more control by interpolating " "between four points." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:60 +#: ../../docs/tutorials/math/beziers_and_curves.rst:73 msgid "" "We first use a function with four parameters to take four points as an " "input, ``p0``, ``p1``, ``p2`` and ``p3``:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:68 +#: ../../docs/tutorials/math/beziers_and_curves.rst:88 msgid "" "We apply a linear interpolation to each couple of points to reduce them to " "three:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:78 +#: ../../docs/tutorials/math/beziers_and_curves.rst:104 msgid "We then take our three points and reduce them to two:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:86 +#: ../../docs/tutorials/math/beziers_and_curves.rst:117 msgid "And to one:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:94 +#: ../../docs/tutorials/math/beziers_and_curves.rst:130 msgid "Here is the full function:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:110 +#: ../../docs/tutorials/math/beziers_and_curves.rst:161 msgid "" "The result will be a smooth curve interpolating between all four points:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:116 +#: ../../docs/tutorials/math/beziers_and_curves.rst:167 msgid "" "Cubic Bezier interpolation works the same in 3D, just use ``Vector3`` " "instead of ``Vector2``." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:120 +#: ../../docs/tutorials/math/beziers_and_curves.rst:171 msgid "Adding control points" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:122 +#: ../../docs/tutorials/math/beziers_and_curves.rst:173 msgid "" "Building upon Cubic Bezier, we can change the way two of the points work to " "control the shape of our curve freely. Instead of having ``p0``, ``p1``, " "``p2`` and ``p3``, we will store them as:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:126 +#: ../../docs/tutorials/math/beziers_and_curves.rst:177 msgid "``point0 = p0``: Is the first point, the source" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:127 +#: ../../docs/tutorials/math/beziers_and_curves.rst:178 msgid "``control0 = p1 - p0``: Is a vector relative to the first control point" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:128 +#: ../../docs/tutorials/math/beziers_and_curves.rst:179 msgid "" "``control1 = p3 - p2``: Is a vector relative to the second control point" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:129 +#: ../../docs/tutorials/math/beziers_and_curves.rst:180 msgid "``point1 = p3``: Is the second point, the destination" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:131 +#: ../../docs/tutorials/math/beziers_and_curves.rst:182 msgid "" "This way, we have two points and two control points which are relative " "vectors to the respective points. If you've used graphics or animation " "software before, this might look familiar:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:137 +#: ../../docs/tutorials/math/beziers_and_curves.rst:188 msgid "" "This is how graphics software presents Bezier curves to the users, and how " "they work and look in Godot." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:141 +#: ../../docs/tutorials/math/beziers_and_curves.rst:192 msgid "Curve2D, Curve3D, Path and Path2D" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:143 +#: ../../docs/tutorials/math/beziers_and_curves.rst:194 msgid "" "There are two objects that contain curves: :ref:`Curve3D ` " "and :ref:`Curve2D ` (for 3D and 2D respectively)." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:145 +#: ../../docs/tutorials/math/beziers_and_curves.rst:196 msgid "" "They can contain several points, allowing for longer paths. It is also " "possible to set them to nodes: :ref:`Path ` and :ref:`Path2D " "` (also for 3D and 2D respectively):" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:149 +#: ../../docs/tutorials/math/beziers_and_curves.rst:200 msgid "" "Using them, however, may not be completely obvious, so following is a " "description of the most common use cases for Bezier curves." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:152 +#: ../../docs/tutorials/math/beziers_and_curves.rst:203 msgid "Evaluating" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:154 +#: ../../docs/tutorials/math/beziers_and_curves.rst:205 msgid "" "Just evaluating them may be an option, but in most cases it's not very " "useful. The big drawback with Bezier curves is that if you traverse them at " @@ -50031,23 +52089,18 @@ msgid "" "a mathematically simple way to traverse the curve at constant speed." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:156 +#: ../../docs/tutorials/math/beziers_and_curves.rst:207 msgid "Let's do a simple example with the following pseudocode:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:170 +#: ../../docs/tutorials/math/beziers_and_curves.rst:230 msgid "" "As you can see, the speed (in pixels per second) of the circle varies, even " "though ``t`` is increased at constant speed. This makes beziers difficult to " "use for anything practical out of the box." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:173 -#: ../../docs/tutorials/gui/custom_gui_controls.rst:17 -msgid "Drawing" -msgstr "" - -#: ../../docs/tutorials/math/beziers_and_curves.rst:175 +#: ../../docs/tutorials/math/beziers_and_curves.rst:235 msgid "" "Drawing beziers (or objects based on the curve) is a very common use case, " "but it's also not easy. For pretty much any case, Bezier curves need to be " @@ -50055,27 +52108,27 @@ msgid "" "without creating a very high amount of them." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:177 +#: ../../docs/tutorials/math/beziers_and_curves.rst:237 msgid "" "The reason is that some sections of a curve (specifically, corners) may " "require considerable amounts of points, while other sections may not:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:181 +#: ../../docs/tutorials/math/beziers_and_curves.rst:241 msgid "" "Additionally, if both control points were ``0, 0`` (remember they are " "relative vectors), the Bezier curve would just be a straight line (so " "drawing a high amount of points would be wasteful)." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:183 +#: ../../docs/tutorials/math/beziers_and_curves.rst:243 msgid "" "Before drawing Bezier curves, *tessellation* is required. This is often done " "with a recursive or divide and conquer function that splits the curve until " "the curvature amount becomes less than a certain threshold." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:185 +#: ../../docs/tutorials/math/beziers_and_curves.rst:245 msgid "" "The *Curve* classes provide this via the :ref:`Curve2D.tessellate() " "` function (which receives optional " @@ -50083,17 +52136,17 @@ msgid "" "drawing something based on a curve is easier." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:189 +#: ../../docs/tutorials/math/beziers_and_curves.rst:249 msgid "Traversal" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:191 +#: ../../docs/tutorials/math/beziers_and_curves.rst:251 msgid "" "The last common use case for the curves is to traverse them. Because of what " "was mentioned before regarding constant speed, this is also difficult." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:193 +#: ../../docs/tutorials/math/beziers_and_curves.rst:253 msgid "" "To make this easier, the curves need to be *baked* into equidistant points. " "This way, they can be approximated with regular interpolation (which can be " @@ -50104,13 +52157,13 @@ msgid "" "to either of them will bake the curve internally." msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:196 +#: ../../docs/tutorials/math/beziers_and_curves.rst:256 msgid "" "Traversal at constant speed, then, can be done with the following pseudo-" "code:" msgstr "" -#: ../../docs/tutorials/math/beziers_and_curves.rst:207 +#: ../../docs/tutorials/math/beziers_and_curves.rst:277 msgid "And the output will, then, move at constant speed:" msgstr "" @@ -50184,41 +52237,41 @@ msgstr "" #: ../../docs/tutorials/math/random_number_generation.rst:45 msgid "" -"Putting it in your main scene script's ``_ready()`` method is a good choice::" +"Putting it in your main scene script's ``_ready()`` method is a good choice:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:50 +#: ../../docs/tutorials/math/random_number_generation.rst:60 msgid "" "You can also set a fixed random seed instead using :ref:`seed() " "`. Doing so will give you *deterministic* " -"results across runs::" +"results across runs:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:59 +#: ../../docs/tutorials/math/random_number_generation.rst:80 msgid "" "When using the RandomNumberGenerator class, you should call ``randomize()`` " -"on the instance since it has its own seed::" +"on the instance since it has its own seed:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:66 +#: ../../docs/tutorials/math/random_number_generation.rst:95 msgid "Getting a random number" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:68 +#: ../../docs/tutorials/math/random_number_generation.rst:97 msgid "" "Let's look at some of the most commonly used functions and methods to " "generate random numbers in Godot." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:71 +#: ../../docs/tutorials/math/random_number_generation.rst:100 msgid "" "The function :ref:`randi() ` returns a random " "number between 0 and 2^32-1. Since the maximum value is huge, you most " "likely want to use the modulo operator (``%``) to bound the result between 0 " -"and the denominator::" +"and the denominator:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:82 +#: ../../docs/tutorials/math/random_number_generation.rst:122 msgid "" ":ref:`randf() ` returns a random floating-" "point number between 0 and 1. This is useful to implement a :ref:" @@ -50226,46 +52279,46 @@ msgid "" "other things." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:87 +#: ../../docs/tutorials/math/random_number_generation.rst:127 msgid "" ":ref:`randfn() ` returns a random " "floating-point number following a `normal distribution `__. This means the returned value is more " "likely to be around the mean (0.0 by default), varying by the deviation (1.0 " -"by default)::" +"by default):" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:97 +#: ../../docs/tutorials/math/random_number_generation.rst:148 msgid "" ":ref:`rand_range() ` takes two arguments " "``from`` and ``to``, and returns a random floating-point number between " -"``from`` and ``to``::" +"``from`` and ``to``:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:104 +#: ../../docs/tutorials/math/random_number_generation.rst:163 msgid "" ":ref:`RandomNumberGenerator.randi_range() " "` takes two arguments " "``from`` and ``to``, and returns a random integer between ``from`` and " -"``to``::" +"``to``:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:114 +#: ../../docs/tutorials/math/random_number_generation.rst:182 msgid "Get a random array element" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:116 +#: ../../docs/tutorials/math/random_number_generation.rst:184 msgid "" -"We can use random integer generation to get a random element from an array::" +"We can use random integer generation to get a random element from an array:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:136 +#: ../../docs/tutorials/math/random_number_generation.rst:228 msgid "" "To prevent the same fruit from being picked more than once in a row, we can " -"add more logic to this method::" +"add more logic to this method:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:167 +#: ../../docs/tutorials/math/random_number_generation.rst:293 msgid "" "This approach can be useful to make random number generation feel less " "repetitive. Still, it doesn't prevent results from \"ping-ponging\" between " @@ -50273,30 +52326,30 @@ msgid "" "` pattern instead." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:173 +#: ../../docs/tutorials/math/random_number_generation.rst:299 msgid "Get a random dictionary value" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:175 -msgid "We can apply similar logic from arrays to dictionaries as well::" +#: ../../docs/tutorials/math/random_number_generation.rst:301 +msgid "We can apply similar logic from arrays to dictionaries as well:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:201 +#: ../../docs/tutorials/math/random_number_generation.rst:329 msgid "Weighted random probability" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:203 +#: ../../docs/tutorials/math/random_number_generation.rst:331 msgid "" "The :ref:`randf() ` method returns a floating-" "point number between 0.0 and 1.0. We can use this to create a \"weighted\" " -"probability where different outcomes have different likelihoods::" +"probability where different outcomes have different likelihoods:" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:230 +#: ../../docs/tutorials/math/random_number_generation.rst:394 msgid "\"Better\" randomness using shuffle bags" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:232 +#: ../../docs/tutorials/math/random_number_generation.rst:396 msgid "" "Taking the same example as above, we would like to pick fruits at random. " "However, relying on random number generation every time a fruit is selected " @@ -50304,7 +52357,7 @@ msgid "" "unlucky), they could get the same fruit three or more times in a row." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:237 +#: ../../docs/tutorials/math/random_number_generation.rst:401 msgid "" "You can accomplish this using the *shuffle bag* pattern. It works by " "removing an element from the array after choosing it. After multiple " @@ -50312,7 +52365,7 @@ msgid "" "to its default value::" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:267 +#: ../../docs/tutorials/math/random_number_generation.rst:431 msgid "" "When running the above code, there is a chance to get the same fruit twice " "in a row. Once we picked a fruit, it will no longer be a possible return " @@ -50321,23 +52374,23 @@ msgid "" "but only once." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:273 +#: ../../docs/tutorials/math/random_number_generation.rst:437 msgid "Random noise" msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:275 +#: ../../docs/tutorials/math/random_number_generation.rst:439 msgid "" "The random number generation shown above can show its limits when you need a " "value that *slowly* changes depending on the input. The input can be a " "position, time, or anything else." msgstr "" -#: ../../docs/tutorials/math/random_number_generation.rst:279 +#: ../../docs/tutorials/math/random_number_generation.rst:443 msgid "" "To achieve this, you can use random *noise* functions. Noise functions are " "especially popular in procedural generation to generate realistic-looking " "terrain. Godot provides :ref:`class_opensimplexnoise` for this, which " -"supports 1D, 2D, 3D, and 4D noise. Here's an example with 1D noise::" +"supports 1D, 2D, 3D, and 4D noise. Here's an example with 1D noise:" msgstr "" #: ../../docs/tutorials/animation/introduction.rst:4 @@ -52239,7 +54292,7 @@ msgid "" "However, it is cleaner and more flexible to use the provided :ref:`InputMap " "` feature, which allows you to define input actions and " "assign them different keys. This way, you can define multiple keys for the " -"same action (e.g. they keyboard escape key and the start button on a " +"same action (e.g. the keyboard escape key and the start button on a " "gamepad). You can then more easily change this mapping in the project " "settings without updating your code, and even build a key mapping feature on " "top of it to allow your game to change the key mapping at runtime!" @@ -52588,7 +54641,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/inputs/input_examples.rst:29 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:453 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:507 msgid "Examples:" msgstr "" @@ -57013,362 +59066,91 @@ msgstr "" msgid "Zulu (South Africa)" msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:4 -msgid "GUI skinning" +#: ../../docs/tutorials/gui/index.rst:4 +msgid "User Interface (UI)" msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:7 -msgid "Oh, beautiful GUI!" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:9 +#: ../../docs/tutorials/gui/index.rst:6 msgid "" -"This tutorial is about advanced skinning of a user interface. Most games " -"generally don't need this, as they end up just relying on :ref:`Label " -"`, :ref:`TextureRect `, :ref:`TextureButton " -"` and :ref:`TextureProgress `." +"In this section of the tutorial we explain the basics of creating a " +"graphical user interface (GUI) in Godot." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:15 +#: ../../docs/tutorials/gui/index.rst:10 +msgid "UI building blocks" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:12 msgid "" -"However, many types of games often need complex user interfaces, like MMOs, " -"traditional RPGs, Simulators, Strategy, etc. These kinds of interface are " -"also common in some games that include editors to create content, or " -"interfaces for network connectivity." +"Like everything else in Godot the user interface is built using nodes, " +"specifically :ref:`Control ` nodes. There are many different " +"types of controls which are useful for creating specific types of the GUI. " +"For simplicity we can separate them into two groups: content and layout." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:20 +#: ../../docs/tutorials/gui/index.rst:17 +msgid "Typical content controls include:" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:19 +msgid ":ref:`Buttons `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:20 +msgid ":ref:`Labels `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:21 +msgid ":ref:`LineEdits ` and :ref:`TextEdits `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:23 +msgid "Typical layout controls include:" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:25 +msgid ":ref:`BoxContainers `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:26 +msgid ":ref:`MarginContainers `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:27 +msgid ":ref:`ScrollContainers `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:28 +msgid ":ref:`TabContainers `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:29 +msgid ":ref:`Popups `" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:31 +msgid "The following pages explain the basics of using such controls." +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:44 +msgid "GUI skinning and themes" +msgstr "" + +#: ../../docs/tutorials/gui/index.rst:46 msgid "" -"Godot's user interface uses these kinds of control with the default theme, " -"but they can be skinned to resemble pretty much any kind of user interface." +"Godot features an in-depth skinning/theming system for control nodes. The " +"pages in this section explain the benefits of that system and how to set it " +"up in your projects." msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:25 -msgid "Theme" +#: ../../docs/tutorials/gui/index.rst:57 +msgid "Control node tutorials" msgstr "" -#: ../../docs/tutorials/gui/gui_skinning.rst:27 +#: ../../docs/tutorials/gui/index.rst:59 msgid "" -"The GUI is skinned through the :ref:`Theme ` resource. Theme " -"contains all the information required to change the entire visual styling of " -"all controls. Theme options are named, so it's not obvious which name " -"changes what (especially from code), but several tools are provided. The " -"ultimate place to look at what each theme option is for each control, which " -"will always be more up to date than any documentation, is the file `scene/" -"resources/default_theme/default_theme.cpp `__. The " -"rest of this document will explain the different tools used to customize the " -"theme." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:38 -msgid "" -"A Theme can be applied to any control in the scene. As a result, all " -"children and grand-children controls will use that same theme, too (unless " -"another theme is specified further down the tree). If a value is not found " -"in a theme, it will be searched in themes higher up in the hierarchy, " -"towards the root. If nothing was found, the default theme is used. This " -"system allows for flexible overriding of themes in complex user interfaces." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:48 -msgid "" -"Don't use the custom theme option in the Project Settings, as there are " -"known bugs with theme propagation. Instead, apply your theme to the root " -"Control node's Theme property. It will propagate to instanced scenes " -"automatically. To get correct theming in the editor for instanced scenes, " -"you can apply the theme resource to the instanced scene's root node as well." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:55 -msgid "Theme options" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:57 -msgid "Each kind of option in a theme can be:" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:59 -msgid "" -"**An integer constant**: A single numerical constant. Generally used to " -"define spacing between components or alignment." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:61 -msgid "" -"**A Color**: A single color, with or without transparency. Colors are " -"usually applied to fonts and icons." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:63 -msgid "" -"**A Texture**: A single image. Textures are not often used, but when they " -"are, they represent handles to pick or icons in a complex control (such as a " -"file dialog)." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:66 -msgid "" -"**A Font**: Every control that uses text can be assigned the fonts used to " -"draw strings." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:68 -msgid "" -"**A StyleBox**: Stylebox is a resource that defines how to draw a panel in " -"varying sizes (more information on them later)." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:71 -msgid "Every option is associated with:" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:73 -msgid "A name (the name of the option)" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:74 -msgid "A Control (the name of the control)" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:76 -msgid "An example usage:" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:95 -msgid "" -"In the example above, a new theme is created. The \"font_color\" option is " -"changed and then applied to a label. Therefore, the label's text (and all " -"children and grandchildren labels) will be red." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:99 -msgid "" -"It is possible to override those options without using the theme directly, " -"and only for a specific control, by using the override API in :ref:`Control." -"add_color_override() `:" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:114 -msgid "" -"In the inline help of Godot (in the Script tab), you can check which theme " -"options are overridable, or check the :ref:`Control ` class " -"reference." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:118 -msgid "Customizing a control" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:120 -msgid "" -"If only a few controls need to be skinned, it is often not necessary to " -"create a new theme. Controls offer their theme options as special kinds of " -"properties. If checked, overriding will take place:" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:126 -msgid "" -"As can be seen in the image above, theme options have little check boxes. If " -"checked, they can be used to override the value of the theme just for that " -"control." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:131 -msgid "Creating a theme" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:133 -msgid "" -"The simplest way to create a theme is to edit a theme resource. Create a " -"Theme from the resource menu; the editor will appear immediately. After " -"that, save it (for example, with the name mytheme.theme):" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:139 -msgid "" -"This will create an empty theme that can later be loaded and assigned to " -"controls." -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:143 -msgid "Example: theming a button" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:145 -msgid "" -"Download these assets (:download:`skin_assets.zip `) " -"and add them to your project. Open the theme editor, click on \"Edit Theme\" " -"and select \"Add Class Items\":" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:151 -msgid "" -"A menu will appear prompting the type of control to create. Select \"Button" -"\":" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:156 -msgid "" -"Immediately, all button theme options will appear in the property editor, " -"where they can be edited:" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:161 -msgid "" -"From ``Styles``, open the \"Normal\" drop-down menu next to where it " -"probably says \"null\" and create a \"New StyleBoxTexture\", then edit it. A " -"texture stylebox contains a texture and the size of the margins that will " -"not stretch when the texture is stretched. This is called nine-patch or " -"\"3x3\" stretching:" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:169 -msgid "" -"Repeat the steps and add the other assets. There is no hover or disabled " -"image in the example files, so use the same stylebox as in normal. Set the " -"supplied font as the button font and change the font color to black. Soon, " -"your button will look different and retro:" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:176 -msgid "" -"Save this theme to the .theme file. Go to the 2D editor and create a few " -"buttons:" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:181 -msgid "" -"Now, go to the root node of the scene and locate the \"theme\" property, " -"replace it with the theme that was just created. It should look like this:" -msgstr "" - -#: ../../docs/tutorials/gui/gui_skinning.rst:186 -msgid "Congratulations! You have created a reusable GUI Theme!" -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:4 -msgid "Custom GUI controls" -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:7 -msgid "So many controls..." -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:9 -msgid "" -"Yet there are never enough. Creating your own custom controls that act just " -"the way you want them to is an obsession of almost every GUI programmer. " -"Godot provides plenty of them, but they may not work exactly the way you " -"want. Before contacting the developers with a pull-request to support " -"diagonal scrollbars, at least it will be good to know how to create these " -"controls easily from script." -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:19 -msgid "" -"For drawing, it is recommended to check the :ref:`doc_custom_drawing_in_2d` " -"tutorial. The same applies. Some functions are worth mentioning due to their " -"usefulness when drawing, so they will be detailed next:" -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:24 -msgid "Checking control size" -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:26 -msgid "" -"Unlike 2D nodes, \"size\" is important with controls, as it helps to " -"organize them in proper layouts. For this, the :ref:`Control.rect_size " -"` property is provided. Checking it during " -"``_draw()`` is vital to ensure everything is kept in-bounds." -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:33 -msgid "Checking focus" -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:35 -msgid "" -"Some controls (such as buttons or text editors) might provide input focus " -"for keyboard or joypad input. Examples of this are entering text or pressing " -"a button. This is controlled with the :ref:`Control.focus_mode " -"` property. When drawing, and if the " -"control supports input focus, it is always desired to show some sort of " -"indicator (highlight, box, etc.) to indicate that this is the currently " -"focused control. To check for this status, the :ref:`Control.has_focus() " -"` method exists. Example" -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:69 -msgid "Sizing" -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:71 -msgid "" -"As mentioned before, size is important to controls. This allows them to lay " -"out properly, when set into grids, containers, or anchored. Controls, most " -"of the time, provide a *minimum size* to help properly lay them out. For " -"example, if controls are placed vertically on top of each other using a :ref:" -"`VBoxContainer `, the minimum size will make sure your " -"custom control is not squished by the other controls in the container." -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:79 -msgid "" -"To provide this callback, just override :ref:`Control.get_minimum_size() " -"`, for example:" -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:96 -msgid "Alternatively, set it using a function:" -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:114 -msgid "" -"Controls provide a few helpers to make managing input events much easier " -"than regular nodes." -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:120 -msgid "" -"There are a few tutorials about input before this one, but it's worth " -"mentioning that controls have a special input method that only works when:" -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:124 -msgid "The mouse pointer is over the control." -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:125 -msgid "" -"The button was pressed over this control (control always captures input " -"until button is released)" -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:127 -msgid "" -"Control provides keyboard/joypad focus via :ref:`Control.focus_mode " -"`." -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:130 -msgid "" -"This function is :ref:`Control._gui_input() " -"`. Simply override it in your control. No " -"processing needs to be set." -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:153 -msgid "" -"For more information about events themselves, check the :ref:" -"`doc_inputevent` tutorial." -msgstr "" - -#: ../../docs/tutorials/gui/custom_gui_controls.rst:159 -msgid "" -"Controls also have many useful notifications for which no dedicated callback " -"exists, but which can be checked with the _notification callback:" +"The following articles cover specific details of using particular control " +"nodes." msgstr "" #: ../../docs/tutorials/gui/size_and_anchors.rst:4 @@ -57715,6 +59497,775 @@ msgid "" "example of a simple container that fits children to its rect size:" msgstr "" +#: ../../docs/tutorials/gui/custom_gui_controls.rst:4 +msgid "Custom GUI controls" +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:7 +msgid "So many controls..." +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:9 +msgid "" +"Yet there are never enough. Creating your own custom controls that act just " +"the way you want them to is an obsession of almost every GUI programmer. " +"Godot provides plenty of them, but they may not work exactly the way you " +"want. Before contacting the developers with a pull-request to support " +"diagonal scrollbars, at least it will be good to know how to create these " +"controls easily from script." +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:19 +msgid "" +"For drawing, it is recommended to check the :ref:`doc_custom_drawing_in_2d` " +"tutorial. The same applies. Some functions are worth mentioning due to their " +"usefulness when drawing, so they will be detailed next:" +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:24 +msgid "Checking control size" +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:26 +msgid "" +"Unlike 2D nodes, \"size\" is important with controls, as it helps to " +"organize them in proper layouts. For this, the :ref:`Control.rect_size " +"` property is provided. Checking it during " +"``_draw()`` is vital to ensure everything is kept in-bounds." +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:33 +msgid "Checking focus" +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:35 +msgid "" +"Some controls (such as buttons or text editors) might provide input focus " +"for keyboard or joypad input. Examples of this are entering text or pressing " +"a button. This is controlled with the :ref:`Control.focus_mode " +"` property. When drawing, and if the " +"control supports input focus, it is always desired to show some sort of " +"indicator (highlight, box, etc.) to indicate that this is the currently " +"focused control. To check for this status, the :ref:`Control.has_focus() " +"` method exists. Example" +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:69 +msgid "Sizing" +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:71 +msgid "" +"As mentioned before, size is important to controls. This allows them to lay " +"out properly, when set into grids, containers, or anchored. Controls, most " +"of the time, provide a *minimum size* to help properly lay them out. For " +"example, if controls are placed vertically on top of each other using a :ref:" +"`VBoxContainer `, the minimum size will make sure your " +"custom control is not squished by the other controls in the container." +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:79 +msgid "" +"To provide this callback, just override :ref:`Control.get_minimum_size() " +"`, for example:" +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:96 +msgid "Alternatively, set it using a function:" +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:114 +msgid "" +"Controls provide a few helpers to make managing input events much easier " +"than regular nodes." +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:120 +msgid "" +"There are a few tutorials about input before this one, but it's worth " +"mentioning that controls have a special input method that only works when:" +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:124 +msgid "The mouse pointer is over the control." +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:125 +msgid "" +"The button was pressed over this control (control always captures input " +"until button is released)" +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:127 +msgid "" +"Control provides keyboard/joypad focus via :ref:`Control.focus_mode " +"`." +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:130 +msgid "" +"This function is :ref:`Control._gui_input() " +"`. Simply override it in your control. No " +"processing needs to be set." +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:153 +msgid "" +"For more information about events themselves, check the :ref:" +"`doc_inputevent` tutorial." +msgstr "" + +#: ../../docs/tutorials/gui/custom_gui_controls.rst:159 +msgid "" +"Controls also have many useful notifications for which no dedicated callback " +"exists, but which can be checked with the _notification callback:" +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:4 +msgid "Keyboard/Controller Navigation and Focus" +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:6 +msgid "" +"It is a common requirement for a user interface to have full keyboard and " +"controller support for navigation and interaction. There are two main " +"reasons why this is beneficial for projects: improved accessibility (not " +"everyone can use mouse or touch controls for interactions), and getting your " +"project ready for :ref:`consoles ` (or just for people who " +"prefer to game with a controller on PC)." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:13 +msgid "" +"Navigating between UI elements with keyboard or controller is done by " +"changing which node is actively selected. This is also called changing UI " +"focus. Every :ref:`Control ` node in Godot is capable of " +"having focus. By default, some control nodes have the ability to " +"automatically grab focus reacting to built-in UI actions such as ``ui_up``, " +"``ui_down``, ``ui_focus_next``, etc. These actions can be seen in the " +"project settings in the input map and can be modified." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:22 +msgid "" +"Because these actions are used for focus they should not be used for any " +"gameplay code." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:26 +msgid "Node settings" +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:28 +msgid "" +"In addition to the built-in logic, you can define what is known as focus " +"neighbors for each individual control node. This allows to finely tune the " +"path the UI focus takes across the user interface of your project. The " +"settings for individual nodes can be found in the Inspector dock, under the " +"\"Focus\" category of the \"Control\" section." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:36 +msgid "" +"Neighbor options are used to define nodes for 4-directional navigation, such " +"as using arrow keys or a D-pad on a controller. For example, the bottom " +"neighbor will be used when navigating down with the down arrow or by pushing " +"down on the D-pad. The \"Next\" and \"Previous\" options are used with the " +"focus shift button, such as :kbd:`Tab` on desktop operating systems." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:43 +msgid "A node can lose focus if it becomes hidden." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:45 +msgid "" +"The mode setting defines how a node can be focused. **All** means a node can " +"be focused by clicking on it with the mouse, or selecting it with a keyboard " +"or controller. **Click** means it can only be focused on by clicking on it. " +"Finally, **None** means it can't be focused at all. Different control nodes " +"have different default settings for this based on how they are typically " +"used, for example, :ref:`Label ` nodes are set to \"None\" by " +"default, while :ref:`buttons ` are set to \"All\"." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:53 +msgid "" +"Make sure to properly configure your scenes for focus and navigation. If a " +"node has no focus neighbor configured, the engine will try to guess the next " +"control automatically. This may result in unintended behavior, especially in " +"a complex user interface that doesn't have well-defined vertical or " +"horizontal navigation flow." +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:59 +msgid "Necessary code" +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:61 +msgid "" +"For keyboard and controller navigation to work correctly, any node must be " +"focused on using code when the scene starts. Without doing this, pressing " +"buttons or keys won't do anything. Here is a basic example of setting " +"initial focus with code:" +msgstr "" + +#: ../../docs/tutorials/gui/gui_navigation.rst:78 +msgid "" +"Now when the scene starts the \"Start Button\" node will be focused, and the " +"keyboard or a controller can be used to navigate between it and other UI " +"elements." +msgstr "" + +#: ../../docs/tutorials/gui/control_node_gallery.rst:2 +msgid "Control node gallery" +msgstr "" + +#: ../../docs/tutorials/gui/control_node_gallery.rst:4 +msgid "Here is a list of common Control nodes with their name next to them:" +msgstr "" + +#: ../../docs/tutorials/gui/control_node_gallery.rst:8 +msgid "" +"The Control Gallery demo pictured above can be found `on GitHub `__." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:4 +msgid "Introduction to GUI skinning" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:6 +msgid "" +"It is essential for a game to provide clear, informative, and yet visually " +"pleasing user interface to its players. While :ref:`Control ` " +"nodes come with a decently functional look out of the box, there is always " +"room for uniqueness and case-specific tuning. For this purpose Godot engine " +"includes a system for GUI skinning (or theming), which allows you to " +"customize the look of every control in your user interface, including your " +"custom controls." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:13 +msgid "" +"Here is an example of this system in action — a game with the GUI that is " +"radically different from the default UI theme of the engine:" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:19 +msgid "A \"Gear Up!\" screen in Tank Kings, courtesy of Winterpixel Games" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:21 +msgid "" +"Beyond achieving a unique look for your game, this system also enables " +"developers to provide customization options to the end users, including " +"accessibility settings. UI themes are applied in a cascading manner (i.e. " +"they propagate from parent controls to their children), which means that " +"font settings or adjustments for colorblind users can be applied in a single " +"place and affect the entire UI tree. Of course this system can also be used " +"for gameplay purposes: your hero-based game can change its style for the " +"selected player character, or you can give different flavors to the sides in " +"your team-based project." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:31 +msgid "Basics of themes" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:33 +msgid "" +"The skinning system is driven by the :ref:`Theme ` resource. " +"Every Godot project has an inherent default theme that contains the settings " +"used by the built-in control nodes. This is what gives the controls their " +"distinct look out of the box. A theme only describes the configuration, " +"however, and it is still the job of each individual control to use that " +"configuration in the way it requires to display itself. This is important to " +"remember when implementing :ref:`your own custom controls " +"`." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:42 +msgid "" +"Even the Godot editor itself relies on the default theme. But it doesn't " +"look the same as a Godot project, because it applies its own heavily " +"customized theme on top of the default one. In principle, this works exactly " +"like it would in your game as explained :ref:`below " +"`." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:48 +msgid "Theme items" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:50 +msgid "" +"The configuration that is stored in a theme consists of theme items. Each " +"item has a unique name and must be one of the following data types:" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:53 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:604 +msgid "**Color**" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:55 +msgid "" +"A :ref:`color ` value, which is often used for fonts and " +"backgrounds. Colors can also be used for modulation of controls and icons." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:59 +msgid "**Constant**" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:61 +msgid "" +"An integer value, which can be used either for numeric properties of " +"controls (such as the item separation in a :ref:`BoxContainer " +"`), or for boolean flags (such as the drawing of " +"relationship lines in a :ref:`Tree `)." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:65 +msgid "**Font**" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:67 +msgid "" +"A :ref:`font ` resource, which is used by controls that display " +"text. Fonts contain most text rendering settings, except for its size and " +"color. On top of that, alignment and text direction are controlled by " +"individual controls." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:72 +msgid "**Icon**" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:74 +msgid "" +"A :ref:`texture ` resource, which is normally used to display " +"an icon (on a :ref:`Button `, for example)." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:77 +msgid "**StyleBox**" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:79 +msgid "" +"A :ref:`StyleBox ` resource, a collection of configuration " +"options which define the way a UI panel should be displayed. This is not " +"limited to the :ref:`Panel ` control, as styleboxes are used by " +"many controls for their backgrounds and overlays." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:85 +msgid "Theme types" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:87 +msgid "" +"To help with the organization of its items each theme is separated into " +"types, and each item must belong to a single type. In other words, each " +"theme item is defined by its name, its data type and its theme type. This " +"combination must be unique within the theme. For example, there cannot be " +"two color items named ``font_color`` in a type called ``Label``, but there " +"can be another ``font_color`` item in a type ``LineEdit``." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:94 +msgid "" +"The default Godot theme comes with multiple theme types already defined, one " +"for every built-in control node that uses UI skinning. The example above " +"contains actual theme items present in the default theme. You can refer to " +"the **Theme Properties** section in the class reference for each control to " +"see which items are available to it and its child classes." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:101 +msgid "" +"Child classes can use theme items defined for their parent class (``Button`` " +"and its derivatives being a good example of that). In fact, every control " +"can use every theme item of any theme type, if it needs to (but for the " +"clarity and predictability we try to avoid that in the engine)." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:106 +msgid "" +"It is important to remember that for child classes that process is " +"automated. Whenever a built-in control requests a theme item from the theme " +"it can omit the theme type, and its class name will be used instead. On top " +"of that, the class names of its parent classes will also be used in turn. " +"This allows changes to the parent class, such as ``Button``, to affect all " +"derived classes without the need to customize every one of them." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:113 +msgid "" +"You can also define your own theme types, and additionally customize both " +"built-in controls and your own controls. Because built-in controls have no " +"knowledge of your custom theme types, you must utilize scripts to access " +"those items. All control nodes have several methods that allow to fetch " +"theme items from the theme that is applied to them. Those methods accept the " +"theme type as one of the arguments." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:131 +msgid "Customizing a control" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:133 +msgid "" +"Each control node can be customized directly without the use of themes. This " +"is called local overrides. Every theme property from the control's class " +"reference can be overridden directly on the control itself, using either the " +"Inspector dock, or scripts. This allows to make granular changes to a " +"particular part of the UI, while not affecting anything else in the project, " +"including this control's children." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:143 +msgid "" +"Local overrides are less useful for the visual flair of your user interface, " +"especially if you aim for consistency. However, for layout nodes these are " +"essential. Nodes such as :ref:`BoxContainer ` and :ref:" +"`GridContainer ` use theme constants for defining " +"separation between their children, and :ref:`MarginContainer " +"` stores its customizable margins in its theme items." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:150 +msgid "" +"Whenever a control has a local theme item override, this is the value that " +"it uses. Values provided by the theme are ignored." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:156 +msgid "Customizing a project" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:158 +msgid "" +"Out of the box each project adopts the default project theme provided by " +"Godot. The default theme itself is constant and cannot be changed, but its " +"items can be overridden with a custom theme. Custom themes can be applied in " +"two ways: as a project setting, and as a node property throughout the tree " +"of control nodes." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:163 +msgid "" +"There are two project settings that can be adjusted to affect your entire " +"project: :ref:`gui/theme/custom` allows you to set a custom project-wide theme, and :ref:`gui/theme/" +"custom_font` does the " +"same to the default fallback font. When a theme item is requested by a " +"control node the custom project theme, if present, is checked first. Only if " +"it doesn't have the item the default theme is checked." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:170 +msgid "" +"This allows you to configure the default look of every Godot control with a " +"single theme resource, but you can go more granular than that. Every control " +"node also has a :ref:`theme ` property, which " +"allows you to set a custom theme for the branch of nodes starting with that " +"control. This means that the control and all of its children, and their " +"children in turn, would first check that custom theme resource before " +"falling back on the project and the default themes." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:178 +msgid "" +"Instead of changing the project setting you can set the custom theme " +"resource to the root-most control node of your entire UI branch to almost " +"the same effect. While in the running project it will behave as expected, " +"individual scenes will still display using the default theme when previewing " +"or running them directly. To fix that you can set the same theme resource to " +"the root control of each individual scene." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:184 +msgid "" +"For example, you can have a certain style for buttons in your project theme, " +"but want a different look for buttons inside of a popup dialog. You can set " +"a custom theme resource to the root control of your popup and define a " +"different style for buttons within that resource. As long as the chain of " +"control nodes between the root of the popup and the buttons is " +"uninterrupted, those buttons will use the styles defined in the theme " +"resource that is closest to them. All other controls will still be styled " +"using the project-wide theme and the default theme styles." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:192 +msgid "" +"To sum it up, for an arbitrary control its theme item lookup would look " +"something like this:" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:195 +msgid "Check for local overrides of the same data type and name." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:196 +msgid "Using control's class name and parent class names:" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:198 +msgid "" +"Check every control starting from itself and see if it has a theme property " +"set;" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:199 +msgid "" +"If it does, check that theme for the matching item of the same name, data " +"and theme type;" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:200 +msgid "" +"If there is no custom theme or it doesn't have the item, move to the parent " +"control;" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:201 +msgid "" +"Repeat steps a-c. until the root of the tree is reached, or a non-control " +"node is reached." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:203 +msgid "" +"Using control's class name check the project-wide theme, if it's present." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:204 +msgid "Using control's class name check the default theme." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:206 +msgid "" +"Even if the item doesn't exist in any theme, a corresponding default value " +"for that data type will be returned." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:210 +msgid "Beyond controls" +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:212 +msgid "" +"Naturally, themes are an ideal type of resource for storing configuration " +"for something visual. While the support for theming is built into control " +"nodes, other nodes can use them as well, just like any other resource." +msgstr "" + +#: ../../docs/tutorials/gui/gui_skinning.rst:216 +msgid "" +"An example of using themes for something beyond controls can be a modulation " +"of sprites for the same units on different teams in a strategy game. A theme " +"resource can define a collection of colors, and sprites (with a help from " +"scripts) can use those colors to draw the texture. The main benefit being " +"that you could make different themes using the same theme items for red, " +"blue, and green teams, and swap them with a single resource change." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:4 +msgid "Using the theme editor" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:6 +msgid "" +"This articles explains how to create and manage UI themes using the Godot " +"editor and its theme editor tool. We recommend getting familiar with the " +"basics behind GUI skinning/theming by reading :ref:`doc_gui_skinning` before " +"starting." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:10 +msgid "" +"The theme editor is a bottom panel tool that activates automatically, when " +"a :ref:`Theme ` resource is selected for editing. It contains " +"the necessary UI for adding, removing, and adjusting theme types and theme " +"items. It features a preview section for testing your changes live, as well " +"as a window dialog for doing bulk operations of the theme items." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:17 +msgid "Creating a theme" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:19 +msgid "" +"Like any other resources, themes can be created directly in the file system " +"dock by right-clicking and selecting **New Resource...**, then selecting " +"**Theme** and clicking **Create**. This is especially useful for creating " +"project-wide themes." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:24 +msgid "" +"Themes also can be created from any control node. Select a control node in " +"the scene hierarchy, then in the inspector go to the ``theme`` property. " +"From there you can select **New Theme**." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:31 +msgid "" +"This will create an empty theme and open up the theme editor. Keep in mind " +"that resources created this way are bundled with the scene by default. Use " +"the context menu to save the new theme to a file instead." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:35 +msgid "" +"While the theme editor provides the tools to manage theme types and items, " +"themes also include the default, fallback font that you can edit only using " +"the Inspector dock. Same applies to the contents of complex resource types, " +"such as :ref:`StyleBoxes ` and icons — they open for editing " +"in the Inspector." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:44 +msgid "Theme editor overview" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:49 +msgid "" +"The theme editor has two main parts. The main theme editor, located at the " +"bottom of the Godot editor, aims to provide users with tools to quickly " +"create, edit, and delete theme items and types. It gives visual tools for " +"picking and changing controls, abstracting the underlying theme concepts. " +"The **Manage Theme Items** dialog, on the other hand, tries to address the " +"needs of those who want to change themes manually. It's also useful for " +"creating a new editor theme." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:57 +msgid "Theme previews" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:59 +msgid "" +"The left-hand side of the main editor has a set of preview tabs. The " +"**Default Preview** tab is visible out of the box and contains most of the " +"frequently used controls in various states. Previews are interactive, so " +"intermediate states (e.g. hover) can be previewed as well." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:66 +msgid "" +"Additional tabs can be created from arbitrary scenes in your project. The " +"scene must have a control node as its root to function as a preview. To add " +"a new tab click the **Add Preview** button and select the saved scene from " +"your file system." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:73 +msgid "" +"If you make changes to the scene, they will not be reflected in the preview " +"automatically. To update the preview click the reload button on the toolbar." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:76 +msgid "" +"Previews can also be used to quickly select the theme type to edit. Select " +"the picker tool from the toolbar and hover over the preview area to " +"highlight control nodes. Highlighted control nodes display their class name. " +"Clicking on the highlighted control opens it for editing on the right-hand " +"side." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:85 +msgid "Theme types and items" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:87 +msgid "" +"The right-hand side of them theme editor provides a list of theme types " +"available in the edited theme resource, and the contents of the selected " +"type. The list of type's items is divided into several tabs, corresponding " +"to each data type available in the theme (colors, constants, styles, etc.). " +"If the **Show Default** option is enabled, then for each built-in type its " +"default theme values are displayed, greyed out. If the option is disabled, " +"only the items available in the edited theme itself are displayed." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:98 +msgid "" +"Individual items from the default theme can be added to the current theme by " +"clicking on the **Override** button next to the item. You can also override " +"all the default items of the selected theme type by clicking on the " +"**Override All** button. Overridden properties can then be removed with the " +"**Remove Item** button. Properties can also be renamed using the **Rename " +"Item** button, and completely custom properties can be added to the list " +"using the text field below it." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:105 +msgid "" +"Overridden theme items can be edited directly in the right-hand panel, " +"unless they are resources. Resources have rudimentary controls available for " +"them, but must be edited in the Inspector dock instead." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:112 +msgid "" +"Styleboxes have an unique feature available, where you can pin an individual " +"stylebox from the list. Pinned stylebox acts like the leader of the pack, " +"and all styleboxes of the same type are updated alongside it when you change " +"its properties. This allows you to edit properties of several styleboxes at " +"the same time." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:121 +msgid "" +"While theme types can be picked from a preview, they can also be added " +"manually. Clicking the plus button next to the type list opens the **Add " +"item Type** menu. In that menu you can either select a type from the list, " +"or you can enter an arbitrary name to create a custom type. Text field also " +"filters the list of control nodes." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:131 +msgid "Manage and import items" +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:133 +msgid "" +"Clicking the **Manage Items** button brings up the **Manage Theme Items** " +"dialog. In the **Edit Items** tab you can view and add theme types, as well " +"as view and edit the theme items of the selected type." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:140 +msgid "" +"You can create, rename and remove individual theme items here by clicking " +"the corresponding **Add X Item** and specifying their name. You can also " +"mass delete theme items either by their data type (using the brush icon in " +"the list) or by their quality. **Remove Class Items** will remove all built-" +"in theme items you have customized for a control node type. **Remove Custom " +"Items** will remove all the custom theme items for the selected type. " +"Finally, **Remove All Items** will remove everything from the type." +msgstr "" + +#: ../../docs/tutorials/gui/gui_using_theme_editor.rst:148 +msgid "" +"From the **Import Items** tab you can import theme items from other themes. " +"You can import items from the default Godot theme, the Godot editor theme, " +"or another custom theme. You can import individual or multiple items, and " +"you can decide whether to copy or omit their data as well. There are several " +"way you can select and deselect the items, including by hand, by hierarchy, " +"by data type, and everything. Opting to include the data will copy all theme " +"items as they are to your theme. Omitting the data will create the items of " +"the corresponding data type and name, but will leave them empty, creating a " +"template of a theme in a way." +msgstr "" + #: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:4 msgid "BBCode in RichTextLabel" msgstr "" @@ -57907,260 +60458,301 @@ msgid "``[url]{url}[/url]``" msgstr "" #: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:73 -msgid "Show {url} as such, underline it and make it clickable." +msgid "" +"Show {url} as such, underline it and make it clickable. **Must be handled " +"with the \"meta_clicked\" signal to have an effect.** See :ref:" +"`doc_bbcode_in_richtextlabel_handling_url_tag_clicks`." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:75 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 msgid "**url (ref)**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:75 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 msgid "``[url=]{text}[/url]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:75 -msgid "Makes {text} reference (underlined and clickable)." +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 +msgid "" +"Makes {text} reference (underlined and clickable). **Must be handled " +"with the \"meta_clicked\" signal to have an effect.** See :ref:" +"`doc_bbcode_in_richtextlabel_handling_url_tag_clicks`." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 msgid "**image**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 msgid "``[img]{path}[/img]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:77 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 msgid "Insert image at resource {path}." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:79 -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 msgid "**resized image**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:79 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 msgid "``[img=]{path}[/img]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:79 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 msgid "Insert image at resource {path} using (keeps ratio)." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 msgid "``[img=x]{path}[/img]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:81 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 msgid "Insert image at resource {path} using ×." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 msgid "**font**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 msgid "``[font=]{text}[/font]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:83 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 msgid "Use custom font at for {text}." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 msgid "**color**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 msgid "``[color=]{text}[/color]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:85 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 msgid "Change {text} color; use name or # format, such as ``#ff00ff``." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:91 msgid "**table**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:91 msgid "``[table=]{cells}[/table]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:87 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:91 msgid "Creates a table with of columns." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:93 msgid "**cell**" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:93 msgid "``[cell]{text}[/cell]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:89 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:93 msgid "Adds cells with the {text} to the table." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:93 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:97 msgid "Built-in color names" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:95 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:99 msgid "List of valid color names for the [color=] tag:" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:97 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:101 msgid "aqua" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:98 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:102 msgid "black" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:99 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:103 msgid "blue" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:100 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:104 msgid "fuchsia" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:101 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:105 msgid "gray" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:102 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:106 msgid "green" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:103 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:107 msgid "lime" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:104 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:108 msgid "maroon" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:105 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:109 msgid "navy" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:106 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:110 msgid "purple" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:107 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:111 msgid "red" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:108 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:112 msgid "silver" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:109 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:113 msgid "teal" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:110 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:114 msgid "white" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:111 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:115 msgid "yellow" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:114 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:118 msgid "Hexadecimal color codes" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:116 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:120 msgid "" "For opaque RGB colors, any valid 6-digit hexadecimal code is supported, e.g. " -"``[color=#ffffff]white[/color]``." +"``[color=#ffffff]white[/color]``. Short RGB color codes such as ``#6f2`` " +"(equivalent to ``#66ff22``) are also supported." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:118 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:123 msgid "" "For transparent RGB colors, any 8-digit hexadecimal code can be used, e.g. " "``[color=#88ffffff]translucent white[/color]``. In this case, note that the " -"alpha channel is the **first** component of the color code, not the last one." +"alpha channel is the **first** component of the color code, not the last " +"one. Short RGBA color codes such as ``#86f2`` (equivalent to ``#8866ff22``) " +"are also supported." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:122 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:130 +msgid "Handling ``[url]`` tag clicks" +msgstr "" + +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:132 +msgid "" +"By default, ``[url]`` tags do nothing when clicked. This is to allow " +"flexible use of ``[url]`` tags rather than limiting them to opening URLs in " +"a web browser." +msgstr "" + +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:135 +msgid "" +"To handle clicked ``[url]`` tags, connect the RichTextLabel node's :ref:" +"`meta_clicked ` signal to a script " +"function." +msgstr "" + +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:138 +msgid "" +"For example, the following method can be connected to ``meta_clicked`` to " +"open clicked URLs using the user's default web browser::" +msgstr "" + +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:148 +msgid "" +"For more advanced use cases, it's also possible to store JSON in an " +"``[url]`` tag's option and parse it in the function that handles the " +"``meta_clicked`` signal. For example: ``[url={\"example\": \"value\"}]JSON[/" +"url]``" +msgstr "" + +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:153 msgid "Image vertical offset" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:124 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:155 msgid "You use a custom font for your image in order to align it vertically." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:126 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:157 msgid "Create a ``BitmapFont`` resource" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:127 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:158 msgid "" "Set this bitmap font with a positive value for the ``ascent`` property, " "that's your height offset" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:128 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:159 msgid "" "Set the BBCode tag this way: ``[font=][img]{image-path}[/img][/" "font]``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:131 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:162 msgid "Animation effects" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:133 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:164 msgid "" "BBCode can also be used to create different text animation effects. Five " "customizable effects are provided out of the box, and you can easily create " "your own." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:137 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:168 msgid "Wave" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:141 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:172 msgid "" "Wave makes the text go up and down. Its tag format is ``[wave amp=50 freq=2]" "[/wave]``. ``amp`` controls how high and low the effect goes, and ``freq`` " "controls how fast the text goes up and down." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:146 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:177 msgid "Tornado" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:150 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:181 msgid "" "Tornao makes the text move around in a circle. Its tag format is ``[tornado " "radius=5 freq=2][/tornado]``. ``radius`` is the radius of the circle that " "controls the offset, ``freq`` is how fast the text moves in a circle." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:156 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:187 msgid "Shake" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:160 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:191 msgid "" "Shake makes the text shake. Its tag format is ``[shake rate=5 level=10][/" "shake]``. ``rate`` controls how fast the text shakes, ``level`` controls how " "far the text is offset from the origin." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:165 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:196 msgid "Fade" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:169 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:200 msgid "" "Fade creates a fade effect over the text that is not animated. Its tag " "format is ``[fade start=4 length=14][/fade]``. ``start`` controls the " @@ -58169,11 +60761,11 @@ msgid "" "take place." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:176 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:207 msgid "Rainbow" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:180 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:211 msgid "" "Rainbow gives the text a rainbow color that changes over time. Its tag " "format is ``[rainbow freq=0.2 sat=10 val=20][/rainbow]``. ``freq`` is the " @@ -58181,21 +60773,22 @@ msgid "" "rainbow, ``val`` is the value of the rainbow." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:186 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:217 msgid "Custom BBCode tags and text effects" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:188 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:219 msgid "" "You can extend the :ref:`class_RichTextEffect` resource type to create your " "own custom BBCode tags. You begin by extending the :ref:" "`class_RichTextEffect` resource type. Add the ``tool`` prefix to your " "GDScript file if you wish to have these custom effects run within the editor " "itself. The RichTextLabel does not need to have a script attached, nor does " -"it need to be running in ``tool`` mode." +"it need to be running in ``tool`` mode. The new effect will be activable in " +"the Inspector through the **Custom Effects** property." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:194 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:226 msgid "" "There is only one function that you need to extend: " "``_process_custom_fx(char_fx)``. Optionally, you can also provide a custom " @@ -58204,11 +60797,11 @@ msgid "" "to determine what the BBCode tag should be." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:200 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:232 msgid "``_process_custom_fx``" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:202 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:234 msgid "" "This is where the logic of each effect takes place and is called once per " "character during the draw phase of text rendering. This passes in a :ref:" @@ -58216,47 +60809,47 @@ msgid "" "the associated character is rendered:" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:206 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:238 msgid "" "``identity`` specifies which custom effect is being processed. You should " "use that for code flow control." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:208 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:240 msgid "" "``relative_index`` tells you how far into a given custom effect block you " "are in as an index." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:210 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:242 msgid "" "``absolute_index`` tells you how far into the entire text you are as an " "index." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:211 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:243 msgid "" "``elapsed_time`` is the total amount of time the text effect has been " "running." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:212 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:244 msgid "" "``visible`` will tell you whether the character is visible or not and will " "also allow you to hide a given portion of text." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:214 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:246 msgid "" "``offset`` is an offset position relative to where the given character " "should render under normal circumstances." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:216 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:248 msgid "``color`` is the color of a given character." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:217 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:249 msgid "" "Finally, ``env`` is a :ref:`class_Dictionary` of parameters assigned to a " "given custom effect. You can use :ref:`get() ` " @@ -58266,7 +60859,7 @@ msgid "" "its ` `env`` Dictionary. See below for more usage examples." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:223 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:255 msgid "" "The last thing to note about this function is that it is necessary to return " "a boolean ``true`` value to verify that the effect processed correctly. This " @@ -58275,41 +60868,26 @@ msgid "" "cropped up in their custom effect logic." msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:228 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:260 msgid "Here are some examples of custom effects:" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:231 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:263 msgid "Ghost" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:254 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:286 msgid "Pulse" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:281 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:313 msgid "Matrix" msgstr "" -#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:316 +#: ../../docs/tutorials/gui/bbcode_in_richtextlabel.rst:348 msgid "This will add a few new BBCode commands, which can be used like so:" msgstr "" -#: ../../docs/tutorials/gui/control_node_gallery.rst:2 -msgid "Control node gallery" -msgstr "" - -#: ../../docs/tutorials/gui/control_node_gallery.rst:4 -msgid "Here is a list of common Control nodes with their name next to them:" -msgstr "" - -#: ../../docs/tutorials/gui/control_node_gallery.rst:8 -msgid "" -"The Control Gallery demo pictured above can be found `on GitHub `__." -msgstr "" - #: ../../docs/tutorials/viewports/viewports.rst:4 msgid "Using Viewports" msgstr "" @@ -58547,6 +61125,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/viewports/viewports.rst:174 +#: ../../docs/tutorials/threads/thread_safe_apis.rst:53 msgid "Rendering" msgstr "" @@ -60118,7 +62697,7 @@ msgid "Void datatype, useful only for functions that return nothing." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:25 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:550 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:594 msgid "**bool**" msgstr "" @@ -60151,7 +62730,7 @@ msgid "Four-component vector of booleans." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:33 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:552 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:596 msgid "**int**" msgstr "" @@ -60216,7 +62795,7 @@ msgid "Four-component vector of unsigned integers." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:49 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:554 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:598 msgid "**float**" msgstr "" @@ -60225,7 +62804,7 @@ msgid "Floating-point scalar." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:51 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:556 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:600 msgid "**vec2**" msgstr "" @@ -60234,7 +62813,7 @@ msgid "Two-component vector of floating-point values." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:53 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:558 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:602 msgid "**vec3**" msgstr "" @@ -60243,8 +62822,8 @@ msgid "Three-component vector of floating-point values." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:55 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:560 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:571 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:604 msgid "**vec4**" msgstr "" @@ -60269,8 +62848,8 @@ msgid "3x3 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:61 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:562 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:564 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:606 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:608 msgid "**mat4**" msgstr "" @@ -60279,12 +62858,12 @@ msgid "4x4 matrix, in column major order." msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:63 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:531 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:533 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:535 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:537 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:539 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:541 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:575 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:577 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:579 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:581 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:583 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 msgid "**sampler2D**" msgstr "" @@ -60878,57 +63457,77 @@ msgstr "" #: ../../docs/tutorials/shading/shading_reference/shading_language.rst:423 msgid "" -"To send data from the vertex to the fragment processor function, *varyings* " -"are used. They are set for every primitive vertex in the *vertex processor*, " -"and the value is interpolated for every pixel in the fragment processor." +"To send data from the vertex to the fragment (or light) processor function, " +"*varyings* are used. They are set for every primitive vertex in the *vertex " +"processor*, and the value is interpolated for every pixel in the *fragment " +"processor*." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:440 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:445 msgid "Varying can also be an array:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:457 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:462 +msgid "" +"It's also possible to send data from *fragment* to *light* processors using " +"*varying* keyword. To do so you can assign it in the *fragment* and later " +"use it in the *light* function." +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:478 +msgid "" +"Note that varying may not be assigned in custom functions or a *light " +"processor* function like:" +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:498 +msgid "" +"This limitation was introduced to prevent incorrect usage before " +"initialization." +msgstr "" + +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:501 msgid "Interpolation qualifiers" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:459 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:503 msgid "" "Certain values are interpolated during the shading pipeline. You can modify " "how these interpolations are done by using *interpolation qualifiers*." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:476 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:520 msgid "There are two possible interpolation qualifiers:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:479 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:523 msgid "Qualifier" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:481 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 msgid "**flat**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:481 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 msgid "The value is not interpolated." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:483 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 msgid "**smooth**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:483 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 msgid "" "The value is interpolated in a perspective-correct fashion. This is the " "default." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:488 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:532 #: ../../docs/tutorials/shading/your_first_shader/your_first_spatial_shader.rst:194 msgid "Uniforms" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:490 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:534 msgid "" "Passing values to shaders is possible. These are global to the whole shader " "and are called *uniforms*. When a shader is later assigned to a material, " @@ -60936,160 +63535,156 @@ msgid "" "written from within the shader." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:500 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:544 msgid "" "You can set uniforms in the editor in the material. Or you can set them " "through GDScript:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:506 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:550 msgid "" "The first argument to ``set_shader_param`` is the name of the uniform in the " "shader. It must match *exactly* to the name of the uniform in the shader or " "else it will not be recognized." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:509 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:553 msgid "" "Any GLSL type except for *void* can be a uniform. Additionally, Godot " "provides optional shader hints to make the compiler understand for what the " "uniform is used." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:520 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:564 msgid "" "It's important to understand that textures that are supplied as color " "require hints for proper sRGB->linear conversion (i.e. ``hint_albedo``), as " "Godot's 3D engine renders in linear color space." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:522 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:566 msgid "Full list of hints below:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:525 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:569 msgid "Hint" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:571 msgid "hint_color" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:527 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:571 msgid "Used as color" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:573 msgid "**int, float**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:573 msgid "hint_range(min, max[, step])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:529 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:573 msgid "Used as range (with min/max/step)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:531 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:575 msgid "hint_albedo" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:531 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:575 msgid "Used as albedo color, default white" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:533 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:577 msgid "hint_black_albedo" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:533 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:577 msgid "Used as albedo color, default black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:535 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:579 msgid "hint_normal" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:535 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:579 msgid "Used as normalmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:537 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:581 msgid "hint_white" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:537 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:581 msgid "As value, default to white." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:539 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:583 msgid "hint_black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:539 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:583 msgid "As value, default to black" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:541 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 msgid "hint_aniso" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:541 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 msgid "As flowmap, default to right." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:544 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:588 msgid "" "GDScript uses different variable types than GLSL does, so when passing " "variables from GDScript to shaders, Godot converts the type automatically. " "Below is a table of the corresponding types:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:548 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:592 msgid "GDScript type" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:548 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:592 msgid "GLSL type" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:556 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:600 msgid "**Vector2**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:558 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:602 msgid "**Vector3**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:560 -msgid "**Color**" -msgstr "" - -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:562 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:606 msgid "**Transform**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:564 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:608 msgid "**Transform2D**" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:567 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:611 msgid "" "Be careful when setting shader uniforms from GDScript, no error will be " "thrown if the type does not match. Your shader will just exhibit undefined " "behavior." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:570 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:614 msgid "Uniforms can also be assigned default values:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:580 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:624 msgid "Built-in variables" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:582 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:626 msgid "" "A large number of built-in variables are available, like ``UV``, ``COLOR`` " "and ``VERTEX``. What variables are available depends on the type of shader " @@ -61098,787 +63693,787 @@ msgid "" "variables that are available, please see the corresponding pages:" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:585 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:629 msgid ":ref:`Spatial shaders `" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:586 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:630 msgid ":ref:`Canvas item shaders `" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:587 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:631 msgid ":ref:`Particle shaders `" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:590 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:634 msgid "Built-in functions" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:592 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:636 msgid "" "A large number of built-in functions are supported, conforming to GLSL ES " "3.0. When vec_type (float), vec_int_type, vec_uint_type, vec_bool_type " "nomenclature is used, it can be scalar or vector." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:595 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:639 msgid "" "For a list of the functions that are not available in the GLES2 backend, " "please see the :ref:`Differences between GLES2 and GLES3 doc " "`." msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:599 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 #: ../../docs/tutorials/misc/gles2_gles3_differences.rst:138 msgid "Function" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 msgid "vec_type **radians** (vec_type degrees)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:601 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 msgid "Convert degrees to radians" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:603 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 msgid "vec_type **degrees** (vec_type radians)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:603 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 msgid "Convert radians to degrees" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:605 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 msgid "vec_type **sin** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:605 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 msgid "Sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:607 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 msgid "vec_type **cos** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:607 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 msgid "Cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:609 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 msgid "vec_type **tan** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:609 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 msgid "Tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:611 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 msgid "vec_type **asin** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:611 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 msgid "Arcsine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:613 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 msgid "vec_type **acos** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:613 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 msgid "Arccosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:615 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 msgid "vec_type **atan** (vec_type y_over_x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:615 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 msgid "Arctangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:617 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 msgid "vec_type **atan** (vec_type y, vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:617 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 msgid "Arctangent to convert vector to angle" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:619 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 msgid "vec_type **sinh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:619 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 msgid "Hyperbolic sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:621 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 msgid "vec_type **cosh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:621 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 msgid "Hyperbolic cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:623 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 msgid "vec_type **tanh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:623 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 msgid "Hyperbolic tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:625 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 msgid "vec_type **asinh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:625 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 msgid "Inverse hyperbolic sine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:627 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 msgid "vec_type **acosh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:627 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 msgid "Inverse hyperbolic cosine" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:629 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 msgid "vec_type **atanh** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:629 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 msgid "Inverse hyperbolic tangent" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:631 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 msgid "vec_type **pow** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:631 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 msgid "Power (undefined if ``x`` < 0 or if ``x`` = 0 and ``y`` <= 0)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:633 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 msgid "vec_type **exp** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:633 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 msgid "Base-e exponential" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:635 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 msgid "vec_type **exp2** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:635 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 msgid "Base-2 exponential" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:637 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 msgid "vec_type **log** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:637 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 msgid "Natural logarithm" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:639 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 msgid "vec_type **log2** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:639 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 msgid "Base-2 logarithm" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:641 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 msgid "vec_type **sqrt** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:641 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 msgid "Square root" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 msgid "vec_type **inversesqrt** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:643 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 msgid "Inverse square root" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 msgid "vec_type **abs** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:645 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 msgid "Absolute" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:647 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 msgid "ivec_type **abs** (ivec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 msgid "vec_type **sign** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:649 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 msgid "Sign" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:651 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 msgid "ivec_type **sign** (ivec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 msgid "vec_type **floor** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:653 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 msgid "Floor" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 msgid "vec_type **round** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:655 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 msgid "Round" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 msgid "vec_type **roundEven** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:657 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 msgid "Round to the nearest even number" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 msgid "vec_type **trunc** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:659 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 msgid "Truncation" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 msgid "vec_type **ceil** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:661 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 msgid "Ceil" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 msgid "vec_type **fract** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:663 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 msgid "Fractional" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 msgid "vec_type **mod** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:665 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 msgid "Remainder" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:667 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 msgid "vec_type **mod** (vec_type x , float y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 msgid "vec_type **modf** (vec_type x, out vec_type i)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:669 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 msgid "Fractional of ``x``, with ``i`` as integer part" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 msgid "vec_type **min** (vec_type a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:671 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 msgid "Minimum" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 msgid "vec_type **max** (vec_type a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:673 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 msgid "Maximum" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 msgid "vec_type **clamp** (vec_type x, vec_type min, vec_type max)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:675 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 msgid "Clamp to ``min..max``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 msgid "float **mix** (float a, float b, float c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:677 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 msgid "Linear interpolate" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 msgid "vec_type **mix** (vec_type a, vec_type b, float c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:679 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 msgid "Linear interpolate (scalar coefficient)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 msgid "vec_type **mix** (vec_type a, vec_type b, vec_type c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:681 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 msgid "Linear interpolate (vector coefficient)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 msgid "vec_type **mix** (vec_type a, vec_type b, bvec_type c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:683 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 msgid "Linear interpolate (boolean-vector selection)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 msgid "vec_type **step** (vec_type a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:685 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 msgid "``b[i] < a[i] ? 0.0 : 1.0``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 msgid "vec_type **step** (float a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:687 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 msgid "``b[i] < a ? 0.0 : 1.0``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 msgid "vec_type **smoothstep** (vec_type a, vec_type b, vec_type c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:689 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 msgid "Hermite interpolate" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:691 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 msgid "vec_type **smoothstep** (float a, float b, vec_type c)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 msgid "bvec_type **isnan** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:693 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 msgid "Returns ``true`` if scalar or vector component is ``NaN``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 msgid "bvec_type **isinf** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:695 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 msgid "Returns ``true`` if scalar or vector component is ``INF``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 msgid "ivec_type **floatBitsToInt** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:697 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 msgid "Float->Int bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 msgid "uvec_type **floatBitsToUint** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:699 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 msgid "Float->UInt bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 msgid "vec_type **intBitsToFloat** (ivec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:701 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 msgid "Int->Float bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 msgid "vec_type **uintBitsToFloat** (uvec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:703 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 msgid "UInt->Float bit copying, no conversion" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 msgid "float **length** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:705 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 msgid "Vector length" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 msgid "float **distance** (vec_type a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:707 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 msgid "Distance between vectors i.e ``length(a - b)``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:709 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 msgid "float **dot** (vec_type a, vec_type b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:711 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 msgid "vec3 **cross** (vec3 a, vec3 b)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 msgid "vec_type **normalize** (vec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:713 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 msgid "Normalize to unit length" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 msgid "vec3 **reflect** (vec3 I, vec3 N)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:715 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 msgid "Reflect" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 msgid "vec3 **refract** (vec3 I, vec3 N, float eta)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:717 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 msgid "Refract" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 msgid "vec_type **faceforward** (vec_type N, vec_type I, vec_type Nref)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:719 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 msgid "If ``dot(Nref, I)`` < 0, return N, otherwise –N" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 msgid "mat_type **matrixCompMult** (mat_type x, mat_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:721 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 msgid "Matrix component multiplication" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 msgid "mat_type **outerProduct** (vec_type column, vec_type row)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:723 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 msgid "Matrix outer product" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 msgid "mat_type **transpose** (mat_type m)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:725 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 msgid "Transpose matrix" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 msgid "float **determinant** (mat_type m)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:727 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 msgid "Matrix determinant" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 msgid "mat_type **inverse** (mat_type m)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:729 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 msgid "Inverse matrix" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 msgid "bvec_type **lessThan** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:731 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 msgid "Bool vector comparison on < int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 msgid "bvec_type **greaterThan** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:733 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 msgid "Bool vector comparison on > int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 msgid "bvec_type **lessThanEqual** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:735 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 msgid "Bool vector comparison on <= int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 msgid "bvec_type **greaterThanEqual** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:737 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 msgid "Bool vector comparison on >= int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 msgid "bvec_type **equal** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:739 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 msgid "Bool vector comparison on == int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 msgid "bvec_type **notEqual** (vec_type x, vec_type y)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:741 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 msgid "Bool vector comparison on != int/uint/float vectors" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 msgid "bool **any** (bvec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:743 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 msgid "Any component is ``true``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 msgid "bool **all** (bvec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:745 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 msgid "All components are ``true``" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 msgid "bvec_type **not** (bvec_type x)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:747 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 msgid "Invert boolean vector" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 msgid "ivec2 **textureSize** (sampler2D_type s, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:749 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 msgid "Get the size of a 2D texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 msgid "ivec3 **textureSize** (sampler2DArray_type s, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:751 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 msgid "Get the size of a 2D texture array" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:797 msgid "ivec3 **textureSize** (sampler3D s, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:753 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:797 msgid "Get the size of a 3D texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:799 msgid "ivec2 **textureSize** (samplerCube s, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:755 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:799 msgid "Get the size of a cubemap texture" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:801 msgid "vec4_type **texture** (sampler2D_type s, vec2 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:757 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:801 msgid "Perform a 2D texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:803 msgid "vec4_type **texture** (sampler2DArray_type s, vec3 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:759 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:803 msgid "Perform a 2D texture array read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:805 msgid "vec4_type **texture** (sampler3D_type s, vec3 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:761 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:805 msgid "Perform a 3D texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:807 msgid "vec4 **texture** (samplerCube s, vec3 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:763 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:807 msgid "Perform a cubemap texture read" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:809 msgid "vec4_type **textureProj** (sampler2D_type s, vec3 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:765 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:809 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:811 msgid "Perform a 2D texture read with projection" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:767 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:811 msgid "vec4_type **textureProj** (sampler2D_type s, vec4 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:813 msgid "vec4_type **textureProj** (sampler3D_type s, vec4 uv [, float bias])" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:769 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:813 msgid "Perform a 3D texture read with projection" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:815 msgid "vec4_type **textureLod** (sampler2D_type s, vec2 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:771 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:815 msgid "Perform a 2D texture read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:817 msgid "vec4_type **textureLod** (sampler2DArray_type s, vec3 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:773 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:817 msgid "Perform a 2D texture array read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:819 msgid "vec4_type **textureLod** (sampler3D_type s, vec3 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:775 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:819 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:821 msgid "Perform a 3D texture read at custom mipmap" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:777 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:821 msgid "vec4 **textureLod** (samplerCube s, vec3 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:823 msgid "vec4_type **textureProjLod** (sampler2D_type s, vec3 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:779 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:823 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:825 msgid "Perform a 2D texture read with projection/LOD" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:781 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:825 msgid "vec4_type **textureProjLod** (sampler2D_type s, vec4 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:827 msgid "vec4_type **textureProjLod** (sampler3D_type s, vec4 uv, float lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:783 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:827 msgid "Perform a 3D texture read with projection/LOD" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:829 msgid "vec4_type **texelFetch** (sampler2D_type s, ivec2 uv, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:785 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:829 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:831 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:833 msgid "Fetch a single texel using integer coordinates" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:787 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:831 msgid "vec4_type **texelFetch** (sampler2DArray_type s, ivec3 uv, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:789 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:833 msgid "vec4_type **texelFetch** (sampler3D_type s, ivec3 uv, int lod)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:835 msgid "vec_type **dFdx** (vec_type p)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:791 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:835 msgid "Derivative in ``x`` using local differencing" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:837 msgid "vec_type **dFdy** (vec_type p)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:793 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:837 msgid "Derivative in ``y`` using local differencing" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:839 msgid "vec_type **fwidth** (vec_type p)" msgstr "" -#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:795 +#: ../../docs/tutorials/shading/shading_reference/shading_language.rst:839 msgid "Sum of absolute derivative in ``x`` and ``y``" msgstr "" @@ -67443,6 +70038,116 @@ msgid "" "`networking/webrtc_signaling`." msgstr "" +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:1 +msgid ".. _doc_real_time_navigation_3d:" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:4 +msgid "Real Time Navigation (3D)" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:9 +msgid "" +"Godot provides two nodes which can be used to achieve real time navigation " +"in a 3D environment, :ref:`Navigation ` and :ref:" +"`NavigationMeshInstance `." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:12 +msgid "" +"A navigation mesh instance is used to hold a :ref:`NavigationMesh " +"`, " +"which defines what areas in a scene can be navigated to. The :ref:" +"`Navigation ` node is then used for " +"pathfinding with the navigation mesh." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:17 +msgid "Setting up navigation" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:19 +msgid "" +"To add navigation to a scene you need to add a navigation node, then " +"a navigation mesh instance as a child of the navigation node. With the " +"navigation mesh instance selected you need to go to the inspector and " +"create a new navigation mesh." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:24 +msgid ".. image:: img/new_navigation_mesh.png" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:26 +msgid "" +"Click on the navigation mesh and you can now alter the properties that " +"define how the navigation mesh is generated. You can find a full " +"description for each of the properties in the class reference here: :ref:" +"`NavigationMesh `." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:31 +msgid "" +"After making the changes you want the mesh can be generated by clicking " +"**Bake NavMesh** in the toolbar." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:34 +msgid ".. image:: img/bake_navmesh.png" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:36 +msgid "" +"Once the mesh has finished generating you should see the transparent " +"navigation mesh above the areas in your scene that can be navigated to." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:39 +msgid ".. image:: img/baked_navmesh.png" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:41 +msgid "" +"Keep in mind that the navmesh shows where the center of an entity can " +"go. For example, if you set the agent radius to 0.5 then your " +"navigation mesh will have a distance of 0.5 from any ledges or walls " +"to prevent clipping into the wall or hanging off of the edge." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:47 +msgid "Generating a path" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:49 +msgid "" +"To get a path between two areas on a map you use the navigation node " +"method ``get_simple_path()``. The first argument is a Vector3 of the " +"starting location, the next is a Vector3 of the end location. And the " +"last argument is a boolean for whether or not agent properties of a " +"navmesh are considered when generating a path." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:55 +msgid "" +"The method will return a :ref:`PoolVector3Array " +"` consisting of " +"points that make a path. If there is no way to navigate to the end " +"location the method will return a blank :ref:`PoolVector3Array " +"`." +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:60 +msgid "Official example project" +msgstr "" + +#: ../../docs/tutorials/navigation/real_time_navigation_3d.rst:62 +msgid "" +"There is an official example project on how to use 3D navigation. " +"You can find the repository `here `__. " +"It can also be found in the asset library." +msgstr "" + #: ../../docs/tutorials/assetlib/index.rst:2 msgid "Asset Library" msgstr "" @@ -67954,10 +70659,10 @@ msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:70 msgid "" "If you have screenshots in your repo, place them in their own subfolder and " -"add a **.gdignore** file in the same folder (note: **gd**, not **git**). " -"This prevents Godot from importing your screenshots. On Windows, open a " -"command prompt in the project folder and run ``type nul > .gdignore`` to " -"create a file whose name starts with a period." +"add an empty **.gdignore** file in the same folder (note: **gd**, not " +"**git**). This prevents Godot from importing your screenshots. On Windows, " +"open a command prompt in the project folder and run ``type nul > .gdignore`` " +"to create a file whose name starts with a period." msgstr "" #: ../../docs/tutorials/assetlib/uploading_to_assetlib.rst:76 @@ -72742,7 +75447,7 @@ msgid "Key" msgstr "" #: ../../docs/tutorials/plugins/editor/import_plugins.rst:248 -#: ../../docs/development/file_formats/tscn.rst:171 +#: ../../docs/development/file_formats/tscn.rst:173 msgid "``name``" msgstr "" @@ -73118,53 +75823,151 @@ msgstr "" #: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:6 msgid "" -"The inspector dock supports custom plugins to create your own widgets for " -"editing properties. This tutorial explains how to use the :ref:" -"`class_EditorInspectorPlugin` and :ref:`class_EditorProperty` classes to " -"write such plugins with the example of creating a custom value editor." +"The inspector dock allows you to create custom widgets to edit properties " +"through plugins. This can be beneficial when working with custom datatypes " +"and resources, although you can use the feature to change the inspector " +"widgets for built-in types. You can design custom controls for specific " +"properties, entire objects, and even separate controls associated with " +"particular datatypes." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:14 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:12 msgid "" -"Just like :ref:`doc_making_plugins`, we start out by making a new plugin, " -"getting a ``plugin.cfg`` file created, and start with our :ref:" -"`class_EditorPlugin`. However, instead of using ``add_custom_node`` or " -"``add_control_to_dock`` we'll use ``add_inspector_plugin``." +"This guide explains how to use the :ref:`class_EditorInspectorPlugin` and :" +"ref:`class_EditorProperty` classes to create a custom interface for " +"integers, replacing the default behavior with a button that generates random " +"values between 0 and 99." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:20 +msgid "The default behavior on the left and the end result on the right." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:24 +msgid "Setting up your plugin" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:26 +msgid "Create a new empty plugin to get started." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:28 +msgid "See :ref:`doc_making_plugins` guide to set up your new plugin." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:30 +msgid "" +"Let's assume you've called your plugin folder ``my_inspector_plugin``. If " +"so, you should end up with a new ``addons/my_inspector_plugin`` folder that " +"contains two files: ``plugin.cfg`` and ``plugin.gd``." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:34 +msgid "" +"As before, ``plugin.gd`` is a script extending :ref:`class_EditorPlugin` and " +"you need to introduce new code for its ``_enter_tree`` and ``_exit_tree`` " +"methods. To set up your inspector plugin, you must load its script, then " +"create and add the instance by calling ``add_inspector_plugin()``. If the " +"plugin is disabled, you should remove the instance you have added by calling " +"``remove_inspector_plugin()``." msgstr "" #: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:41 -msgid "EditorInspectorPlugin" -msgstr "" - -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:43 msgid "" -"To actually connect into the Inspector, we create a :ref:" -"`class_EditorInspectorPlugin` class. This script provides the \"hooks\" to " -"the inspector. Thanks to this class, the editor will call the functions " -"within the EditorInspectorPlugin while it goes through the process of " -"building the UI for the inspector. The script is used to check if we should " -"enable ourselves for any :ref:`class_Object` that is currently in the " -"inspector (including any :ref:`class_Resource` that is embedded!)." +"Here, you are loading a script and not a packed scene. Therefore you should " +"use ``new()`` instead of ``instance()``." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:51 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:64 +msgid "Interacting with the inspector" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:66 msgid "" -"Once enabled, EditorInspectorPlugin has methods that allow for adding :ref:" -"`class_EditorProperty` nodes or just custom :ref:`class_Control` nodes to " -"the beginning and end of the inspector for that :ref:`class_Object`, or for " -"overriding or changing existing property editors." +"To interact with the inspector dock, your ``MyInspectorPlugin.gd`` script " +"must extend the :ref:`class_EditorInspectorPlugin` class. This class " +"provides several virtual methods that affect how the inspector handles " +"properties." msgstr "" -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:85 -msgid "EditorProperty" -msgstr "" - -#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:87 +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:70 msgid "" -"Next, we define the actual :ref:`class_EditorProperty` custom value editor " -"that we want instantiated to edit integers. This is a custom :ref:" -"`class_Control` and we can add any kinds of additional nodes to make " -"advanced widgets to embed in the inspector." +"To have any effect at all, the script must implement the ``can_handle()`` " +"method. This function is called for each edited :ref:`class_Object` and must " +"return ``true`` if this plugin should handle the object or its properties." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:74 +msgid "This includes any :ref:`class_Resource` attached to the object." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:76 +msgid "" +"You can implement four other methods to add controls to the inspector at " +"specific positions. The ``parse_begin()`` and ``parse_end()`` methods are " +"called only once at the beginning and the end of parsing for each object, " +"respectively. They can add controls at the top or bottom of the inspector " +"layout by calling ``add_custom_control()``." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:82 +msgid "" +"As the editor parses the object, it calls the ``parse_category()`` and " +"``parse_property()`` methods. There, in addition to " +"``add_custom_control()``, you can call both ``add_property_editor()`` and " +"``add_property_editor_for_multiple_properties()``. Use these last two " +"methods to specifically add :ref:`class_EditorProperty`-based controls." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:115 +msgid "Adding an interface to edit properties" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:117 +msgid "" +"The :ref:`class_EditorProperty` class is a special type of :ref:" +"`class_Control` that can interact with the inspector dock's edited objects. " +"It doesn't display anything but can house any other control nodes, including " +"complex scenes." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:121 +msgid "" +"There are three essential parts to the script extending :ref:" +"`class_EditorProperty`:" +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:124 +msgid "" +"You must define the ``_init()`` method to set up the control nodes' " +"structure." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:127 +msgid "" +"You should implement the ``update_property()`` to handle changes to the data " +"from the outside." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:130 +msgid "" +"A signal must be emitted at some point to inform the inspector that the " +"control has changed the property using ``emit_changed``." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:133 +msgid "" +"You can display your custom widget in two ways. Use just the default " +"``add_child()`` method to display it to the right of the property name, and " +"use ``add_child()`` followed by ``set_bottom_editor()`` to position it below " +"the name." +msgstr "" + +#: ../../docs/tutorials/plugins/editor/inspector_plugins.rst:185 +msgid "" +"Using the example code above you should be able to make a custom widget that " +"replaces the default :ref:`class_SpinBox` control for integers with a :ref:" +"`class_Button` that generates random values." msgstr "" #: ../../docs/tutorials/plugins/editor/visual_shader_plugins.rst:4 @@ -73867,13 +76670,21 @@ msgid "" "generate the ``api.json`` with becomes your minimum version." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:49 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:51 +msgid "" +"`GDExtension `__ " +"has been merged in the ``master`` branch of godot-cpp, but it is only " +"compatible with the upcoming Godot 4.0. Therefore, you need to use the ``3." +"x`` branch of godot-cpp to use GDNative and follow this example." +msgstr "" + +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:56 msgid "" "If you are versioning your project using Git, it is a good idea to add them " "as Git submodules:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:71 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:78 msgid "" "If you decide to just download the repositories or clone them into your " "project folder, make sure to keep the folder layout identical to the one " @@ -73881,18 +76692,18 @@ msgid "" "project follows this layout." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:76 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:83 msgid "Do make sure you clone recursive to pull in both repositories:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:93 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:100 msgid "" "``godot-cpp`` now includes ``godot-headers`` as a nested submodule, if " "you've manually downloaded them please make sure to place ``godot-headers`` " "inside of the ``godot-cpp`` folder." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:97 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:104 msgid "" "You don't have to do it this way but we've found it easiest to manage. If " "you decide to just download the repositories or just clone them into your " @@ -73901,114 +76712,114 @@ msgid "" "layout." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:102 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:109 msgid "" "If you cloned the example from the link specified in the introduction, the " "submodules are not automatically initialized. You will need to execute the " "following commands:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:111 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:118 msgid "This will clone these two repositories into your project folder." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:114 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:121 msgid "Building the C++ bindings" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:116 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:123 msgid "" "Now that we've downloaded our prerequisites, it is time to build the C++ " "bindings." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:119 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:126 msgid "" "The repository contains a copy of the metadata for the current Godot " "release, but if you need to build these bindings for a newer version of " "Godot, simply call the Godot executable:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:127 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:134 msgid "" "Place the resulting ``api.json`` file in the project folder and add " "``use_custom_api_file=yes custom_api_file=../api.json`` to the scons command " "below." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:131 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:138 msgid "" "To generate and compile the bindings, use this command (replacing " "```` with ``windows``, ``linux`` or ``osx`` depending on your OS):" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:134 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:141 msgid "" "To speed up compilation, add `-jN` at the end of the SCons command line " "where `N` is the number of CPU threads you have on your system. The example " "below uses 4 threads." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:142 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:149 msgid "" "This step will take a while. When it is completed, you should have static " "libraries that can be compiled into your project stored in ``godot-cpp/bin/" "``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:145 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:152 msgid "" "At some point in the future, compiled binaries will be available, making " "this step optional." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:150 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:157 msgid "" "You may need to add ``bits=64`` to the command on Windows or Linux. We're " "still working on better auto detection." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:154 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:161 msgid "Creating a simple plugin" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:156 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:163 msgid "" "Now it's time to build an actual plugin. We'll start by creating an empty " "Godot project in which we'll place a few files." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:159 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:166 msgid "" "Open Godot and create a new project. For this example, we will place it in a " "folder called ``demo`` inside our GDNative module's folder structure." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:162 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:169 msgid "" "In our demo project, we'll create a scene containing a Node called \"Main\" " "and we'll save it as ``main.tscn``. We'll come back to that later." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:165 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:172 msgid "" "Back in the top-level GDNative module folder, we're also going to create a " "subfolder called ``src`` in which we'll place our source files." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:168 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:175 msgid "" "You should now have ``demo``, ``godot-cpp``, ``godot-headers``, and ``src`` " "directories in your GDNative module." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:171 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:178 msgid "" "In the ``src`` folder, we'll start with creating our header file for the " "GDNative node we'll be creating. We will name it ``gdexample.h``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:235 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:242 msgid "" "There are a few things of note to the above. We're including ``Godot.hpp`` " "which contains all our basic definitions. After that, we include ``Sprite." @@ -74016,31 +76827,31 @@ msgid "" "class in our module." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:240 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:247 msgid "" "We're using the namespace ``godot``, since everything in GDNative is defined " "within this namespace." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:243 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:250 msgid "" "Then we have our class definition, which inherits from our Sprite through a " "container class. We'll see a few side effects of this later on. The " "``GODOT_CLASS`` macro sets up a few internal things for us." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:247 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:254 msgid "After that, we declare a single member variable called ``time_passed``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:249 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:256 msgid "" "In the next block we're defining our methods, we obviously have our " "constructor and destructor defined, but there are two other functions that " "will likely look familiar to some, and one new method." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:253 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:260 msgid "" "The first is ``_register_methods``, which is a static function that Godot " "will call to find out which methods can be called on our NativeScript and " @@ -74051,11 +76862,11 @@ msgid "" "code in it." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:260 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:267 msgid "Let's implement our functions by creating our ``gdexample.cpp`` file:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:320 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:327 msgid "" "This one should be straightforward. We're implementing each method of our " "class that we defined in our header file. Note that the ``register_method`` " @@ -74064,7 +76875,7 @@ msgid "" "destructor and ``_init`` functions." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:326 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:333 msgid "" "The other method of note is our ``_process`` function, which simply keeps " "track of how much time has passed and calculates a new position for our " @@ -74075,7 +76886,7 @@ msgid "" "``set_position`` can be called directly on our class." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:334 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:341 msgid "" "There is one more C++ file we need; we'll name it ``gdlibrary.cpp``. Our " "GDNative plugin can contain multiple NativeScripts, each with their own " @@ -74084,13 +76895,13 @@ msgid "" "NativeScripts in our GDNative plugin." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:358 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:365 msgid "" "Note that we are not using the ``godot`` namespace here, since the three " "functions implemented here need to be defined without a namespace." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:361 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:368 msgid "" "The ``godot_gdnative_init`` and ``godot_gdnative_terminate`` functions get " "called respectively when Godot loads our plugin and when it unloads it. All " @@ -74099,7 +76910,7 @@ msgid "" "needs." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:367 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:374 msgid "" "The important function is the third function called " "``godot_nativescript_init``. We first call a function in our bindings " @@ -74107,11 +76918,11 @@ msgid "" "``register_class`` for each of our classes in our library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:373 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:380 msgid "Compiling the plugin" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:375 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:382 msgid "" "We cannot easily write by hand a ``SConstruct`` file that SCons would use " "for building. For the purpose of this example, just use :download:`this " @@ -74120,49 +76931,49 @@ msgid "" "files in a subsequent tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:383 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:390 msgid "" "This ``SConstruct`` file was written to be used with the latest ``godot-" "cpp`` master, you may need to make small changes using it with older " "versions or refer to the ``SConstruct`` file in the Godot 3.0 documentation." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:387 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:394 msgid "" "Once you've downloaded the ``SConstruct`` file, place it in your GDNative " "module folder besides ``godot-cpp``, ``godot-headers`` and ``demo``, then " "run:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:394 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:401 msgid "You should now be able to find the module in ``demo/bin/``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:398 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:405 msgid "" "Here, we've compiled both godot-cpp and our gdexample library as debug " "builds. For optimized builds, you should compile them using the " "``target=release`` switch." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:403 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:410 msgid "Using the GDNative module" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:405 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:412 msgid "" "Before we jump back into Godot, we need to create two more files in ``demo/" "bin/``. Both can be created using the Godot editor, but it may be faster to " "create them directly." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:409 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:416 msgid "" "The first one is a file that lets Godot know what dynamic libraries should " "be loaded for each platform and is called ``gdexample.gdnlib``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:433 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:440 msgid "" "This file contains a ``general`` section that controls how the module is " "loaded. It also contains a prefix section which should be left on ``godot_`` " @@ -74172,7 +76983,7 @@ msgid "" "linked statically." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:439 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:446 msgid "" "The ``entry`` section is the important bit: it tells Godot the location of " "the dynamic library in the project's filesystem for each supported platform. " @@ -74181,7 +76992,7 @@ msgid "" "incompatible with the target platform." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:445 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:452 msgid "" "Finally, the ``dependencies`` section allows you to name additional dynamic " "libraries that should be included as well. This is important when your " @@ -74189,20 +77000,20 @@ msgid "" "a third-party dynamic library with your project." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:450 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:457 msgid "" "If you double click on the ``gdexample.gdnlib`` file within Godot, you'll " "see there are far more options to set:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:455 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:462 msgid "" "The second file we need to create is a file used by each NativeScript we've " "added to our plugin. We'll name it ``gdexample.gdns`` for our gdexample " "NativeScript." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:471 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:478 msgid "" "This is a standard Godot resource; you could just create it directly in your " "scene, but saving it to a file makes it much easier to reuse it in other " @@ -74212,28 +77023,28 @@ msgid "" "use." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:477 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:484 msgid "" "Time to jump back into Godot. We load up the main scene we created way back " "in the beginning and now add a Sprite to our scene:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:482 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:489 msgid "" "We're going to assign the Godot logo to this sprite as our texture, disable " "the ``centered`` property and drag our ``gdexample.gdns`` file onto the " "``script`` property of the sprite:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:488 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:495 msgid "We're finally ready to run the project:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:493 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:500 msgid "Adding properties" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:495 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:502 msgid "" "GDScript allows you to add properties to your script using the ``export`` " "keyword. In GDNative you have to register the properties and there are two " @@ -74241,32 +77052,32 @@ msgid "" "and getter function." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:502 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:509 msgid "" "There is a third option, just like in GDScript you can directly implement " "the ``_get_property_list``, ``_get`` and ``_set`` methods of an object but " "that goes far beyond the scope of this tutorial." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:506 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:513 msgid "" "We'll examine both starting with the direct bind. Lets add a property that " "allows us to control the amplitude of our wave." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:509 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:516 msgid "" "In our ``gdexample.h`` file we simply need to add a member variable like so:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:519 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:526 msgid "" "In our ``gdexample.cpp`` file we need to make a number of changes, we will " "only show the methods we end up changing, don't remove the lines we're " "omitting:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:571 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:578 msgid "" "Once you compile the module with these changes in place you will see that a " "property has been added to our interface. You can now change this property " @@ -74274,41 +77085,41 @@ msgid "" "along a larger figure." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:578 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:585 msgid "" "The ``reloadable`` property in the ``gdexample.gdnlib`` file must be set to " "``true`` for the Godot editor to automatically pick up the newly added " "property." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:582 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:589 msgid "" "However, this setting should be used with care especially when tool classes " "are used, as the editor might hold objects then that have script instances " "attached to them that are managed by a GDNative library." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:586 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:593 msgid "" "Lets do the same but for the speed of our animation and use a setter and " "getter function. Our ``gdexample.h`` header file again only needs a few more " "lines of code:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:601 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:608 msgid "" "This requires a few more changes to our ``gdexample.cpp`` file, again we're " "only showing the methods that have changed so don't remove anything we're " "omitting:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:673 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:680 msgid "" "Now when the project is compiled we'll see another property called speed. " "Changing its value will make the animation go faster or slower." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:676 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:683 msgid "" "For this example there is no obvious advantage of using a setter and getter. " "It is just more code to write. For a simple example as this there may be a " @@ -74316,13 +77127,13 @@ msgid "" "but in many cases just binding the variable will be enough." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:681 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:688 msgid "" "Getters and setters become far more useful in more complex scenarios where " "you need to make additional choices based on the state of your object." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:686 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:693 msgid "" "For simplicity we've left out the optional parameters in the " "register_property method call. These parameters are " @@ -74330,14 +77141,14 @@ msgid "" "further configure how properties are displayed and set on the Godot side." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:691 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:698 msgid "" "Modern C++ compilers are able to infer the class and variable type and allow " "you to omit the ```` part of our ``register_property`` " "method. We've had mixed experiences with this however." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:698 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:705 msgid "" "Last but not least, signals fully work in GDNative as well. Having your " "module react to a signal given out by another object requires you to call " @@ -74345,17 +77156,17 @@ msgid "" "wobbling Godot icon, we would need to showcase a far more complete example." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:703 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:710 msgid "This however is the required syntax:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:714 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:721 msgid "" "Note that you can only call ``my_method`` if you've previously registered it " "in your ``_register_methods`` method." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:717 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:724 msgid "" "Having your object sending out signals is far more common. For our wobbling " "Godot icon we'll do something silly just to show how it works. We're going " @@ -74363,26 +77174,26 @@ msgid "" "along." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:721 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:728 msgid "" "In our ``gdexample.h`` header file we just need to define a new member " "``time_emit``:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:732 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:739 msgid "" "The changes in ``gdexample.cpp`` are a bit more elaborate this time. First " "you'll need to set ``time_emit = 0.0;`` in either our ``_init`` method or in " "our constructor. But the other two needed changes we'll look at one by one." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:736 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:743 msgid "" "In our ``_register_methods`` method we need to declare our signal and we do " "this as follows:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:763 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:770 msgid "" "Here we see a nice improvement in the latest version of godot-cpp where our " "``register_signal`` method can be a single call first taking the signals " @@ -74390,18 +77201,18 @@ msgid "" "each parameter we'll send along with this signal." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:768 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:775 msgid "" "For NativeScript 1.0 we first build a dictionary in which we tell Godot " "about the types of arguments we will pass to our signal, and then register " "it." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:771 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:778 msgid "Next we'll need to change our ``_process`` method:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:817 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:824 msgid "" "After a second has passed we emit our signal and reset our counter. Again in " "the new version of godot-cpp we can add our parameter values directly to " @@ -74409,22 +77220,22 @@ msgid "" "then call ``emit_signal``." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:822 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:829 msgid "" "Once compiled we can go into Godot and select our sprite node. On our " "``Node`` tab we find our new signal and link it up by pressing connect. " "We've added a script on our main node and implemented our signal like this:" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:833 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:840 msgid "Every second we simply output our position to the console." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:836 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:843 msgid "NativeScript 1.1 vs NativeScript 1.0" msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:838 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:845 msgid "" "So far in our example above there doesn't seem to be a lot of difference " "between the old and new syntax. The class is defined slightly differently " @@ -74432,7 +77243,7 @@ msgid "" "of our object. A lot of the improvements are hidden under the hood." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:843 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:850 msgid "" "This example only deals with simple variables and simple methods. Especially " "once you start passing references to other objects or when you start calling " @@ -74440,14 +77251,14 @@ msgid "" "show its benefits." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:851 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:858 msgid "" "The above is only a simple example, but we hope it shows you the basics. You " "can build upon this example to create full-fledged scripts to control nodes " "in Godot using C++." msgstr "" -#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:855 +#: ../../docs/tutorials/plugins/gdnative/gdnative-cpp-example.rst:862 msgid "" "You should be able to edit and recompile the plugin while the Godot editor " "remains open; just rerun the project after the library has finished building." @@ -74963,7 +77774,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/platform/android_in_app_purchases.rst:83 -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:115 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:127 msgid "Full example:" msgstr "" @@ -74978,36 +77789,44 @@ msgid "" "for it." msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:109 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:106 +msgid "" +"Then, wait for the ``_on_purchases_updated`` callback and handle the " +"purchase result:" +msgstr "" + +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:121 msgid "Check if the user purchased an item" msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:111 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:123 msgid "" "To get all purchases, call ``queryPurchases``. Unlike most of the other " "functions, ``queryPurchases`` is a synchronous operation and returns a :ref:" "`Dictionary ` with a status code and either an array of " -"purchases or an error message." +"purchases or an error message. Only active subscriptions and non-consumed " +"one-time purchases are returned." msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:129 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:142 msgid "Consumables" msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:131 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:144 msgid "" "If your in-app item is not a one-time purchase but a consumable item (e.g. " "coins) which can be purchased multiple times, you can consume an item by " "calling ``consumePurchase`` with a purchase token. Call ``queryPurchases`` " "to get the purchase token. Calling ``consumePurchase`` automatically " -"acknowledges a purchase." +"acknowledges a purchase. Consuming a product allows the user to purchase it " +"again, and removes it from appearing in subsequent ``queryPurchases`` calls." msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:148 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:161 msgid "Subscriptions" msgstr "" -#: ../../docs/tutorials/platform/android_in_app_purchases.rst:150 +#: ../../docs/tutorials/platform/android_in_app_purchases.rst:163 msgid "" "Subscriptions don't work much different from regular in-app items. Just use " "``\"subs\"`` as second argument to ``querySkuDetails`` to get subscription " @@ -75333,16 +78152,16 @@ msgstr "" msgid "Here's an example of how to do this in GDScript:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:34 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:40 msgid "Asynchronous methods" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:36 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:42 msgid "" "When requesting an asynchronous operation, the method will look like this:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:43 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:49 msgid "" "The parameter will usually be a Dictionary, with the information necessary " "to make the request, and the call will have two phases. First, the method " @@ -75353,7 +78172,7 @@ msgid "" "Example:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:70 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:76 msgid "" "Remember that when a call returns OK, the API will *always* produce an event " "through the pending_event interface, even if it's an error, or a network " @@ -75362,300 +78181,291 @@ msgid "" "way it should be treated as a bug." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:76 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:82 msgid "The pending event interface consists of two methods:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:78 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:84 msgid "" "``get_pending_event_count()`` Returns the number of pending events on the " "queue." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:81 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:87 msgid "" "``Variant pop_pending_event()`` Pops the first event from the queue and " "returns it." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:85 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:91 msgid "Store Kit" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:87 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:93 msgid "" "Implemented in `Godot iOS InAppStore plugin `_." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:89 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:95 msgid "" "The Store Kit API is accessible through the ``InAppStore`` singleton. It is " "initialized automatically." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:92 -msgid "``Error purchase(Variant p_params);``" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:98 +msgid "The following methods are available and documented below:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:93 -msgid "``Error request_product_info(Variant p_params);``" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:116 +msgid "``purchase``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:94 -msgid "``Error restore_purchases();``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:96 -msgid "and the pending_event interface" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:104 -msgid "purchase" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:106 -msgid "Purchases a product id through the Store Kit API." -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:111 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:118 msgid "" -"Takes a Dictionary as a parameter, with one field, ``product_id``, a string " -"with your product id. Example:" +"Purchases a product ID through the Store Kit API. You have to call " +"``finish_transaction(product_id)`` once you receive a successful response or " +"call ``set_auto_finish_transaction(true)`` prior to calling ``purchase()``. " +"These two methods ensure the transaction is completed." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:119 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:159 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:183 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:221 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:266 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:313 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:342 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:372 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:404 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:461 -msgid "Response event" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:121 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:161 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:223 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:268 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:315 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:344 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:374 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:406 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:463 -msgid "The response event will be a dictionary with the following fields:" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:123 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:225 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:270 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:317 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:346 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:376 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:408 -msgid "On error:" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:125 +msgid "" +"Takes a dictionary as a parameter, with one field, ``product_id``, a string " +"with your product ID. Example:" msgstr "" #: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:133 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:236 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:281 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:327 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:356 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:386 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:418 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:173 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:197 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:275 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:320 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:367 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:396 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:426 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:458 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:515 +msgid "Response event" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:135 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:175 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:277 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:322 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:369 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:398 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:428 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:460 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:517 +msgid "The response event will be a dictionary with the following fields:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:137 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:279 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:324 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:371 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:400 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:430 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:462 +msgid "On error:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:147 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:290 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:335 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:381 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:410 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:440 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:472 msgid "On success:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:144 -msgid "request_product_info" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:158 +msgid "``request_product_info``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:146 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:160 msgid "Requests the product info on a list of product IDs." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:151 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:165 msgid "" -"Takes a Dictionary as a parameter, with one field, ``product_ids``, a string " -"array with a list of product ids. Example:" +"Takes a dictionary as a parameter, with a single ``product_ids`` key to " +"which a string array of product IDs is assigned. Example:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:177 -msgid "restore_purchases" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:191 +msgid "``restore_purchases``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:179 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:193 msgid "" "Restores previously made purchases on user's account. This will create " -"response events for each previously purchased product id." +"response events for each previously purchased product ID." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:185 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:199 msgid "The response events will be dictionaries with the following fields:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:196 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:210 +msgid "``set_auto_finish_transaction``" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:212 +msgid "" +"If set to ``true``, once a purchase is successful, your purchase will be " +"finalized automatically. Call this method prior to calling ``purchase()``." +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:218 +msgid "" +"Takes a boolean as a parameter which specifies if purchases should be " +"automatically finalized. Example:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:226 +msgid "``finish_transaction``" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:228 +msgid "" +"If you don't want transactions to be automatically finalized, call this " +"method after you receive a successful purchase response." +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:235 +msgid "" +"Takes a string ``product_id`` as an argument. ``product_id`` specifies what " +"product to finalize the purchase on. Example:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:243 msgid "Game Center" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:198 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:245 msgid "" "Implemented in `Godot iOS GameCenter plugin `_." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:200 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:247 msgid "" -"The Game Center API is available through the ``GameCenter`` singleton. It " +"The Game Center API is available through the \"GameCenter\" singleton. It " "has the following methods:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:203 -msgid "``Error authenticate();``" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:262 +msgid "and the pending events interface:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:204 -msgid "``bool is_authenticated();``" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:270 +msgid "``authenticate``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:205 -msgid "``Error post_score(Variant p_score);``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:206 -msgid "``Error award_achievement(Variant p_params);``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:207 -msgid "``void reset_achievements();``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:208 -msgid "``void request_achievements();``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:209 -msgid "``void request_achievement_descriptions();``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:210 -msgid "``Error show_game_center(Variant p_params);``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:211 -msgid "``Error request_identity_verification_signature();``" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:213 -msgid "plus the standard pending event interface." -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:216 -msgid "authenticate" -msgstr "" - -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:218 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:272 msgid "Authenticates a user in Game Center." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:247 -msgid "post_score" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:301 +msgid "``post_score``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:249 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:303 msgid "Posts a score to a Game Center leaderboard." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:254 -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:443 -msgid "Takes a Dictionary as a parameter, with two fields:" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:308 +msgid "Takes a dictionary as a parameter, with two fields:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:256 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:310 msgid "``score`` a float number" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:257 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:311 msgid "``category`` a string with the category name" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:291 -msgid "award_achievement" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:345 +msgid "``award_achievement``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:293 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:347 msgid "Modifies the progress of a Game Center achievement." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:298 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:352 msgid "Takes a Dictionary as a parameter, with 3 fields:" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:300 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:354 msgid "``name`` (string) the achievement name" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:301 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:355 msgid "" "``progress`` (float) the achievement progress from 0.0 to 100.0 (passed to " "``GKAchievement::percentComplete``)" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:303 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:357 msgid "" "``show_completion_banner`` (bool) whether Game Center should display an " "achievement banner at the top of the screen" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:337 -msgid "reset_achievements" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:391 +msgid "``reset_achievements``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:339 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:393 msgid "Clears all Game Center achievements. The function takes no parameters." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:366 -msgid "request_achievements" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:420 +msgid "``request_achievements``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:368 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:422 msgid "" "Request all the Game Center achievements the player has made progress on. " "The function takes no parameters." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:398 -msgid "request_achievement_descriptions" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:452 +msgid "``request_achievement_descriptions``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:400 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:454 msgid "" "Request the descriptions of all existing Game Center achievements regardless " "of progress. The function takes no parameters." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:435 -msgid "show_game_center" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:489 +msgid "``show_game_center``" msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:437 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:491 msgid "" "Displays the built in Game Center overlay showing leaderboards, " "achievements, and challenges." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:445 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:497 +msgid "Takes a Dictionary as a parameter, with two fields:" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:499 msgid "" "``view`` (string) (optional) the name of the view to present. Accepts " "\"default\", \"leaderboards\", \"achievements\", or \"challenges\". Defaults " "to \"default\"." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:448 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:502 msgid "" "``leaderboard_name`` (string) (optional) the name of the leaderboard to " "present. Only used when \"view\" is \"leaderboards\" (or \"default\" is " @@ -75663,10 +78473,24 @@ msgid "" "the aggregate leaderboard." msgstr "" -#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:465 +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:519 msgid "On close:" msgstr "" +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:529 +msgid "Multi-platform games" +msgstr "" + +#: ../../docs/tutorials/platform/ios/plugins_for_ios.rst:531 +msgid "" +"When working on a multi-platform game, you won't always have the \"GameCenter" +"\" singleton available (for example when running on PC or Android). Because " +"the gdscript compiler looks up the singletons at compile time, you can't " +"just query the singletons to see and use what you need inside a conditional " +"block, you need to also define them as valid identifiers (local variable or " +"class member). This is an example of how to work around this in a class:" +msgstr "" + #: ../../docs/tutorials/platform/html5_shell_classref.rst:4 msgid "HTML5 shell class reference" msgstr "" @@ -76632,36 +79456,36 @@ msgstr "" #: ../../docs/tutorials/platform/consoles.rst:34 msgid "" -"Godot currently does not officially support consoles. The reasons for this " -"are:" +"Godot supports the Linux-based Steam Deck. The reason other consoles are not " +"officially supported are:" msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:36 +#: ../../docs/tutorials/platform/consoles.rst:37 msgid "" "To develop for consoles, one must be licensed as a company. As an open " "source project, Godot does not have such a legal figure." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:38 +#: ../../docs/tutorials/platform/consoles.rst:39 msgid "" "Console SDKs are secret and covered by non-disclosure agreements. Even if we " "could get access to them, we could not publish the platform-specific code " "under an open source license." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:41 +#: ../../docs/tutorials/platform/consoles.rst:42 msgid "" "Consoles require specialized hardware to develop for, so regular individuals " "can't create games for them anyway." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:44 +#: ../../docs/tutorials/platform/consoles.rst:45 msgid "" "However, it is still possible to port your games to consoles thanks to " "services provided by third-party companies." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:49 +#: ../../docs/tutorials/platform/consoles.rst:50 msgid "" "In practice, the process is quite similar to Unity and Unreal Engine, except " "that you need to contact a third-party developer to handle the porting " @@ -76671,34 +79495,34 @@ msgid "" "manufacturer's NDA." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:57 +#: ../../docs/tutorials/platform/consoles.rst:58 msgid "Third-party support" msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:59 +#: ../../docs/tutorials/platform/consoles.rst:60 msgid "" "Console ports of Godot are offered by third-party companies (which have " "ported Godot on their own). These companies also offer publishing of your " "games to various consoles." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:63 +#: ../../docs/tutorials/platform/consoles.rst:64 msgid "Following is the list of providers:" msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:65 +#: ../../docs/tutorials/platform/consoles.rst:66 msgid "" "`Lone Wolf Technology `_ offers Switch " "and PS4 porting and publishing of Godot games." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:67 +#: ../../docs/tutorials/platform/consoles.rst:68 msgid "" "`Pineapple Works `_ offers Switch and Xbox One " "porting and publishing of Godot games." msgstr "" -#: ../../docs/tutorials/platform/consoles.rst:70 +#: ../../docs/tutorials/platform/consoles.rst:71 msgid "" "If your company offers porting and/or publishing services for Godot games, " "feel free to `open an issue or pull request `, a thread ensures " "that all other threads will be blocked (put on suspended state) if they try " @@ -76767,15 +79597,15 @@ msgid "" "proceed with the lock (but only one at a time)." msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:71 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:76 msgid "Here is an example of using a Mutex:" msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:106 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:111 msgid "Semaphores" msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:108 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:113 msgid "" "Sometimes you want your thread to work *\"on demand\"*. In other words, tell " "it when to work and let it suspend when it isn't doing anything. For this, :" @@ -76784,7 +79614,7 @@ msgid "" "until some data arrives." msgstr "" -#: ../../docs/tutorials/threads/using_multiple_threads.rst:114 +#: ../../docs/tutorials/threads/using_multiple_threads.rst:119 msgid "" "The main thread, instead, uses :ref:`Semaphore." "post()` to signal that data is ready to be " @@ -76852,18 +79682,31 @@ msgid "" "(which is fully thread-safe) directly and not touching scene or resources." msgstr "" -#: ../../docs/tutorials/threads/thread_safe_apis.rst:53 +#: ../../docs/tutorials/threads/thread_safe_apis.rst:55 +msgid "" +"Instancing nodes that render anything in 2D or 3D (such as Sprite) is *not* " +"thread-safe by default. To make rendering thread-safe, set the **Rendering > " +"Threads > Thread Model** project setting to **Multi-Threaded**." +msgstr "" + +#: ../../docs/tutorials/threads/thread_safe_apis.rst:58 +msgid "" +"Note that the Multi-Threaded thread model has several known bugs, so it may " +"not be usable in all scenarios." +msgstr "" + +#: ../../docs/tutorials/threads/thread_safe_apis.rst:62 msgid "GDScript arrays, dictionaries" msgstr "" -#: ../../docs/tutorials/threads/thread_safe_apis.rst:55 +#: ../../docs/tutorials/threads/thread_safe_apis.rst:64 msgid "" -"In GDScript, reading and writing elements from multiple threads is ok, but " +"In GDScript, reading and writing elements from multiple threads is OK, but " "anything that changes the container size (resizing, adding or removing " "elements) requires locking a mutex." msgstr "" -#: ../../docs/tutorials/threads/thread_safe_apis.rst:60 +#: ../../docs/tutorials/threads/thread_safe_apis.rst:69 msgid "" "Modifying a unique resource from multiple threads is not supported. However " "handling references on multiple threads is supported, hence loading " @@ -76991,7 +79834,7 @@ msgstr "" #: ../../docs/tutorials/content/procedural_geometry/index.rst:81 #: ../../docs/tutorials/content/procedural_geometry/arraymesh.rst:48 -#: ../../docs/development/file_formats/tscn.rst:325 +#: ../../docs/development/file_formats/tscn.rst:327 msgid "ArrayMesh" msgstr "" @@ -77086,15 +79929,15 @@ msgstr "" #: ../../docs/tutorials/content/procedural_geometry/index.rst:124 msgid "" "Using an ArrayMesh is slightly faster than using a SurfaceTool, but the API " -"is more a little more challenging. Additionally, SurfaceTool has a few " -"quality of life methods such as ``generate_normals()`` and ``index()``." +"is a little more challenging. Additionally, SurfaceTool has a few quality of " +"life methods such as ``generate_normals()`` and ``index()``." msgstr "" #: ../../docs/tutorials/content/procedural_geometry/index.rst:127 msgid "" "ImmediateGeometry regenerates the mesh every frame, so it is much slower " "than ArrayMesh or SurfaceTool. However, if you need the geometry to change " -"every frame anyway it provides a much easier interface that may even be a " +"every frame anyway, it provides a much easier interface that may even be a " "little faster than generating an ArrayMesh every frame." msgstr "" @@ -77103,7 +79946,7 @@ msgid "" "The MeshDataTool is not fast, but it gives you access to all kinds of " "properties of the mesh that you don't get with the others (edges, faces, " "etc.). It is incredibly useful when you need that sort of data to transform " -"the mesh, but it is not a good idea to use if that information is not " +"the mesh, but it is not a good idea to use it if that information is not " "needed. The MeshDataTool is best used if you are going to be using an " "algorithm that requires access to the face or edge array." msgstr "" @@ -77451,10 +80294,21 @@ msgstr "" #: ../../docs/tutorials/content/procedural_geometry/surfacetool.rst:90 msgid "" "If you don't add custom normals yourself, you can add them using " -"``generate_normals()``. The same goes for tangents." +"``generate_normals()``, which should be called after generating geometry and " +"before committing the mesh using ``commit()`` or ``commit_to_arrays()``. " +"Calling ``generate_normals(true)`` will flip the resulting normals. As a " +"side note, ``generate_normals()`` only works if the primitive type is set to " +"``Mesh.PRIMITIVE_TRIANGLES``." msgstr "" -#: ../../docs/tutorials/content/procedural_geometry/surfacetool.rst:98 +#: ../../docs/tutorials/content/procedural_geometry/surfacetool.rst:95 +msgid "" +"If you don't add custom tangents, they can be added with " +"``generate_tangents()``, but it requires that each vertex have UVs and " +"normals set already." +msgstr "" + +#: ../../docs/tutorials/content/procedural_geometry/surfacetool.rst:104 msgid "" "By default, when generating normals, they will be calculated on a per-face " "basis. If you want smooth vertex normals, when adding vertices, call " @@ -80167,12 +83021,10 @@ msgstr "" #: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:33 msgid "" "One way we can potentially reduce the amount to be rendered is to take " -"advantage of occlusion. As of Godot 3.3, there is no built in support for " -"occlusion in Godot. However, with careful design you can still get many of " -"the advantages." +"advantage of occlusion." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:37 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:36 msgid "" "For instance, in our city street scenario, you may be able to work out in " "advance that you can only see two other streets, ``B`` and ``C``, from " @@ -80181,38 +83033,56 @@ msgid "" "``A`` (perhaps using Godot Areas), then you can hide the other streets." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:43 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:42 msgid "" -"This is a manual version of what is known as a \"potentially visible set\". " -"It is a very powerful technique for speeding up rendering. You can also use " -"it to restrict physics or AI to the local area, and speed these up as well " -"as rendering." +"This example is a manual version of what is known as a *potentially visible " +"set*. It is a very powerful technique for speeding up rendering. You can " +"also use it to restrict physics or AI to the local area, and speed these up " +"as well as rendering." +msgstr "" + +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:48 +msgid "Portal Rendering" msgstr "" #: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:50 msgid "" -"In some cases, you may have to adapt your level design to add more occlusion " -"opportunities. For example, you may have to add more walls to prevent the " -"player from seeing too far away, which would decrease performance due to the " -"lost opportunies for occlusion culling." +"However, there is a much easier way to take advantage of occlusion. Godot " +"features an advanced portal rendering system, which can perform occlusion " +"culling from cameras and lights. See :ref:`doc_rooms_and_portals`." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:56 -msgid "Other occlusion techniques" -msgstr "" - -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:58 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:54 msgid "" -"There are other occlusion techniques such as portals, automatic PVS, and " -"raster-based occlusion culling. Some of these may be available through add-" -"ons and may be available in core Godot in the future." +"This is not a fully automatic system and it requires some manual setup. " +"However, it potentially offers significant performance increases." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:63 -msgid "Transparent objects" +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:59 +msgid "" +"In some cases, you can adapt your level design to add more occlusion " +"opportunities. For example, you can add more walls to prevent the player " +"from seeing too far away, which would decrease performance due to the lost " +"opportunies for occlusion culling." msgstr "" #: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:65 +msgid "Other occlusion techniques" +msgstr "" + +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:67 +msgid "" +"As well as the portal system and manual methods, there are various other " +"occlusion techniques such as raster-based occlusion culling. Some of these " +"may be available through add-ons or may be available in core Godot in the " +"future." +msgstr "" + +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:72 +msgid "Transparent objects" +msgstr "" + +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:74 msgid "" "Godot sorts objects by :ref:`Material ` and :ref:`Shader " "` to improve performance. This, however, can not be done with " @@ -80223,17 +83093,17 @@ msgid "" "material." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:73 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:82 msgid "" "For more information, see the :ref:`GPU optimizations " "` doc." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:77 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:86 msgid "Level of detail (LOD)" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:79 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:88 msgid "" "In some situations, particularly at a distance, it can be a good idea to " "**replace complex geometry with simpler versions**. The end user will " @@ -80243,11 +83113,11 @@ msgid "" "use transparency to simulate more complex geometry." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:87 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:96 msgid "Billboards and imposters" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:89 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:98 msgid "" "The simplest version of using transparency to deal with LOD is billboards. " "For example, you can use a single transparent quad to represent a tree at " @@ -80257,14 +83127,14 @@ msgid "" "`doc_gpu_optimization`)." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:95 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:104 msgid "" "An alternative is to render not just one tree, but a number of trees " "together as a group. This can be especially effective if you can see an area " "but cannot physically approach it in a game." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:99 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:108 msgid "" "You can make imposters by pre-rendering views of an object at different " "angles. Or you can even go one step further, and periodically re-render a " @@ -80274,11 +83144,11 @@ msgid "" "it depending on the type of project you are making." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:107 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:116 msgid "Use instancing (MultiMesh)" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:109 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:118 msgid "" "If several identical objects have to be drawn in the same place or nearby, " "try using :ref:`MultiMesh ` instead. MultiMesh allows the " @@ -80287,15 +83157,15 @@ msgid "" "thousands of identical objects." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:115 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:124 msgid "Also see the :ref:`Using MultiMesh ` doc." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:118 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:127 msgid "Bake lighting" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:120 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:129 msgid "" "Lighting objects is one of the most costly rendering operations. Realtime " "lighting, shadows (especially multiple lights), and GI are especially " @@ -80303,25 +83173,25 @@ msgid "" "handle." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:124 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:133 msgid "" "**Consider using baked lighting**, especially for mobile. This can look " "fantastic, but has the downside that it will not be dynamic. Sometimes, this " "is a trade-off worth making." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:128 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:137 msgid "" "In general, if several lights need to affect a scene, it's best to use :ref:" "`doc_baked_lightmaps`. Baking can also improve the scene quality by adding " "indirect light bounces." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:133 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:142 msgid "Animation and skinning" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:135 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:144 msgid "" "Animation and vertex animation such as skinning and morphing can be very " "expensive on some platforms. You may need to lower the polycount " @@ -80329,24 +83199,24 @@ msgid "" "any one time." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:140 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:149 msgid "Large worlds" msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:142 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:151 msgid "" "If you are making large worlds, there are different considerations than what " "you may be familiar with from smaller games." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:145 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:154 msgid "" "Large worlds may need to be built in tiles that can be loaded on demand as " "you move around the world. This can prevent memory use from getting out of " "hand, and also limit the processing needed to the local area." msgstr "" -#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:149 +#: ../../docs/tutorials/optimization/optimizing_3d_performance.rst:158 msgid "" "There may also be rendering and physics glitches due to floating point error " "in large worlds. You may be able to use techniques such as orienting the " @@ -83075,7 +85945,7 @@ msgid "" msgstr "" #: ../../docs/tutorials/legal/complying_with_licenses.rst:32 -#: ../../docs/tutorials/legal/complying_with_licenses.rst:118 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:121 msgid "" "Permission is hereby granted, free of charge, to any person obtaining a copy " "of this software and associated documentation files (the \"Software\"), to " @@ -83086,14 +85956,14 @@ msgid "" msgstr "" #: ../../docs/tutorials/legal/complying_with_licenses.rst:34 -#: ../../docs/tutorials/legal/complying_with_licenses.rst:120 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:123 msgid "" "The above copyright notice and this permission notice shall be included in " "all copies or substantial portions of the Software." msgstr "" #: ../../docs/tutorials/legal/complying_with_licenses.rst:36 -#: ../../docs/tutorials/legal/complying_with_licenses.rst:122 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:125 msgid "" "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR " "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, " @@ -83219,47 +86089,53 @@ msgid "" "freetype.org). All rights reserved." msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:110 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:109 +msgid "" +"Note that should correspond to the value from the FreeType version " +"used in your build." +msgstr "" + +#: ../../docs/tutorials/legal/complying_with_licenses.rst:113 msgid "ENet" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:112 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:115 msgid "" "Godot includes the `ENet `_ library to handle high-" "level multiplayer. ENet has similar licensing terms as Godot:" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:116 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:119 msgid "Copyright (c) 2002-2020 Lee Salzman" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:125 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:128 msgid "MBedTLS" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:127 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:130 msgid "" "If the project is done with Godot 3.1 or above and it utilizes SSL (usually " "through HTTP requests), the `MBedTLS `_ Apache license " "needs to be complied by including the following text:" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:131 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:134 msgid "Copyright The Mbed TLS Contributors" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:133 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:136 msgid "" "Licensed under the Apache License, Version 2.0 (the \"License\"); you may " "not use this file except in compliance with the License. You may obtain a " "copy of the License at" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:137 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:140 msgid "http://www.apache.org/licenses/LICENSE-2.0" msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:139 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:142 msgid "" "Unless required by applicable law or agreed to in writing, software " "distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT " @@ -83268,7 +86144,7 @@ msgid "" "under the License." msgstr "" -#: ../../docs/tutorials/legal/complying_with_licenses.rst:145 +#: ../../docs/tutorials/legal/complying_with_licenses.rst:148 msgid "" "Keep in mind that Godot 2.x and 3.0 use `OpenSSL `_ " "instead." @@ -83780,34 +86656,28 @@ msgid "" "2019, you need at least SCons 3.1.1." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:22 -msgid "" -"*Optional* - `yasm `_ (for WebM SIMD " -"optimizations)" -msgstr "" - -#: ../../docs/development/compiling/compiling_for_windows.rst:24 +#: ../../docs/development/compiling/compiling_for_windows.rst:23 msgid "" "If you have `Scoop `_ installed, you can easily install " "MinGW and other dependencies using the following command::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:29 +#: ../../docs/development/compiling/compiling_for_windows.rst:28 msgid "" "If you have `MSYS2 `_ installed, you can easily " "install MinGW and other dependencies using the following command::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:37 +#: ../../docs/development/compiling/compiling_for_windows.rst:34 msgid "" "For each MSYS2 MinGW subsystem, you should then run `pip3 install scons` in " "its shell." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:40 +#: ../../docs/development/compiling/compiling_for_windows.rst:37 #: ../../docs/development/compiling/compiling_for_x11.rst:29 #: ../../docs/development/compiling/compiling_for_osx.rst:33 -#: ../../docs/development/compiling/compiling_for_android.rst:39 +#: ../../docs/development/compiling/compiling_for_android.rst:38 #: ../../docs/development/compiling/compiling_for_ios.rst:16 #: ../../docs/development/compiling/compiling_for_uwp.rst:29 #: ../../docs/development/compiling/compiling_for_web.rst:17 @@ -83816,37 +86686,37 @@ msgid "" "`doc_introduction_to_the_buildsystem`." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:44 +#: ../../docs/development/compiling/compiling_for_windows.rst:41 msgid "Setting up Python" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:46 +#: ../../docs/development/compiling/compiling_for_windows.rst:43 msgid "" "First you need to install Python 3.5 or newer. Make sure to enable the " "option to add Python to the ``PATH`` in the Python installer. The SCons " "installer should then detect and use the existing Python installation." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:51 +#: ../../docs/development/compiling/compiling_for_windows.rst:48 msgid "Setting up SCons" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:53 +#: ../../docs/development/compiling/compiling_for_windows.rst:50 msgid "To install SCons open the command prompt and run the following command." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:55 +#: ../../docs/development/compiling/compiling_for_windows.rst:52 msgid "``python -m pip3 install scons``" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:57 +#: ../../docs/development/compiling/compiling_for_windows.rst:54 msgid "" "To check whether you have installed Python and SCons correctly, you can type " "``python --version`` and ``scons --version`` into a command prompt (``cmd." "exe``)." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:61 +#: ../../docs/development/compiling/compiling_for_windows.rst:58 msgid "" "If the commands above don't work, make sure to add Python to your ``PATH`` " "environment variable after installing it, then check again. You can do so by " @@ -83854,23 +86724,23 @@ msgid "" "the ``PATH``." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:69 +#: ../../docs/development/compiling/compiling_for_windows.rst:66 msgid "Installing Visual Studio caveats" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:71 +#: ../../docs/development/compiling/compiling_for_windows.rst:68 msgid "" "If installing Visual Studio 2017 or 2019, make sure to enable **C++** in the " "list of workflows to install." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:74 +#: ../../docs/development/compiling/compiling_for_windows.rst:71 msgid "" "If installing Visual Studio 2015, make sure to run a **Custom** installation " "instead of **Typical** and select **C++** as a language there." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:77 +#: ../../docs/development/compiling/compiling_for_windows.rst:74 msgid "" "If you've already made the mistake of installing Visual Studio without C++ " "support, run the installer again; it should present you a **Modify** button. " @@ -83878,31 +86748,31 @@ msgid "" "**Repair** option, which won't let you install C++ tools." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:83 +#: ../../docs/development/compiling/compiling_for_windows.rst:80 msgid "Downloading Godot's source" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:85 +#: ../../docs/development/compiling/compiling_for_windows.rst:82 msgid "" "Godot's source code is `hosted on GitHub `_. Downloading it (cloning) using `Git `_ is " "recommended." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:88 +#: ../../docs/development/compiling/compiling_for_windows.rst:85 msgid "" "The tutorial will assume from now on that you placed the source code in ``C:" "\\godot``." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:93 +#: ../../docs/development/compiling/compiling_for_windows.rst:90 msgid "" "To prevent slowdowns caused by continuous virus scanning during compilation, " "add the Godot source folder to the list of exceptions in your antivirus " "software." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:97 +#: ../../docs/development/compiling/compiling_for_windows.rst:94 msgid "" "For Windows Defender, hit the :kbd:`Windows` key, type \"Windows Defender " "Settings\" then hit :kbd:`Enter`. Under **Virus & threat protection**, go to " @@ -83910,11 +86780,11 @@ msgid "" "Click **Add or remove exclusions** then add the Godot source folder." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:107 +#: ../../docs/development/compiling/compiling_for_windows.rst:104 msgid "Selecting a compiler" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:109 +#: ../../docs/development/compiling/compiling_for_windows.rst:106 msgid "" "SCons will automatically find and use an existing Visual Studio " "installation. If you do not have Visual Studio installed, it will attempt to " @@ -83924,7 +86794,7 @@ msgid "" "exe`` or PowerShell instead." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:116 +#: ../../docs/development/compiling/compiling_for_windows.rst:113 msgid "" "During development, using the Visual Studio compiler is usually a better " "idea, as it links the Godot binary much faster than MinGW. However, MinGW " @@ -83932,34 +86802,34 @@ msgid "" "below), making it a better choice for production use." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:122 +#: ../../docs/development/compiling/compiling_for_windows.rst:119 msgid "Running SCons" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:124 +#: ../../docs/development/compiling/compiling_for_windows.rst:121 msgid "" "After opening a command prompt, change to the root directory of the engine " "source code (using ``cd``) and type::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:129 +#: ../../docs/development/compiling/compiling_for_windows.rst:126 msgid "You can specify a number of CPU threads to use to speed up the build::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:133 +#: ../../docs/development/compiling/compiling_for_windows.rst:130 msgid "" "In general, it is OK to have at least as many threads compiling Godot as you " "have cores in your CPU, if not one or two more. Feel free to add the ``-j`` " "option to any SCons command you see below." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:137 +#: ../../docs/development/compiling/compiling_for_windows.rst:134 msgid "" "When compiling with multiple CPU threads, SCons may warn about pywin32 being " "missing. You can safely ignore this warning." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:140 +#: ../../docs/development/compiling/compiling_for_windows.rst:137 msgid "" "If all goes well, the resulting binary executable will be placed in ``C:" "\\godot\\bin\\`` with the name ``godot.windows.tools.32.exe`` or ``godot." @@ -83968,13 +86838,13 @@ msgid "" "``bits=32``." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:146 +#: ../../docs/development/compiling/compiling_for_windows.rst:143 msgid "" "This executable file contains the whole engine and runs without any " "dependencies. Running it will bring up the Project Manager." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:149 +#: ../../docs/development/compiling/compiling_for_windows.rst:146 #: ../../docs/development/compiling/compiling_for_x11.rst:123 msgid "" "If you are compiling Godot for production use, then you can make the final " @@ -83982,7 +86852,7 @@ msgid "" "``target=release_debug``." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:153 +#: ../../docs/development/compiling/compiling_for_windows.rst:150 msgid "" "If you are compiling Godot with MinGW, you can make the binary even smaller " "and faster by adding the SCons option ``use_lto=yes``. As link-time " @@ -83990,7 +86860,7 @@ msgid "" "available RAM while compiling." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:158 +#: ../../docs/development/compiling/compiling_for_windows.rst:155 #: ../../docs/development/compiling/compiling_for_x11.rst:132 #: ../../docs/development/compiling/compiling_for_osx.rst:58 msgid "" @@ -83999,30 +86869,30 @@ msgid "" "by creating a file called ``._sc_`` or ``_sc_`` in the ``bin/`` folder." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:164 +#: ../../docs/development/compiling/compiling_for_windows.rst:161 msgid "Development in Visual Studio or other IDEs" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:166 +#: ../../docs/development/compiling/compiling_for_windows.rst:163 msgid "" "For most projects, using only scripting is enough but when development in C+" "+ is needed, for creating modules or extending the engine, working with an " "IDE is usually desirable." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:170 +#: ../../docs/development/compiling/compiling_for_windows.rst:167 msgid "" "You can create a Visual Studio solution via SCons by running SCons with the " "``vsproj=yes`` parameter, like this::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:175 +#: ../../docs/development/compiling/compiling_for_windows.rst:172 msgid "" "You will be able to open Godot's source in a Visual Studio solution now, and " "able to build Godot using Visual Studio's **Build** button." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:178 +#: ../../docs/development/compiling/compiling_for_windows.rst:175 msgid "" "If you need to edit the build commands, they are located in \"Godot\" " "project settings, NMAKE sheet. SCons is called at the end of the commands. " @@ -84031,11 +86901,11 @@ msgid "" "they are equivalent." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:185 +#: ../../docs/development/compiling/compiling_for_windows.rst:182 msgid "Cross-compiling for Windows from other operating systems" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:187 +#: ../../docs/development/compiling/compiling_for_windows.rst:184 msgid "" "If you are a Linux or macOS user, you need to install `MinGW-w64 `__, which typically comes in 32-bit and 64-bit " @@ -84043,98 +86913,98 @@ msgid "" "some known ones:" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:193 +#: ../../docs/development/compiling/compiling_for_windows.rst:190 #: ../../docs/development/compiling/compiling_for_x11.rst:40 msgid "**Arch Linux**" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:193 +#: ../../docs/development/compiling/compiling_for_windows.rst:190 msgid "Install `mingw-w64-gcc from the AUR`_." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:195 +#: ../../docs/development/compiling/compiling_for_windows.rst:192 #: ../../docs/development/compiling/compiling_for_x11.rst:45 msgid "**Debian** / **Ubuntu**" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:199 +#: ../../docs/development/compiling/compiling_for_windows.rst:196 #: ../../docs/development/compiling/compiling_for_x11.rst:50 msgid "**Fedora**" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:204 +#: ../../docs/development/compiling/compiling_for_windows.rst:201 msgid "**macOS**" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:208 +#: ../../docs/development/compiling/compiling_for_windows.rst:205 #: ../../docs/development/compiling/compiling_for_x11.rst:67 msgid "**Mageia**" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:216 +#: ../../docs/development/compiling/compiling_for_windows.rst:213 msgid "" "Before attempting the compilation, SCons will check for the following " "binaries in your ``PATH`` environment variable::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:222 +#: ../../docs/development/compiling/compiling_for_windows.rst:219 msgid "" "If the binaries are not located in the ``PATH`` (e.g. ``/usr/bin``), you can " "define the following environment variables to give a hint to the build " "system::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:229 +#: ../../docs/development/compiling/compiling_for_windows.rst:226 msgid "" "To make sure you are doing things correctly, executing the following in the " "shell should result in a working compiler (the version output may differ " "based on your system)::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:239 +#: ../../docs/development/compiling/compiling_for_windows.rst:236 msgid "" "Cross-compiling from some Ubuntu versions may lead to `this bug `_, due to a default configuration " "lacking support for POSIX threading." msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:243 +#: ../../docs/development/compiling/compiling_for_windows.rst:240 msgid "" "You can change that configuration following those instructions, for 64-bit::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:251 +#: ../../docs/development/compiling/compiling_for_windows.rst:248 msgid "And for 32-bit::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:259 +#: ../../docs/development/compiling/compiling_for_windows.rst:256 msgid "Creating Windows export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:261 +#: ../../docs/development/compiling/compiling_for_windows.rst:258 msgid "" "Windows export templates are created by compiling Godot without the editor, " "with the following flags::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:269 +#: ../../docs/development/compiling/compiling_for_windows.rst:266 msgid "" "If you plan on replacing the standard export templates, copy these to the " "following location, replacing ```` with the version identifier " "(such as ``3.1.1.stable`` or ``3.2.dev``)::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:275 +#: ../../docs/development/compiling/compiling_for_windows.rst:272 msgid "With the following names::" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:282 +#: ../../docs/development/compiling/compiling_for_windows.rst:279 msgid "" "However, if you are using custom modules or custom engine code, you may " "instead want to configure your binaries as custom export templates here:" msgstr "" -#: ../../docs/development/compiling/compiling_for_windows.rst:288 +#: ../../docs/development/compiling/compiling_for_windows.rst:285 msgid "" "You don't need to copy them in this case, just reference the resulting files " "in the ``bin\\`` directory of your Godot source folder, so the next time you " @@ -84284,17 +87154,23 @@ msgstr "" #: ../../docs/development/compiling/compiling_for_x11.rst:145 #: ../../docs/development/compiling/compiling_for_osx.rst:80 msgid "" +"To compile a debug *server* build which can be used with :ref:`remote " +"debugging tools `, use::" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_x11.rst:150 +msgid "" "To compile a *server* build which is optimized to run dedicated game " "servers, use::" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:151 -#: ../../docs/development/compiling/compiling_for_osx.rst:86 +#: ../../docs/development/compiling/compiling_for_x11.rst:156 +#: ../../docs/development/compiling/compiling_for_osx.rst:91 #: ../../docs/development/compiling/compiling_for_web.rst:21 msgid "Building export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:153 +#: ../../docs/development/compiling/compiling_for_x11.rst:158 msgid "" "Linux binaries usually won't run on distributions that are older than the " "distribution they were built on. If you wish to distribute binaries that " @@ -84303,84 +87179,84 @@ msgid "" "a suitable build environment." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:161 +#: ../../docs/development/compiling/compiling_for_x11.rst:166 msgid "" "To build X11 (Linux, \\*BSD) export templates, run the build system with the " "following parameters:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:164 +#: ../../docs/development/compiling/compiling_for_x11.rst:169 msgid "(32 bits)" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:171 +#: ../../docs/development/compiling/compiling_for_x11.rst:176 msgid "(64 bits)" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:178 +#: ../../docs/development/compiling/compiling_for_x11.rst:183 msgid "" "Note that cross-compiling for the opposite bits (64/32) as your host " "platform is not always straight-forward and might need a chroot environment." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:181 +#: ../../docs/development/compiling/compiling_for_x11.rst:186 msgid "" "To create standard export templates, the resulting files must be copied to:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:187 +#: ../../docs/development/compiling/compiling_for_x11.rst:192 msgid "" "and named like this (even for \\*BSD which is seen as \"Linux X11\" by " "Godot):" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:196 +#: ../../docs/development/compiling/compiling_for_x11.rst:201 msgid "" "However, if you are writing your custom modules or custom C++ code, you " "might instead want to configure your binaries as custom export templates " "here:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:202 +#: ../../docs/development/compiling/compiling_for_x11.rst:207 msgid "" "You don't even need to copy them, you can just reference the resulting files " "in the ``bin/`` directory of your Godot source folder, so the next time you " "build, you automatically have the custom templates referenced." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:207 +#: ../../docs/development/compiling/compiling_for_x11.rst:212 msgid "Using Clang and LLD for faster development" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:209 +#: ../../docs/development/compiling/compiling_for_x11.rst:214 msgid "" "You can also use Clang and LLD to build Godot. This has two upsides compared " "to the default GCC + GNU ld setup:" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:212 +#: ../../docs/development/compiling/compiling_for_x11.rst:217 msgid "" "LLD links Godot significantly faster compared to GNU ld or gold. This leads " "to faster iteration times." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:214 +#: ../../docs/development/compiling/compiling_for_x11.rst:219 msgid "Clang tends to give more useful error messages compared to GCC." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:216 +#: ../../docs/development/compiling/compiling_for_x11.rst:221 msgid "" "To do so, install Clang and the ``lld`` package from your distribution's " "package manager then use the following SCons command::" msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:221 +#: ../../docs/development/compiling/compiling_for_x11.rst:226 msgid "" "After the build is completed, a new binary with a ``.llvm`` suffix will be " "created in the ``bin/`` folder." msgstr "" -#: ../../docs/development/compiling/compiling_for_x11.rst:224 +#: ../../docs/development/compiling/compiling_for_x11.rst:229 msgid "" "It's still recommended to use GCC for production builds as they can be " "compiled using link-time optimization, making the resulting binaries smaller " @@ -84466,35 +87342,41 @@ msgid "" "optimized editor binary built with ``target=release_debug``::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:88 +#: ../../docs/development/compiling/compiling_for_osx.rst:85 +msgid "" +"To compile a release *server* build which is optimized to run dedicated game " +"servers, use::" +msgstr "" + +#: ../../docs/development/compiling/compiling_for_osx.rst:93 msgid "" "To build macOS export templates, you have to compile with ``tools=no`` (no " "editor) and respectively for ``target=release`` (release template) and " "``target=release_debug``." msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:92 +#: ../../docs/development/compiling/compiling_for_osx.rst:97 msgid "" "Official templates are universal binaries which support both Intel x86_64 " "and ARM64 architectures. You can also create export templates that support " "only one of those two architectures by leaving out the ``lipo`` step below." msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:96 +#: ../../docs/development/compiling/compiling_for_osx.rst:101 msgid "For Intel x86_64::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:101 +#: ../../docs/development/compiling/compiling_for_osx.rst:106 msgid "For ARM64 (Apple M1)::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:106 +#: ../../docs/development/compiling/compiling_for_osx.rst:111 msgid "" "To support both architectures in a single \"Universal 2\" binary, run the " "above two commands blocks and then use ``lipo`` to bundle them together::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:112 +#: ../../docs/development/compiling/compiling_for_osx.rst:117 msgid "" "To create an ``.app`` bundle like in the official builds, you need to use " "the template located in ``misc/dist/osx_template.app``. The release and " @@ -84505,17 +87387,17 @@ msgid "" "specific binaries)::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:125 +#: ../../docs/development/compiling/compiling_for_osx.rst:130 msgid "" "You can then zip the ``osx_template.app`` folder to reproduce the ``osx." "zip`` template from the official Godot distribution::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:131 +#: ../../docs/development/compiling/compiling_for_osx.rst:136 msgid "Cross-compiling for macOS from Linux" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:133 +#: ../../docs/development/compiling/compiling_for_osx.rst:138 msgid "" "It is possible to compile for macOS in a Linux environment (and maybe also " "in Windows using the Windows Subsystem for Linux). For that, you'll need to " @@ -84523,37 +87405,37 @@ msgid "" "to use macOS as a target. First, follow the instructions to install it:" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:138 +#: ../../docs/development/compiling/compiling_for_osx.rst:143 msgid "" "Clone the `OSXCross repository `__ " "somewhere on your machine (or download a ZIP file and extract it somewhere), " "e.g.::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:144 +#: ../../docs/development/compiling/compiling_for_osx.rst:149 msgid "" "Follow the instructions to package the SDK: https://github.com/tpoechtrager/" "osxcross#packaging-the-sdk" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:146 +#: ../../docs/development/compiling/compiling_for_osx.rst:151 msgid "" "Follow the instructions to install OSXCross: https://github.com/tpoechtrager/" "osxcross#installation" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:149 +#: ../../docs/development/compiling/compiling_for_osx.rst:154 msgid "" "After that, you will need to define the ``OSXCROSS_ROOT`` as the path to the " "OSXCross installation (the same place where you cloned the repository/" "extracted the zip), e.g.::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:155 +#: ../../docs/development/compiling/compiling_for_osx.rst:160 msgid "Now you can compile with SCons like you normally would::" msgstr "" -#: ../../docs/development/compiling/compiling_for_osx.rst:159 +#: ../../docs/development/compiling/compiling_for_osx.rst:164 msgid "" "If you have an OSXCross SDK version different from the one expected by the " "SCons buildsystem, you can specify a custom one with the ``osxcross_sdk`` " @@ -84615,66 +87497,62 @@ msgid "Gradle (will be downloaded and installed automatically if missing)." msgstr "" #: ../../docs/development/compiling/compiling_for_android.rst:34 -msgid "JDK 8 (either OpenJDK or Oracle JDK)." +msgid "JDK 11 (either OpenJDK or Oracle JDK)." msgstr "" #: ../../docs/development/compiling/compiling_for_android.rst:36 -msgid "JDK 9 or later are not currently supported." -msgstr "" - -#: ../../docs/development/compiling/compiling_for_android.rst:37 msgid "" "You can download a build from `ojdkbuild `_." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:45 +#: ../../docs/development/compiling/compiling_for_android.rst:44 msgid "Setting up the buildsystem" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:47 +#: ../../docs/development/compiling/compiling_for_android.rst:46 msgid "" "Set the environment variable ``ANDROID_SDK_ROOT`` to point to the Android " "SDK. If you downloaded the Android command-line tools, this would be the " "folder where you extracted the contents of the ZIP archive." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:51 +#: ../../docs/development/compiling/compiling_for_android.rst:50 msgid "Install the necessary SDK components in this folder:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:53 +#: ../../docs/development/compiling/compiling_for_android.rst:52 msgid "" "Accept the SDK component licenses by running the following command where " "``android_sdk_path`` is the path to the Android SDK, then answering all the " "prompts with ``y``:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:60 +#: ../../docs/development/compiling/compiling_for_android.rst:59 msgid "" "Complete setup by running the following command where ``android_sdk_path`` " "is the path to the Android SDK." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:66 +#: ../../docs/development/compiling/compiling_for_android.rst:65 msgid "" "To set the environment variable on Windows, press :kbd:`Windows + R`, type " "\"control system\", then click on **Advanced system settings** in the left " "pane, then click on **Environment variables** on the window that appears." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:70 +#: ../../docs/development/compiling/compiling_for_android.rst:69 msgid "" "To set the environment variable on Linux or macOS, use ``export " "ANDROID_SDK_ROOT=/path/to/android-sdk`` where ``/path/to/android-sdk`` " "points to the root of the SDK directories." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:75 +#: ../../docs/development/compiling/compiling_for_android.rst:74 msgid "Building the export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:77 +#: ../../docs/development/compiling/compiling_for_android.rst:76 msgid "" "Godot needs two export templates for Android: the optimized \"release\" " "template (``android_release.apk``) and the debug template (``android_debug." @@ -84683,34 +87561,34 @@ msgid "" "both ARMv7 and ARMv8 libraries." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:83 +#: ../../docs/development/compiling/compiling_for_android.rst:82 msgid "" "Compiling the standard export templates is done by calling SCons from the " "Godot root directory with the following arguments:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:86 +#: ../../docs/development/compiling/compiling_for_android.rst:85 msgid "" "Release template (used when exporting with **Debugging Enabled** unchecked)" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:99 +#: ../../docs/development/compiling/compiling_for_android.rst:98 msgid "The resulting APK will be located at ``bin/android_release.apk``." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:101 +#: ../../docs/development/compiling/compiling_for_android.rst:100 msgid "Debug template (used when exporting with **Debugging Enabled** checked)" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:114 +#: ../../docs/development/compiling/compiling_for_android.rst:113 msgid "The resulting APK will be located at ``bin/android_debug.apk``." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:117 +#: ../../docs/development/compiling/compiling_for_android.rst:116 msgid "Adding support for x86 devices" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:119 +#: ../../docs/development/compiling/compiling_for_android.rst:118 msgid "" "If you also want to include support for x86 and x86-64 devices, run the " "SCons command a third and fourth time with the ``android_arch=x86``, and " @@ -84718,7 +87596,7 @@ msgid "" "example, for the release template:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:137 +#: ../../docs/development/compiling/compiling_for_android.rst:136 msgid "" "This will create a fat binary that works on all platforms. The final APK " "size of exported projects will depend on the platforms you choose to support " @@ -84726,20 +87604,20 @@ msgid "" "APK." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:143 +#: ../../docs/development/compiling/compiling_for_android.rst:142 msgid "Cleaning the generated export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:145 +#: ../../docs/development/compiling/compiling_for_android.rst:144 msgid "" "You can use the following commands to remove the generated export templates:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:157 +#: ../../docs/development/compiling/compiling_for_android.rst:156 msgid "Using the export templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:159 +#: ../../docs/development/compiling/compiling_for_android.rst:158 msgid "" "Godot needs release and debug APKs that were compiled against the same " "version/commit as the editor. If you are using official binaries for the " @@ -84747,36 +87625,36 @@ msgid "" "own from the same version." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:164 +#: ../../docs/development/compiling/compiling_for_android.rst:163 msgid "" "When exporting your game, Godot opens the APK, changes a few things inside " "and adds your files." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:168 +#: ../../docs/development/compiling/compiling_for_android.rst:167 msgid "Installing the templates" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:170 +#: ../../docs/development/compiling/compiling_for_android.rst:169 msgid "" "The newly-compiled templates (``android_debug.apk`` and ``android_release." "apk``) must be copied to Godot's templates folder with their respective " "names. The templates folder can be located in:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:174 +#: ../../docs/development/compiling/compiling_for_android.rst:173 msgid "Windows: ``%APPDATA%\\Godot\\templates\\\\``" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:175 +#: ../../docs/development/compiling/compiling_for_android.rst:174 msgid "Linux: ``$HOME/.local/share/godot/templates//``" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:176 +#: ../../docs/development/compiling/compiling_for_android.rst:175 msgid "macOS: ``$HOME/Library/Application Support/Godot/templates//``" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:178 +#: ../../docs/development/compiling/compiling_for_android.rst:177 msgid "" "```` is of the form ``major.minor[.patch].status`` using values " "from ``version.py`` in your Godot source repository (e.g. ``3.0.5.stable`` " @@ -84784,24 +87662,24 @@ msgid "" "``version.txt`` file located next to your export templates." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:185 +#: ../../docs/development/compiling/compiling_for_android.rst:184 msgid "" "However, if you are writing your custom modules or custom C++ code, you " "might instead want to configure your APKs as custom export templates here:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:191 +#: ../../docs/development/compiling/compiling_for_android.rst:190 msgid "" "You don't even need to copy them, you can just reference the resulting file " "in the ``bin\\`` directory of your Godot source folder, so that the next " "time you build you will automatically have the custom templates referenced." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:200 +#: ../../docs/development/compiling/compiling_for_android.rst:199 msgid "Platform doesn't appear in SCons" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:202 +#: ../../docs/development/compiling/compiling_for_android.rst:201 msgid "" "Double-check that you've set the ``ANDROID_SDK_ROOT`` environment variable. " "This is required for the platform to appear in SCons' list of detected " @@ -84809,65 +87687,65 @@ msgid "" "` for more information." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:209 +#: ../../docs/development/compiling/compiling_for_android.rst:208 msgid "Application not installed" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:211 +#: ../../docs/development/compiling/compiling_for_android.rst:210 msgid "" "Android might complain the application is not correctly installed. If so:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:214 +#: ../../docs/development/compiling/compiling_for_android.rst:213 msgid "Check that the debug keystore is properly generated." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:215 +#: ../../docs/development/compiling/compiling_for_android.rst:214 msgid "Check that the jarsigner executable is from JDK 8." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:217 +#: ../../docs/development/compiling/compiling_for_android.rst:216 msgid "" "If it still fails, open a command line and run `logcat `_:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:223 +#: ../../docs/development/compiling/compiling_for_android.rst:222 msgid "" "Then check the output while the application is installed; the error message " "should be presented there. Seek assistance if you can't figure it out." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:228 +#: ../../docs/development/compiling/compiling_for_android.rst:227 msgid "Application exits immediately" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:230 +#: ../../docs/development/compiling/compiling_for_android.rst:229 msgid "" "If the application runs but exits immediately, this might be due to one of " "the following reasons:" msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:233 +#: ../../docs/development/compiling/compiling_for_android.rst:232 msgid "" "Make sure to use export templates that match your editor version; if you use " "a new Godot version, you *have* to update the templates too." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:235 +#: ../../docs/development/compiling/compiling_for_android.rst:234 msgid "" "``libgodot_android.so`` is not in ``libs//`` where " "```` is the device's architecture." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:237 +#: ../../docs/development/compiling/compiling_for_android.rst:236 msgid "" "The device's architecture does not match the exported one(s). Make sure your " "templates were built for that device's architecture, and that the export " "settings included support for that architecture." msgstr "" -#: ../../docs/development/compiling/compiling_for_android.rst:241 +#: ../../docs/development/compiling/compiling_for_android.rst:240 msgid "In any case, ``adb logcat`` should also show the cause of the error." msgstr "" @@ -86093,29 +88971,29 @@ msgid "" "following:" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:117 +#: ../../docs/development/compiling/optimizing_for_size.rst:116 msgid ":ref:`doc_overriding_build_options`." msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:120 +#: ../../docs/development/compiling/optimizing_for_size.rst:119 msgid "Optimizing for size instead of speed" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:122 +#: ../../docs/development/compiling/optimizing_for_size.rst:121 msgid "" "Godot 3.1 onwards allows compiling using size optimizations (instead of " "speed). To enable this, set the ``optimize`` flag to ``size``:" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:129 +#: ../../docs/development/compiling/optimizing_for_size.rst:128 msgid "Some platforms such as WebAssembly already use this mode by default." msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:132 +#: ../../docs/development/compiling/optimizing_for_size.rst:131 msgid "Compiling with link-time optimization" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:134 +#: ../../docs/development/compiling/optimizing_for_size.rst:133 msgid "" "Enabling link-time optimization produces more efficient binaries, both in " "terms of performance and file size. It works by eliminating duplicate " @@ -86123,17 +89001,17 @@ msgid "" "and MSVC compilers:" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:143 +#: ../../docs/development/compiling/optimizing_for_size.rst:142 msgid "" "Linking becomes much slower and more RAM consuming with this option, so it " "should be used only for release builds." msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:147 +#: ../../docs/development/compiling/optimizing_for_size.rst:146 msgid "Stripping binaries" msgstr "" -#: ../../docs/development/compiling/optimizing_for_size.rst:149 +#: ../../docs/development/compiling/optimizing_for_size.rst:148 msgid "" "If you build from source, remember to strip debug symbols from binaries:" msgstr "" @@ -87743,7 +90621,7 @@ msgid "`core/math `__" msgstr "" #: ../../docs/development/cpp/core_types.rst:214 -#: ../../docs/development/file_formats/tscn.rst:138 +#: ../../docs/development/file_formats/tscn.rst:140 msgid "NodePath" msgstr "" @@ -88022,10 +90900,6 @@ msgid "" "constructed as:" msgstr "" -#: ../../docs/development/cpp/object_class.rst:139 -msgid "For example:" -msgstr "" - #: ../../docs/development/cpp/object_class.rst:145 msgid "" "This is an integer property, named \"amount\", hint is a range, range goes " @@ -89687,8 +92561,8 @@ msgstr "" #: ../../docs/development/editor/introduction_to_editor_development.rst:24 msgid "" -"The Godot editor is drawn using Godot's renderer and :ref:`UI system `. It does *not* rely on a toolkit such as GTK or Qt. " +"The Godot editor is drawn using Godot's renderer and :ref:`UI system " +"`. It does *not* rely on a toolkit such as GTK or Qt. " "This is similar in spirit to software like Blender. While using toolkits " "makes it easier to achieve a \"native\" appearance, they are also quite " "heavy and their licensing is not compatible with Godot's." @@ -90183,20 +93057,22 @@ msgstr "" #: ../../docs/development/file_formats/tscn.rst:6 msgid "" "The TSCN (text scene) file format represents a single scene tree inside " -"Godot. TSCN files have the advantage of being mostly human-readable and easy " -"for version control systems to manage. During import, TSCN files are " -"compiled into binary ``.scn`` files stored inside the .import folder. This " -"reduces the data size and speeds up loading." +"Godot. Unlike binary SCN files, TSCN files have the advantage of being " +"mostly human-readable and easy for version control systems to manage." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:12 +#: ../../docs/development/file_formats/tscn.rst:10 msgid "" "The ESCN (exported scene) file format is identical to the TSCN file format, " "but is used to indicate to Godot that the file has been exported from " -"another program and should not be edited by the user from within Godot." +"another program and should not be edited by the user from within Godot. " +"Unlike SCN and TSCN files, during import, ESCN files are compiled to binary " +"SCN files stored inside the ``.import/`` folder. This reduces the data size " +"and speeds up loading, as binary formats are faster to load compared to text-" +"based formats." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:16 +#: ../../docs/development/file_formats/tscn.rst:18 msgid "" "For those looking for a complete description, the parsing is handled in the " "file `resource_format_text.cpp key=value key=value key=value ...]`` " "where resource_type is one of:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:53 +#: ../../docs/development/file_formats/tscn.rst:55 msgid "``ext_resource``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:54 +#: ../../docs/development/file_formats/tscn.rst:56 msgid "``sub_resource``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:55 +#: ../../docs/development/file_formats/tscn.rst:57 msgid "``node``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:56 +#: ../../docs/development/file_formats/tscn.rst:58 msgid "``connection``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:58 +#: ../../docs/development/file_formats/tscn.rst:60 msgid "" "Below every heading comes zero or more ``key = value`` pairs. The values can " "be complex datatypes such as Arrays, Transforms, Colors, and so on. For " "example, a spatial node looks like:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:69 +#: ../../docs/development/file_formats/tscn.rst:71 msgid "The scene tree" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:71 +#: ../../docs/development/file_formats/tscn.rst:73 msgid "" "The scene tree is made up of… nodes! The heading of each node consists of " "its name, parent and (most of the time) a type. For example ``[node type=" "\"Camera\" name=\"PlayerCamera\" parent=\"Player/Head\"]``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:75 +#: ../../docs/development/file_formats/tscn.rst:77 msgid "Other valid keywords include:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:77 +#: ../../docs/development/file_formats/tscn.rst:79 msgid "``instance``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:78 +#: ../../docs/development/file_formats/tscn.rst:80 msgid "``instance_placeholder``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:79 +#: ../../docs/development/file_formats/tscn.rst:81 msgid "``owner``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:80 +#: ../../docs/development/file_formats/tscn.rst:82 msgid "``index`` (if two nodes have the same name)" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:81 +#: ../../docs/development/file_formats/tscn.rst:83 msgid "``groups``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:83 +#: ../../docs/development/file_formats/tscn.rst:85 msgid "" "The first node in the file, which is also the scene root, must not have a " "``parent=Path/To/Node`` entry in its heading. All scene files should have " @@ -90331,14 +93207,14 @@ msgid "" "content):" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:99 +#: ../../docs/development/file_formats/tscn.rst:101 msgid "" "Similar to the internal resource, the document for each node is currently " "incomplete. Fortunately, it is easy to find out because you can simply save " "a file with that node in it. Some example nodes are:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:140 +#: ../../docs/development/file_formats/tscn.rst:142 msgid "" "A tree structure is not enough to represent the whole scene. Godot uses a " "``NodePath(Path/To/Node)`` structure to refer to another node or attribute " @@ -90347,67 +93223,67 @@ msgid "" "``NodePath()`` to point to node properties to animate." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:167 +#: ../../docs/development/file_formats/tscn.rst:169 msgid "" "The Skeleton node inherits the Spatial node, but also may have a list of " "bones described in key-value pairs in the format ``bones/Id/" "Attribute=Value``. The bone attributes consist of:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:172 +#: ../../docs/development/file_formats/tscn.rst:174 msgid "``parent``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:173 +#: ../../docs/development/file_formats/tscn.rst:175 msgid "``rest``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:174 +#: ../../docs/development/file_formats/tscn.rst:176 msgid "``pose``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:175 -#: ../../docs/development/file_formats/tscn.rst:395 +#: ../../docs/development/file_formats/tscn.rst:177 +#: ../../docs/development/file_formats/tscn.rst:397 msgid "``enabled``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:176 +#: ../../docs/development/file_formats/tscn.rst:178 msgid "``bound_children``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:178 +#: ../../docs/development/file_formats/tscn.rst:180 msgid "``name`` must be the first attribute of each bone." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:179 +#: ../../docs/development/file_formats/tscn.rst:181 msgid "" "``parent`` is the index of parent bone in the bone list, with parent index, " "the bone list is built to a bone tree." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:181 +#: ../../docs/development/file_formats/tscn.rst:183 msgid "``rest`` is the transform matrix of bone in its \"resting\" position." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:182 +#: ../../docs/development/file_formats/tscn.rst:184 msgid "``pose`` is the pose matrix; use ``rest`` as the basis." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:183 +#: ../../docs/development/file_formats/tscn.rst:185 msgid "" "``bound_children`` is a list of ``NodePath()`` which point to " "BoneAttachments belonging to this bone." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:186 +#: ../../docs/development/file_formats/tscn.rst:188 msgid "Here's an example of a skeleton node with two bones:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:207 +#: ../../docs/development/file_formats/tscn.rst:209 msgid "BoneAttachment" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:209 +#: ../../docs/development/file_formats/tscn.rst:211 msgid "" "BoneAttachment node is an intermediate node to describe some node being " "parented to a single bone in a Skeleton node. The BoneAttachment has a " @@ -90415,15 +93291,15 @@ msgid "" "parent has the BoneAttachment node in its ``bound_children`` list." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:214 +#: ../../docs/development/file_formats/tscn.rst:216 msgid "An example of one MeshInstance parented to a bone in Skeleton:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:239 +#: ../../docs/development/file_formats/tscn.rst:241 msgid "AnimationPlayer" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:241 +#: ../../docs/development/file_formats/tscn.rst:243 msgid "" "AnimationPlayer works as an animation library. It stores animations listed " "in the format ``anim/Name=SubResource(ResourceId)``; each line refers to an " @@ -90432,14 +93308,14 @@ msgid "" "Node)``." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:263 +#: ../../docs/development/file_formats/tscn.rst:265 msgid "" "Resources are components that make up the nodes. For example, a MeshInstance " "node will have an accompanying ArrayMesh resource. The ArrayMesh resource " "may be either internal or external to the TSCN file." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:267 +#: ../../docs/development/file_formats/tscn.rst:269 msgid "" "References to the resources are handled by ``id`` numbers in the resource's " "heading. External resources and internal resources are referred to with " @@ -90448,37 +93324,37 @@ msgid "" "have the same ID for both an internal and external resource." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:273 +#: ../../docs/development/file_formats/tscn.rst:275 msgid "" "For example, to refer to the resource ``[ext_resource id=3 type=\"PackedScene" "\" path=....]``, you would use ``ExtResource(3)``." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:279 +#: ../../docs/development/file_formats/tscn.rst:281 msgid "" "External resources are links to resources not contained within the TSCN file " "itself. An external resource consists of a path, a type and an ID." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:282 +#: ../../docs/development/file_formats/tscn.rst:284 msgid "" "Godot always generates absolute paths relative to the resource directory and " "thus prefixed with ``res://``, but paths relative to the TSCN file's " "location are also valid." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:286 +#: ../../docs/development/file_formats/tscn.rst:288 msgid "Some example external resources are:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:294 +#: ../../docs/development/file_formats/tscn.rst:296 msgid "" "Like TSCN files, a TRES file may contain single-line comments starting with " "a semicolon (``;``). However, comments will be discarded when saving the " "resource using the Godot editor." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:301 +#: ../../docs/development/file_formats/tscn.rst:303 msgid "" "A TSCN file can contain meshes, materials and other data. These are " "contained in the *internal resources* section of the file. The heading for " @@ -90487,7 +93363,7 @@ msgid "" "pairs under each heading. For example, a capsule collision shape looks like:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:315 +#: ../../docs/development/file_formats/tscn.rst:317 msgid "" "Some internal resources contain links to other internal resources (such as a " "mesh having a material). In this case, the referring resource must appear " @@ -90495,182 +93371,182 @@ msgid "" "internal resources section." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:320 +#: ../../docs/development/file_formats/tscn.rst:322 msgid "" "Unfortunately, documentation on the formats for these subresources isn't " "complete. Some examples can be found by inspecting saved resource files, but " "others can only be found by looking through Godot's source." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:327 +#: ../../docs/development/file_formats/tscn.rst:329 msgid "" "ArrayMesh consists of several surfaces, each in the format ``surface" "\\Index={}``. Each surface is a set of vertices and a material." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:330 +#: ../../docs/development/file_formats/tscn.rst:332 msgid "TSCN files support two surface formats:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:332 +#: ../../docs/development/file_formats/tscn.rst:334 msgid "For the old format, each surface has three essential keys:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:334 +#: ../../docs/development/file_formats/tscn.rst:336 msgid "``primitive``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:335 +#: ../../docs/development/file_formats/tscn.rst:337 msgid "``arrays``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:336 +#: ../../docs/development/file_formats/tscn.rst:338 msgid "``morph_arrays``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:338 +#: ../../docs/development/file_formats/tscn.rst:340 msgid "" "``primitive`` is an enumerate variable, ``primitive=4`` which is " "``PRIMITIVE_TRIANGLES`` is frequently used." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:341 +#: ../../docs/development/file_formats/tscn.rst:343 msgid "``arrays`` is a two-dimensional array, it contains:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:343 +#: ../../docs/development/file_formats/tscn.rst:345 msgid "Vertex positions array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:344 +#: ../../docs/development/file_formats/tscn.rst:346 msgid "Tangents array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:345 +#: ../../docs/development/file_formats/tscn.rst:347 msgid "Vertex colors array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:346 +#: ../../docs/development/file_formats/tscn.rst:348 msgid "UV array 1" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:347 +#: ../../docs/development/file_formats/tscn.rst:349 msgid "UV array 2" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:348 +#: ../../docs/development/file_formats/tscn.rst:350 msgid "Bone indexes array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:349 +#: ../../docs/development/file_formats/tscn.rst:351 msgid "Bone weights array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:350 +#: ../../docs/development/file_formats/tscn.rst:352 msgid "Vertex indexes array" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:352 +#: ../../docs/development/file_formats/tscn.rst:354 msgid "" "``morph_arrays`` is an array of morphs. Each morph is exactly an ``arrays`` " "without the vertex indexes array." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:355 +#: ../../docs/development/file_formats/tscn.rst:357 msgid "An example of ArrayMesh:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:381 +#: ../../docs/development/file_formats/tscn.rst:383 msgid "" "An animation resource consists of tracks. Besides, it has ``length``, " "``loop`` and ``step`` applied to all the tracks." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:384 +#: ../../docs/development/file_formats/tscn.rst:386 msgid "``length`` and ``step`` are both durations in seconds." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:386 +#: ../../docs/development/file_formats/tscn.rst:388 msgid "" "Each track is described by a list of key-value pairs in the format ``tracks/" "Id/Attribute``. Each track includes:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:389 +#: ../../docs/development/file_formats/tscn.rst:391 msgid "``type``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:390 +#: ../../docs/development/file_formats/tscn.rst:392 msgid "``path``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:391 +#: ../../docs/development/file_formats/tscn.rst:393 msgid "``interp``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:392 +#: ../../docs/development/file_formats/tscn.rst:394 msgid "``keys``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:393 +#: ../../docs/development/file_formats/tscn.rst:395 msgid "``loop_wrap``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:394 +#: ../../docs/development/file_formats/tscn.rst:396 msgid "``imported``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:397 +#: ../../docs/development/file_formats/tscn.rst:399 msgid "" "The ``type`` must be the first attribute of each track. The value of " "``type`` can be:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:400 +#: ../../docs/development/file_formats/tscn.rst:402 msgid "``transform``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:401 +#: ../../docs/development/file_formats/tscn.rst:403 msgid "``value``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:402 +#: ../../docs/development/file_formats/tscn.rst:404 msgid "``method``" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:404 +#: ../../docs/development/file_formats/tscn.rst:406 msgid "" "The ``path`` has the format ``NodePath(Path/To/Node:attribute)``. It's the " "path to the animated node or attribute, relative to the root node defined in " "the AnimationPlayer." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:408 +#: ../../docs/development/file_formats/tscn.rst:410 msgid "" "The ``interp`` is the method to interpolate frames from the keyframes. It is " "an enum variable with one of the following values:" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:411 +#: ../../docs/development/file_formats/tscn.rst:413 msgid "``0`` (constant)" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:412 +#: ../../docs/development/file_formats/tscn.rst:414 msgid "``1`` (linear)" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:413 +#: ../../docs/development/file_formats/tscn.rst:415 msgid "``2`` (cubic)" msgstr "" -#: ../../docs/development/file_formats/tscn.rst:415 +#: ../../docs/development/file_formats/tscn.rst:417 msgid "" "The ``keys`` correspond to the keyframes. It appears as a " "``PoolRealArray()``, but may have a different structure for tracks with " "different types." msgstr "" -#: ../../docs/development/file_formats/tscn.rst:418 +#: ../../docs/development/file_formats/tscn.rst:420 msgid "" "A Transform track uses every 12 real numbers in the ``keys`` to describe a " "keyframe. The first number is the timestamp. The second number is the " @@ -90962,10 +93838,10 @@ msgid "" "everyone can try to reproduce the issue and confirm it. Ideally, make a demo " "project that reproduces this issue out of the box, zip it and attach it to " "the issue (you can do this by drag and drop). Even if you think that the " -"issue is trivial to reproduce, adding a minimal project that lets reproduce " -"it is a big added value. You have to keep in mind that there are thousands " -"of issues in the tracker, and developers can only dedicate little time to " -"each issue." +"issue is trivial to reproduce, adding a minimal project that lets everyone " +"reproduce it is a big added value. You have to keep in mind that there are " +"thousands of issues in the tracker, and developers can only dedicate little " +"time to each issue." msgstr "" #: ../../docs/community/contributing/ways_to_contribute.rst:187 @@ -91313,7 +94189,7 @@ msgid "" msgstr "" #: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:195 -msgid "#7: Solutions must be local" +msgid "#7: Prefer local solutions" msgstr "" #: ../../docs/community/contributing/best_practices_for_engine_contributors.rst:197 @@ -92435,9 +95311,9 @@ msgstr "" #: ../../docs/community/contributing/code_style_guidelines.rst:54 msgid "" "First of all, you will need to install clang-format. As of now, you need to " -"use **clang-format 8.x** to be compatible with Godot's format. Later " -"versions might be suitable, but previous versions had bugs that will cause " -"formatting changes to the current code base." +"use **clang-format 13** to be compatible with Godot's format. Later versions " +"might be suitable, but previous versions may not support all used options, " +"or format some things differently, leading to style issues in pull requests." msgstr "" #: ../../docs/community/contributing/code_style_guidelines.rst:60